有问题的系统安装了Debian Lenny,运行2.6.27.38内核。 系统有16Gb内存,8X1Tb硬盘在3Ware RAID卡后面运行。
存储通过LVM进行pipe理,并专门由ext3文件系统组成。
简洁版本:
我们对LVM和KVM非常熟悉,所以我们认为这将是一个无痛的操作:
客人启动成功,运行“df”显示额外的空间,但不久后系统决定重新挂载文件系统只读,没有任何明确的错误指示。
由于偏执,我们closures了客户,并再次运行文件系统检查,考虑到文件系统的新大小,我们预计这需要一段时间,但现在已经运行了24小时以上,没有迹象表明需要多长时间。
使用strace我可以看到fsck是“做东西”,类似地运行“vmstat 1”我可以看到有很多块input/输出操作发生。
所以现在我的问题是三重的:
有人遇到类似的情况吗? 一般来说,我们在过去几年没有做过这样的调整。
最可能的原因是什么? (3Ware卡显示后备存储的RAIDarrays为A-OK,主机系统未重新启动,dmesg中没有任何重要/exception情况)
如果忽略btrfs + ext3(还不够成熟,不能信任),我们是否应该在未来将更大的分区放在不同的文件系统中,以避免这种损坏(无论原因)还是减lessfsck时间? XFS似乎是明显的候选人?
看来大于1Tb的卷在virtio上有问题:
https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/574665
http://kerneltrap.org/mailarchive/linux-kvm/2010/4/23/6261185/thread
http://sourceforge.net/tracker/index.php?func=detail&aid=2933400&group_id=180599&atid=893831
在这种情况下,它可能是virtio和1TB的问题。
但是对于我来说,在虚拟机之外(包括closures本机)和虚拟机内交替访问设备时,我遇到了类似的问题。 如果你直接访问虚拟机中的块设备(例如在kvm config中),这意味着没有caching/缓冲区和外部缓冲区,你可以得到以下问题:
在vm之外调整设备大小,caching/缓冲区被填充到kvm主机上。
启动虚拟机,识别(其他!)问题和关机。
fsck设备。
如果一切都很糟糕,你从caching中读取date,但是在先前运行的虚拟机中,在没有缓冲区/caching的情况下访问设备的内容发生了改变!
我也做了很多的ext3调整(自2.6.18),我一直这样做在线! AFAIK这使用内核函数来resize,而离线resize使用用户级代码。
同时检查您的KVMcaching设置; KVM不能执行caching,读取caching,回写和写入caching,这可能会让你感到意外。