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