我正在使用 beaglebone black 系统进行远程工作。
我在 youtube 上找到了有关扩展根文件系统的信息。
https://www.youtube.com/watch?v=FK6wfV_19ac(从 12:50 开始观看)
视频作者通过删除包含的文件系统/
,然后创建新分区来演示如何调整文件系统的大小。
(除非我完全误解了?)
这看起来完全是疯了。我不明白这是怎么回事,而且没有破坏文件系统?这似乎完全是侥幸,在这个过程中没有数据被损坏,所有的 inode 仍然有效。
这让我怀疑我是否完全误解了某件事——所以我现在担心这实际上是一件有效的事情。
我想听听大家对此的第二种看法 - 视频中作者所指导的扩展文件系统的方法是否正确?如果正确,为什么删除包含文件系统根目录所有数据的分区不会破坏这些数据?
答案1
分区和文件系统并不相同。文件系统从未被破坏过。
分区只是由分区表中的某个条目标识的较大设备的一部分。fdisk
操纵此表。在 DOS (MBR) 分区方案中,分区表位于(严格来说:靠近)磁盘的开头。在 GPT 中,它靠近开头,(另一个,备份)靠近结尾。它不属于任何分区,至少不应该属于。在某种意义上,您可以将其视为“目录”。
文件系统是一种通常存在于分区内的结构(但它也可能存在于常规文件中或占据整个设备)。即使分区条目不再存在,如果你知道文件系统的偏移量,你就可以挂载它。
视频的作者销毁了分区条目并创建了新条目。这只会影响分区表,而不会影响(旧或新)分区内的实际数据,即文件系统。相关分区被重新创建得更大,但其起始扇区仍然存在。这是文件系统的起始位置。
重启后,文件系统挂载成功,因为内核在新分区的开头查找其头,这与实际文件系统头所在的旧分区的开头相同。文件系统知道其大小,因此分区现在的大小不同这一事实无关紧要,只要文件系统“适合”(因此扩大总是可以的;请参阅最后关于缩小的说明)。
最后resize2fs
用于实际调整文件系统的大小。未指定新大小,因此该工具让文件系统占用整个分区。这是对文件系统本身进行操作的唯一时刻(除了常规安装和访问)。即使文件系统已安装,该工具也支持向右扩大(即不移动文件系统的开头)。这就是发生的事情。
是的,这是正确的方法。
请注意,如果要缩小分区,应先缩小文件系统,然后再调整分区表。规则是整个文件系统在任何时候都应适合分区。缩小已挂载的文件系统可能与扩展它一样容易(或根本不可能),也可能不那么容易(或根本不可能)。