答案1
基本文件系统结构是相对于文件系统的开头进行寻址的,该开头恰好与块设备的开头相同。由于您的文件系统隐式地期望在块设备的第一个块上启动,因此它不允许偏移在块设备的第一个块和文件系统的第一个块之间的任何时间。
您的文件系统的末端可以相对于起点进行更改(增长和收缩),但是没有简单的方法可以扩展到第一个块之外(或“向后”收缩文件系统),因为您会引入一个抵消块设备和其上文件系统的启动之间。理论上这当然是可能的,但是当前的工具集和 Linux 内核还没有为这种类型的操作做好准备。
在对此答案的评论中,您表示您只感兴趣将文件系统重新定位到仅覆盖当前分区的后半部分的新分区上。
文件系统是否取决于它使用的块设备?不可以。使用不同的工具重新定位文件系统是dd
可能的。
该过程如下所示:
- 做个备份,没什么坏处
- 将现有文件系统缩小(或低于)新分区的大小
- 计算文件系统在磁盘上(而不是分区上)的当前起始位置
- 重新分区你的磁盘
- 将磁盘上的数据量添加到正确的位置(因为您知道旧的起点、新的起点和长度)
- 扩展您的文件系统(如果在步骤 2 中您将其变小)
我想强调的是,如果您缩小的文件系统(第 2 点)及其所需的新位置(第 4 点中的新分区)在磁盘上重叠,则此过程将不起作用。
考虑使用LVM
来缓解此类问题和许多其他问题。使用LVM
,您可以简单地:
- 缩小你的文件系统
- 缩小你的逻辑卷(并让 LVM 处理所有这些混乱)