我在Amazon EC2上使用mdadm,lvm2和XFS的组合.
到目前为止,我已经成功运行了从许多EBS卷构建的RAID 5卷. EBS卷已连接并与mdadm一起使用以创建RAID 5.然后,我使用LVM将生成的RAID显示为单个物理卷和单个逻辑卷.
在过去,我已经能够通过添加新的EBS卷,附加它,然后运行以下过程来扩展文件系统.
mdadm --add /dev/md0 /dev/xvdi # grow the raid... (could take a while for a large disk!) mdadm --grow /dev/md0 --raid-devices=4 # grow the LVM physical volume pvresize /dev/md0 # grow the LVM logical volume ... fairly certain # -l100%PVS will make the extents use as much space # as possible on physical disks (and hopefully won't overwrite anything) lvresize -l100%PVS /dev/data_vg/data_lv # resize the file system,too! xfs_growfs /dev/data_vg/data_lv # yay! df -h
表面上,我最近尝试这样做的工作很好.运行df -ih / fh表明我有一个已安装的文件系统,可以使用额外的TB,正如预期的那样.此外,使用的inode总数仅为1%.此外,pvdisplay和lvdisplay还显示正确的卷大小.
自从增长以来,我甚至能够为该卷添加一些数据(大约150GB).但是,今天我尝试创建一个目录并获取
mkdir: no space left on device
如果我据称有大量的inode可用,为什么我会遇到这个问题?
我已卸载磁盘并运行xfs_check,但这不会报告任何问题.
谢谢!
解决方法
我能够通过以下方式解决问题:
umount [the mountpoint] mount /dev/data_vg/data_lv -o inode64 [the mountpoint]
显然,默认(32位inode?)xfs将存储磁盘的第一个1TB部分中的所有inode.这意味着如果第一个1TB已满,那么即使看起来你有足够的空间/ inode可用,你也不会在磁盘错误上遇到空间.通过添加inode64选项,如果我理解正确,节点可以存储在磁盘上的任何位置.
资料来源:the XFS FAQ.