在使用Informix数据库的过程中,随着业务数据不断增长,存储空间不足是迟早要面对的问题。本文详细介绍在CentOS系统下扩展Informix存储的几种常用方法,帮助DBA从容应对存储扩容需求。
一、扩展前的准备工作
1.1 检查当前存储使用情况
在动手之前,先确认当前存储的使用状态:
执行onstat -d后,重点关注total列和free列,了解当前每个chunk的使用情况。
1.2 确认扩容方案
Informix存储扩展主要有三种路径:
- 扩展现有chunk:给已有chunk追加物理空间(需要底层存储支持)
- 新增chunk:在现有或新磁盘上创建新chunk
- 添加dbspace:在新chunk上创建dbspace,存放新的数据
大多数场景下,新增chunk并加入现有dbspace是最灵活、安全的方案。
二、方法一:新增Chunk扩展存储
2.1 准备物理存储
首先在CentOS上准备一块新磁盘或分区:
执行mkfs.ext4格式化(可选,若使用raw设备可跳过),然后创建目录并挂载:
执行mkdir -p /opt/IBM/informix/chunk02和mount /dev/sdb1 /opt/IBM/informix/chunk02。
2.2 配置chunk权限
执行chown informix:informix /opt/IBM/informix/chunk02和chmod 660 /opt/IBM/informix/chunk02。
2.3 在Informix中注册新Chunk
以informix用户身份登录,创建链接文件后手动注册chunk到rootdbs:
执行su – informix,然后touch /opt/IBM/informix/chunk02/chunk1,chown informix:informix /opt/IBM/informix/chunk02/chunk1,最后onspaces -a rootdbs -p /opt/IBM/informix/chunk02/chunk1 -o 0 -s 2000000。
注意:-s参数单位为KB,2GB = 2097152 KB。
2.4 验证chunk添加成功
执行onstat -d,确认新chunk已出现在列表中,且状态为online。
三、方法二:创建新Dbspace
如果希望将新存储隔离管理,可以创建独立的dbspace:
执行onspaces -c -d datadbs -p /opt/IBM/informix/chunk02/datachunk1 -o 0 -s 5000000 -t。
参数说明:-c create,-d dbspace名称,-p chunk路径,-o offset(KB),-s chunk大小(KB),-t 启用镜像(可选)。
3.1 将新建dbspace设为默认存储位置
执行export DBSPACETEMP=datadbs,或在onconfig中设置DBSPACETEMP datadbs,tempdbs。
四、方法三:扩展LVM逻辑卷(在线扩容)
如果Informix数据目录位于LVM之上,可以实现在线扩容,无需停机:
依次执行pvcreate /dev/sdc1,vgextend centos /dev/sdc1,lvextend -L +50G /dev/mapper/centos-opt。
对于XFS文件系统(CentOS 7+默认),执行xfs_growfs /opt/IBM/informix;对于ext4文件系统,执行resize2fs /dev/mapper/centos-opt。
LVM方案的优势是不需要修改Informix配置,存储对数据库透明。
五、存储扩展后的优化建议
5.1 合理分布数据
建议将不同用途的数据分散到不同dbspace:热数据放SSD/高速存储dbspace以提升IOPS,温数据放普通HDD以降低成本,索引数据独立存放减少竞争,临时数据放tempdbspace避免影响正式数据。
5.2 定期监控存储健康
将监控加入crontab,每周自动检查chunk使用率,确保存储使用率不超过80%。
5.3 设置告警阈值
建议在存储使用率超过80%时触发告警,超过90%前规划下一次扩容。
六、常见问题排查
Q1: 新增chunk后数据没有自动分布过去怎么办?
默认新数据会写入有空闲空间的chunk。如需重新分布旧数据,需要导出后重新导入,或使用ALTER FRAGMENT重新分配分区。
Q2: 提示chunk is full怎么办?
说明该chunk已用尽。解决方案:追加该chunk空间(底层需支持),或新增chunk并将其添加到同一dbspace。
Q3: 扩容后数据库变慢了?
如果新chunk在另一块物理磁盘上,可能造成IO分布不均。建议使用onmode -O重新平衡在线物理日志,或检查新存储的IO性能是否满足需求。
总结
CentOS下Informix存储扩展的核心步骤:先评估当前使用情况,选择合适的扩容方式(新增chunk/新建dbspace/LVM),执行操作后验证结果。推荐优先使用LVM方案实现灵活扩容,再根据业务需求将不同类型数据合理分布到不同存储介质上。