Disks, partitions, file systems
主要理一下 linux 系统下磁盘、分区、文件系统三者的概念,同时借用了一些大模型的解答。
概念
首先给出 4 个主要的概念:
- 磁盘:真正的物理设备的抽象,代表现实中的磁盘设备,在 linux 系统下的显示可能是
/dev/sda
。 - 分区:即对磁盘进行划分,分区只是代表这个物理存储设备的一部分,在 linux 系统下的显示可能是
/dev/sda1
- 文件系统:文件系统是存储和组织文件数据的结构和方法,决定了数据在分区上的存储方式。创建文件系统的过程称为格式化,同时非常重要的一点是文件系统是依赖于分区而存在的。
- 挂载:挂载表示了对文件系统的访问,将文件系统挂载到某个目标,表示可以从某个目录访问某个文件系统。最常见的将某个磁盘分区挂在到
/
根目录。
所以解决这类问题应该也能够按照一定的顺序解决。比如先解决磁盘是否被机器正确识别,然后是查看分区是不是存在,然后是看文件系统有没有损坏、然后是看文件系统有没有正确的被挂载。
还有一个问题是在一个操作系统运行的时候存在多个文件系统的问题,这是允许的。比如 /boot
目录可能就是一个不同于 ext4 的文件系统,虽然其挂在在根目录下,但是其是一个不同的文件系统类型。同时在开始的时候还要注意挂载的顺序,/
的挂载要早于其他挂载到根目录下的文件系统,防止其被根文件系统覆盖。
LVM 逻辑卷管理器概念
引入了更细化更抽象的存储管理方式。定义了三个概念:
- 物理卷:代表物理存储设备和分区。
- 卷组:一个或者多个物理卷组成的存储池。注意这多个物理卷可以是来自不同硬件磁盘的不同分区,这是相当灵活的。
- 逻辑卷:从卷组中划分出来的逻辑存储单元,相当于一个可变的分区。
创建管理三者的命令是 pvcreate vgcreate lvcreate,有了这样的概念之后文件系统就能格式化于逻辑卷之上。
镜像挂载与 loop 设备
镜像,保存了完整的文件系统信息,与镜像相关的操作有两种,其一是挂载,其二是直接将镜像写到某个分区。
挂载
前面提到,文件系统是依赖分区存在的,现在的文件系统的镜像还不在任何磁盘的分区之内,显然是不能直接挂载的。但是为了这一个可能不太大的镜像或者暂时使用的镜像就要对磁盘频繁的进行分区操作是十分麻烦的。loop 环回设备就是用来解决这个问题的,loop 是在当前的文件系统中分配出一块存储区域,使其表现的像一个磁盘分区一样,这样镜像可以通过写到这个虚拟的“分区”,然后进行挂载,linux 的 mount 命令提供 -o loop
来进行这种挂载镜像的方便操作。
镜像写到某个分区
使用 dd 一个强大的命令。