在 Linux 上的 IBM Informix 数据库扩容,通常指 数据库空间(dbspace)扩容,而不是操作系统层面的磁盘扩容。下面按最常见场景给你一个完整、可操作的说明。
Informix 的“空间”主要由以下对象组成:
| 对象 | 说明 |
|---|---|
| dbspace | 数据库存储空间(逻辑概念) |
| chunk | 实际的数据文件或裸设备(物理存储) |
| page | Informix 最小存储单位(通常 2K/4K/8K) |
✅ 扩容本质:
给 dbspace 增加新的 chunk(或扩大现有 chunk)
onstat -d
重点关注:
Dbspacefree(剩余空间)chunksonstat -V
不同版本命令一致,但裸设备支持略有差异。
mkdir -p /informix/chunks
touch /informix/chunks/dbs01_02
chmod 660 /informix/chunks/dbs01_02
chown informix:informix /informix/chunks/dbs01_02
dd if=/dev/zero of=/informix/chunks/dbs01_02 bs=1M count=1024
也可以不 dd,Informix 会自动初始化
onspaces -a dbs01 \
-p /informix/chunks/dbs01_02 \
-o 0 \
-s 1048576
参数说明:
| 参数 | 含义 |
|---|---|
-a dbs01 |
扩容的 dbspace |
-p |
chunk 路径 |
-o 0 |
偏移量 |
-s |
大小(KB) |
✅ 1GB = 1048576 KB
onstat -d
看到新 chunk 和 free 增加即成功。
如果使用的是裸设备:
onspaces -a dbs01 \
-p /dev/sdb1 \
-o 0 \
-s 2097152
⚠️ 注意:
onspaces -a tempdbs01 \
-p /informix/chunks/temp01 \
-o 0 \
-s 1048576
onspaces -a sbspace01 \
-p /informix/chunks/sb01 \
-o 0 \
-s 1048576
❌ 不支持直接 resize chunk
✅ 正确方式:
✅ 不需要重启数据库 ✅ 在线扩容(Online)
Permission denied
✅ 解决:
chown informix:informix chunk_file
chmod 660 chunk_file
可检查:
SELECT * FROM sysmaster:sysdbspaces;
✅ 使用 多个小 chunk 而不是一个超大 chunk
✅ chunk 文件统一目录管理
✅ 提前监控:
onstat -d
df -h
你可以直接贴出:
onstat -d 输出我可以 帮你精确计算 chunk 大小,并给出完整命令。