温馨提示×

Linux Informix怎么扩容

小樊
37
2026-07-17 00:18:39
栏目: 智能运维

在 Linux 上给 IBM Informix 扩容,通常分为 数据库空间扩容(dbspace)操作系统级磁盘扩容 两大类。下面按最常见场景给你一个完整、可操作的说明。


一、确认当前 Informix 空间使用情况

1️⃣ 查看 dbspace 使用情况

onstat -d

关注字段:

  • Dbspace name
  • Total(pages)
  • Free(pages)

也可以登录 dbaccess

SELECT name, owner, fsize, free
FROM sysdbspaces;

二、Informix 数据库扩容(最常见)

扩容方式取决于 dbspace 类型


方式一:向已有 dbspace 追加 chunk(最常用 ✅)

适用场景

  • 磁盘还有空间
  • 已有 dbspace 快满了(如 rootdbsdatadbs

1️⃣ 准备 chunk 文件或裸设备

✅ 使用文件方式(推荐)

mkdir -p /informix/chunks
touch /informix/chunks/datadbs02
chmod 660 /informix/chunks/datadbs02
chown informix:informix /informix/chunks/datadbs02

2️⃣ 使用 onspaces 扩容

onspaces -a datadbs -p /informix/chunks/datadbs02 -o 0 -s 2048000

参数说明:

  • -a datadbs:追加到 dbspace
  • -p:chunk 路径
  • -o 0:偏移量(文件一般为 0)
  • -s:大小(单位:KB

✅ 示例:

  • 2048000 KB = 2GB

3️⃣ 验证

onstat -d

方式二:新建 dbspace(推荐用于业务隔离)

1️⃣ 创建 chunk 文件

touch /informix/chunks/newdbs01
chmod 660 /informix/chunks/newdbs01
chown informix:informix /informix/chunks/newdbs01

2️⃣ 创建 dbspace

onspaces -c -d newdbs -p /informix/chunks/newdbs01 -o 0 -s 5120000

3️⃣ 将表或索引放到新 dbspace

CREATE TABLE t1 (...) IN newdbs;
-- 或
ALTER TABLE t1 PUT IN newdbs;

方式三:临时表空间扩容(tempdbspace)

onspaces -a tempdbs -p /informix/chunks/temp02 -o 0 -s 1024000

三、操作系统层磁盘扩容(LVM / 云盘)

场景

  • 磁盘已满
  • chunk 文件放在一个分区上

1️⃣ 扩容磁盘(云盘 / VM)

以 LVM 为例:

lsblk
lvextend -L +20G /dev/mapper/vg01-lv_informix
resize2fs /dev/mapper/vg01-lv_informix

2️⃣ 确认空间

df -h

✅ Informix 不需要重启


四、裸设备(Raw Device)扩容(较少见)

⚠️ 风险较高,需停库

  1. 扩容 LUN
  2. 停库
onmode -ky
  1. 重新绑定裸设备
  2. 启库
oninit -v

五、自动扩容(Informix 11+)

开启自动 chunk 扩展

UPDATE sysmaster:sysdbspaces
SET flags = flags || 0x8000
WHERE name = 'datadbs';

⚠️ 不建议生产环境默认开启


六、推荐最佳实践 ✅

优先加 chunk,而不是建大 chunk
✅ dbspace 不要超过 80%
✅ 数据、索引、临时表 分离 dbspace
✅ chunk 文件权限 660


七、常见错误排查

❌ 空间不足

No free disk space

➡ 检查 df -h

❌ chunk 权限错误

Permission denied

chown informix:informix chunk_file
chmod 660 chunk_file

八、我可以继续帮你

你可以直接贴出:

onstat -d
df -h

我可以根据你的真实环境 精确给你扩容命令

0