为什么ext4文件系统只有在未挂载时才能收缩?

为什么ext4文件系统只有在未挂载时才能收缩?

我正在玩一点 LVM。我注意到我可以添加一个新的 HDD,将其包含在卷组中,并向所有现有卷添加一些空间,而无需卸载其文件系统或重新启动整个计算机。但是,当我尝试做相反的事情,即减少卷空间并从系统中删除驱动器时,我无法在线执行此操作。这可以在卸载文件系统或从 live cd/dvd/pendrive(根文件系统)中实现。

那么问题来了,为什么文件系统不能在线收缩呢?

答案1

想必您已经发现了这个:https://serverfault.com/questions/528075/is-it-possible-to-on-line-shrink-a-ext4-volume-with-lvm所以简短的回答是“因为编写 ext4 的人不支持这一点”。

稍微长一点的答案是,这很难,特别是在保持与 ext2 的任何向后兼容性的情况下。查找超出所需新大小末尾的文件系统中正在使用的所有部分,然后将它们全部移回该新大小内已经足够困难了。现在,当文件系统日常琐事的所有现有方面仍在进行时,它就变成了超级容易破坏你的数据。 ext4 的人们基本上已经说过,如果您需要缩小……请安全地进行。

这个很长的答案深入研究了文件系统的内部操作,可能比您真正想知道的还要多。但如果您这样做:这可能是一个很好的(免费)起点:http://www.nobius.org/~dbg/practical-file-system-design.pdf

相关内容