我正在运行一个带有maildir存储的邮件服务器。这意味着创建了相当多的文件,而我的inode已经用完了。AFAIK没有神奇的命令来增加ext#文件系统上的inode数量(或者我错了吗?)所以我必须备份和恢复整个文件系统。但我该怎么做呢?我尝试创建另一个分区并执行:
dump -f - -0 /vservers/mail | restore rf - -u -v虽然这看起来很有效,但比我愿意等待的时间要长得多(在我停止进程之前,它成功地在2小时内创建了500个空目录;strace显示,还原正在调用大量无用的lots )。是否有其他方法复制完整的文件系统(包括套接字、设备文件、所有者、权限、acls等)?附加信息:源fs是ext3,目标是ext4,文件系统在lvm上,我想移动的fs是vserver的根fs。
发布于 2011-09-12 01:37:55
我对复制文件系统的替代建议如下。请记住,我遇到的最接近这个问题的是使用find+xargs+rm来清除一个已经疯狂使用无用垃圾的maildir,所以您应该在大约一个小时后看到这会给您带来什么结果。
cd root_of_source ; find . -print0 | tar -c --null -T - -f - | tar -sxf - -C root_of_target这个构造的功能是
无论您使用哪种方法:
发布于 2011-09-12 01:41:59
您是否考虑过尝试使用unionfs将现有的文件系统与新的文件系统结合,而写入新的文件系统呢?
我自己从未使用过UnionFS,但我所听到的听起来似乎可以让您重新开始将数据写入磁盘,而不必通过统一现有的文件系统只读来重新创建文件系统,并将一个新的文件系统作为可写文件系统。可能会出现性能问题或其他问题,使其成为不可行的,但是如果您只是在寻找想法,并且在转储运行时有一些时间,您可能可以将其研究成一组可行的命令。
发布于 2011-09-12 18:18:40
除了dump | restore之外,您还可以使用tar | tar或仅使用cp -ax或rsync将所有文件复制到新fs。根据我的经验,dump | restore是最快的方法。
作为参考,在一台相当老且速度较慢的机器上,使用dump | restore复制fs需要35分钟,而fs有420,774个节点,使用7.8GB的空间。
相比之下,使用tar | tar需要61分钟,使用cp -ax需要64分钟。
几个月前,我发布了一个补丁,以使dump更快,但它是在0.4b 44发布之后,还没有另一个版本。您可以在邮寄名单上找到修补程序。使用此修补程序自己构建0.4b44可能会产生显著的差异。对我来说,它把时间从35分钟缩短到了25分钟。对邮件列表的反馈是有帮助的。
https://serverfault.com/questions/310293
复制相似问题