![为什么ext4文件系统只有在未挂载时才能收缩?](https://linux22.com/image/82585/%E4%B8%BA%E4%BB%80%E4%B9%88ext4%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%8F%AA%E6%9C%89%E5%9C%A8%E6%9C%AA%E6%8C%82%E8%BD%BD%E6%97%B6%E6%89%8D%E8%83%BD%E6%94%B6%E7%BC%A9%EF%BC%9F.png)
我正在玩一点 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