linux系统的磁盘分区有哪几种?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统的磁盘分区有哪几种?相关的知识,希望对你有一定的参考价值。

参考技术A

1、/分区。用于存储系统文件。


2、swap,即交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。在Windows下,虚拟内存是一个文件:pagefile.sys;而Linux下,虚拟内存需要使用独立分区,这样做的目的据说是为了提高虚拟内存的性能。

3、/home:是用户文件夹所在的地方。如果独立划分/home,即使Ubuntu不能启动,也可以用Live CD启动来取得自己的文件资料。


4、/boot:包含了操作系统的内核和在启动系统过程中所要用到的文件。

很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。

其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘分的支离破碎的,不方便管理。

另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。

Docker 的联合文件系统

参考技术A Devicemapper 是 Linux 内核提供的框架,从 Linux 内核 2.6.9 版本开始引入,Devicemapper 与 AUFS 不同,AUFS 是一种文件系统,而Devicemapper 是一种映射块设备的技术框架。

Devicemapper 提供了一种将物理块设备映射到虚拟块设备的机制,目前 Linux 下比较流行的 LVM (Logical Volume Manager 是 Linux 下对磁盘分区进行管理的一种机制)和软件磁盘阵列(将多个较小的磁盘整合成为一个较大的磁盘设备用于扩大磁盘存储和提供数据可用性)都是基于 Devicemapper 机制实现的。

Devicemapper是如何数据存储的?
当 Docker 使用 Devicemapper 作为文件存储驱动时,Docker 将镜像和容器的文件存储在瘦供给池(thinpool)中,并将这些内容挂载在 /var/lib/docker/devicemapper/` 目录下。
这些目录储存 Docker 的容器和镜像相关数据,目录的数据内容和功能说明如下:

Docker 的 Devicemapper 模式有两种:第一种是 loop-lvm 模式,该模式主要用来开发和测试使用;第二种是 direct-lvm 模式,该模式推荐在生产环境中使用。
默认使用 loop-lvm 模式。

1.使用以下命令停止已经运行的 Docker:

2.编辑 /etc/docker/daemon.json 文件,如果该文件不存在,则创建该文件,并添加以下配置:

其中 directlvm_device 指定需要用作 Docker 存储的磁盘路径,Docker 会动态为我们创建对应的存储池。例如这里我想把 /dev/xdf 设备作为我的 Docker 存储盘,directlvm_device 则配置为 /dev/xdf。
3.启动 Docker:

4.验证 Docker 的文件驱动模式:
使用 docker info 查看,当看到 Storage Driver 为 devicemapper,并且 Pool Name 为 docker-thinpool 时,这表示 Devicemapper 的 direct-lvm 模式已经配置成功。

overlay2 是目前Docker 官方推荐的文件系统,也是目前安装 Docker 时默认的文件系统。

overlay2 和 AUFS 类似,它将所有目录称之为层(layer),overlay2 的目录是镜像和容器分层的基础,而把这些层统一展现到同一的目录下的过程称为联合挂载(union mount)。overlay2 把目录的下一层叫作lowerdir,上一层叫作upperdir,联合挂载后的结果叫作merged。

l目录包含缩短的层标识符作为符号链接。这些标识符用于避免达到mount命令参数的长度限制。

镜像层的 link 文件内容为该镜像层的短 ID,diff 文件夹为该镜像层的改动内容,lower 文件为该层的所有父层镜像的短 ID。diff 目录为容器的读写层,容器内修改的文件都会在 diff 中出现,merged 目录为分层文件联合挂载后的结果,也是容器内的工作目录。

通过 docker image inspect 命令来查看某个镜像的层级关系

使用 docker inspect 命令来查看容器的工作目录:

overlay2 的工作过程中对文件的操作分为读取文件和修改文件。
容器内进程读取文件分为以下三种情况。

overlay2 对文件的修改采用的是写时复制的工作机制,这种工作机制可以最大程度节省存储空间。具体的文件操作机制如下。

如何清理docker呢?由于版本较古老,没有 prune 命令。使用以下脚本来清理:

以上是关于linux系统的磁盘分区有哪几种?的主要内容,如果未能解决你的问题,请参考以下文章

深究NTFS文件系统

目前常用的磁盘调度算法有哪几种?每种算法优先考虑的问题是啥?

Linux的磁盘分区格式有何区别?

Linux 磁盘分区详解

linux系统磁盘分区及把磁盘挂载到系统中的方法

linux扩容磁盘分区容量