首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ext2转储/恢复问题

ext2转储/恢复问题
EN

Server Fault用户
提问于 2011-09-11 21:27:42
回答 3查看 457关注 0票数 1

我正在运行一个带有maildir存储的邮件服务器。这意味着创建了相当多的文件,而我的inode已经用完了。AFAIK没有神奇的命令来增加ext#文件系统上的inode数量(或者我错了吗?)所以我必须备份和恢复整个文件系统。但我该怎么做呢?我尝试创建另一个分区并执行:

代码语言:javascript
复制
dump -f - -0 /vservers/mail | restore rf - -u -v

虽然这看起来很有效,但比我愿意等待的时间要长得多(在我停止进程之前,它成功地在2小时内创建了500个空目录;strace显示,还原正在调用大量无用的lots )。是否有其他方法复制完整的文件系统(包括套接字、设备文件、所有者、权限、acls等)?附加信息:源fs是ext3,目标是ext4,文件系统在lvm上,我想移动的fs是vserver的根fs。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2011-09-12 01:37:55

我对复制文件系统的替代建议如下。请记住,我遇到的最接近这个问题的是使用find+xargs+rm来清除一个已经疯狂使用无用垃圾的maildir,所以您应该在大约一个小时后看到这会给您带来什么结果。

代码语言:javascript
复制
cd root_of_source ; find . -print0 | tar -c --null -T - -f - | tar -sxf - -C root_of_target

这个构造的功能是

  • 按原始顺序检索文件列表
    • 所以我用find代替tar的默认值..。我不知道焦油的违约是坏的,我只知道发现是好的,

  • 将该列表传递给tar null (以便正确处理任何特殊字符)。
  • 接受tar格式的输出,并在目标目录中取消结果(而不重新排序输入(-s))。

无论您使用哪种方法:

  • 如果这些数据是在相同的物理磁盘上开始和结束的,那么与正常操作相比,您的性能自然会下降很多(在从源读取到写入目的地之间会有大量的搜索)。
  • 如果您有一些可用的CPU,那么稍微压缩一下不会有什么影响,只需要在tar命令之间添加一个'gzip -c -1‘级,在第二个tar中添加一个-z即可。
票数 1
EN

Server Fault用户

发布于 2011-09-12 01:41:59

您是否考虑过尝试使用unionfs将现有的文件系统与新的文件系统结合,而写入新的文件系统呢?

我自己从未使用过UnionFS,但我所听到的听起来似乎可以让您重新开始将数据写入磁盘,而不必通过统一现有的文件系统只读来重新创建文件系统,并将一个新的文件系统作为可写文件系统。可能会出现性能问题或其他问题,使其成为不可行的,但是如果您只是在寻找想法,并且在转储运行时有一些时间,您可能可以将其研究成一组可行的命令。

票数 0
EN

Server Fault用户

发布于 2011-09-12 18:18:40

除了dump | restore之外,您还可以使用tar | tar或仅使用cp -axrsync将所有文件复制到新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分钟。对邮件列表的反馈是有帮助的。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/310293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档