文件系统
Linux 的文件系统遵循 HFS 设计,有如下实现:
Ext (Extended Filesystem), Ext2, Ext3, Ext4 |
mount
unix 有树状的文件系统,根节点是 /,每个节点可能来自不同的 devices。mount 将 device 上的某文件系统放在树的某节点上。
- 标准格式是 mount -t type device dir,会把类型为type的device挂载到dir目录上,之前dir目录的内容还在而只是被隐藏了。
- 如果 mount /dir 则会在 /etc/fstab 中找挂载点
- 也可以 mount –target /mountpoint
- mount [-l] [-t type] 会列出已挂载的设备
通过更改 /etc/fstab 文件可以挂载,内容如下:
- Device: usually the given name or UUID of the mounted device (sda1/sda2/etc).
- Mount Point: designates the directory where the device is/will be mounted.
- File System Type: nothing trick here, shows the type of filesystem in use.
- Options: lists any active mount options. If using multiple options they must be separated by commas.
- Backup Operation: (the first digit) this is a binary system where 1 = dump utility backup of a partition. 0 = no backup. This is an outdated backup method and should NOT be used.
- File System Check Order: (second digit) Here we can see three possible outcomes. 0 means that fsck will not check the filesystem. Numbers higher than this represent the check order. The root filesystem should be set to 1 and other partitions set to 2.
/dev/mapper/rhel-root / xfs defaults 0 0 |
umount
先停服务,再 umount,再 mkfs.ext4,再 mount
Rootfs
Rootfs 位于分层文件树的顶部(也称为‘/’)。Linux内核通过配置参数‘ROOT=’直接挂载 Rootfs。
根文件系统还具有 mount point(挂载点),我们也可在挂载点上挂载其他文件系统,以便将它们连接到此文件系统层次结构。它有许多目录,其中包含对引导系统和系统操作至关重要的文件。
overlayfs
概念
OverlayFS伪文件系统最初包含在Linux内核3.18版本中:它允许我们以一种对用户完全透明的方式组合两个目录树或文件系统(“上层”和“下层”),它能够访问“合并”层上的文件和目录,就像在标准文件系统上所做的那样。
Linux内核在挂载文件系统时采用的标准行为:作为挂载点的目录中存在的文件和目录被屏蔽,并且对用户不可用,而挂载的文件系统上存在的文件和目录被显示。只有在卸载文件系统后,才能再次访问原始文件。当我们在同一目录上挂载多个文件系统时,也会发生这种情况。相反,当使用OverlayFS伪文件系统时,不同层上存在的文件被「组合」在一起,生成的文件系统可以自己挂载。
OverlayFS通常用于运行在嵌入式设备(如OpenWRT)上的系统,在这种情况下,保留基本配置集并同时允许用户执行修改非常有用。OverlayFS也是“overlay”和“overlay2”Docker存储驱动程序的基础。
OverlayFS的工作涉及两层:lower 和 upper。lower 通常以 readonly 模式 mount。使用此设置时,由于不可能对其上托管的文件和目录进行直接更改,因此可以将其用作安全的备用设置。相反,upper 可以以 read/write 模式安装。存在于这两个层上的文件被 combine 在一起,并且可以在我们所称的 merged 层中进行访问,该层本身可以作为标准文件系统来挂载。
如下图中所观察到的,存在于 lower 中的文件被存在于 upper 中的同名文件“obscured 遮挡” 或 “masked 屏蔽”。当用户修改属于前者的文件时,在后者的 writable 层中创建该文件的副本(该策略被称为:“copy-up 复制”):该文件在对用户透明的过程中屏蔽原始文件。类似的事情也发生在被合并的目录上:
upperdir 和 workdir 有什么区别
- upperdir:这是 Overlay 文件系统中的“上层”目录,用于存储所有的写入操作结果。也就是说,如果你对 Overlay 文件系统进行修改(例如,创建文件,修改文件,删除文件等),所有的修改都会在这个 upperdir 目录中体现。这个目录是可读写的。
- workdir:这是 Overlay 文件系统中的“工作”目录,主要用于存储一些在合并(mount)过程中需要的元数据和临时文件。这个目录也必须是可读写的,且需要和 upperdir 在同一个文件系统下。在实际操作中,你通常不会直接操作这个目录,它主要是为 Overlay 文件系统的内部操作服务的。
简单来说,upperdir
是用来存储你对文件系统做出的实际修改,而 workdir
是 Overlay 文件系统在执行这些修改时,用来存储临时数据的地方。
tmpfs
Linux下一切皆文件。GPU、硬盘、扫描仪、鼠标等都以文件或目录的形式,呈现在Linux的/dev下。比如服务器中第一块NVIDIA的GPU是/dev/nvidia0;某块硬盘是/dev/sda等。
/dev/shm是一个特殊的目录,它表示是一块共享内存(Share Memory)。这个目录可以用来在进程间进行数据的通信和共享。比如,第一个进程创建一块内存区域,另外一个进程去访问该内存区域,两个进程之间可以快速分享数据和信息。/dev/shm使用了tmpfs,tmpfs是Linux上基于内存的文件系统,可以达到内存级别的读写速度。
默认情况下,/dev/shm的大小是服务器大小的一半。