Ceph RBD卷扩容后客户端未显示新容量的问题求助
我完全懂你现在遇到的状况——已经通过Ceph Web面板把bdpooltest池里的20GB RBD卷扩容到30GB了,不管是面板还是Ceph节点上的rbd ls --pool bdpooltest -l都能看到新容量,但客户端机器用df -h查看挂载的卷时,还是显示原来的20GB。这是因为Ceph端的卷扩容只是完成了存储层面的调整,客户端这边还需要两步操作才能让系统和文件系统识别到新容量,我给你一步步拆解:
第一步:让客户端操作系统感知到RBD设备的新大小
客户端的操作系统还没同步到Ceph卷的扩容变化,需要手动刷新设备信息:
先确认客户端上已映射的RBD设备路径,执行以下命令查看:
rbd showmapped输出会包含
pool、image、device等字段,找到对应bdpooltest池里你的卷的设备路径(一般是/dev/rbd/bdpooltest/你的卷名)。刷新设备的容量信息,用
blockdev命令让系统重新读取设备分区表和大小:blockdev --rereadpt /dev/rbd/bdpooltest/你的卷名要是不确定设备状态,也可以先取消映射再重新映射RBD卷,效果是一样的:
# 取消当前映射 rbd unmap /dev/rbd/bdpooltest/你的卷名 # 重新映射卷 rbd map bdpooltest/你的卷名验证设备大小是否更新,执行以下命令查看设备总字节数(30GB对应的字节数约为32212254720):
blockdev --getsize64 /dev/rbd/bdpooltest/你的卷名输出符合预期的话,说明设备层面已经成功扩容。
第二步:扩展文件系统到新的设备容量
现在块设备已经变大,但你挂载的文件系统还是基于原来的20GB创建的,需要把文件系统扩展到整个设备的大小,这一步要根据你使用的文件系统类型来操作:
如果你用的是ext4/ext3/ext2文件系统
直接使用resize2fs命令,可以指定挂载点或者设备路径:
# 示例:挂载点为/mnt/ceph-volume resize2fs /mnt/ceph-volume # 或者直接指定设备 resize2fs /dev/rbd/bdpooltest/你的卷名
执行完成后,再用df -h查看挂载点,就能看到30GB的容量了。
如果你用的是XFS文件系统
XFS需要使用xfs_growfs命令,注意必须指定挂载点,不能直接指定设备:
xfs_growfs /mnt/ceph-volume
执行后同样用df -h验证即可。
额外提醒
- 操作前建议备份重要数据,虽然这些操作都是常规且安全的,但谨慎起见总是好的;
- 如果客户端是通过
/etc/fstab自动挂载RBD卷的,重新映射后可以用mount -a确认挂载是否正常; - 不确定文件系统类型的话,可以用
df -T命令查看,输出里的Type字段就是文件系统类型。
备注:内容来源于stack exchange,提问作者erikson

