Filesystem Hierarchy Standard

FHS是根据以往无数Linux系统用户和开发者的经验而总结出来的,是用户在Linux系统中存储文件时需要遵守的规则,用于指导我们应该把文件保存到什么位置,以及告诉用户应该在何处找到所需的文件。

目录名称 应放置文件的内容
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户家目录
/bin 存放单用户模式下还可以操作的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的“共享”临时目录
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放经常变化的文件,如日志
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里

物理设备的命名规则

硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0

主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。

image.png
/dev/目录中保存的应当是硬件设备文件;其次,sd表示是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备,最后,5表示这个设备是一个逻辑分区。

  1. 硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/157775/1587470778579-531579df-8485-46b8-9e5e-57968e51387d.png#height=133&id=NLVoN&name=image.png&originHeight=133&originWidth=281&originalType=binary&ratio=1&size=9691&status=done&style=none&width=281)<br /> 第一个扇区最多只能创建出4个分区?于是为了解决分区个数不够的问题,可以将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另 外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针—一个指向另外一个分区的指针。这样一来,用户一般会选择使用3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4个)的需求。<br /> 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。

image.png

Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了

image.png

相关命令

mount

mount命令用于挂载文件系统,格式为“mount 文件系统 挂载目录”
参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型
-o remount 重新挂载目录

如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”,写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。

umount

umount命令用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”。

/etc/fstab

字段 意义
一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
指定要挂载到的目录,需在挂载前创建好
指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
is checked by the dump(8) utility. This field is usually set to 0, which disables the check.
sets the order for filesystem checks at boot time; see fsck(8). For the root device it should be 1. For other partitions it should be 2, or 0 to disable checking.

image.png

设备命名

有多种方法可以识别到设备kernel name descriptor, file system label and UUID, and GPT partition label and UUID for GPT disks. UUID or PARTUUID must be privileged over kernel name descriptors and labels

lsblk -f

[root@ip-172-31-15-250 ~]# lsblk -f
NAME        FSTYPE   LABEL UUID                                 MOUNTPOINT
loop0       squashfs                                            /var/lib/snapd/snap/snapd/12398
loop1       squashfs                                            /var/lib/snapd/snap/core18/2074
loop2       squashfs                                            /var/lib/snapd/snap/stress-ng/5932
nvme0n1                                                         
├─nvme0n1p1                                                     
└─nvme0n1p2 xfs            949779ce-46aa-434e-8eb0-852514a5d69e /

File system UUIDs and GPT partition labels

[root@ip-172-31-15-250 ~]# blkid
/dev/nvme0n1p2: UUID="949779ce-46aa-434e-8eb0-852514a5d69e" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="f3dc379a-e15b-46c0-82ff-b9c089f7f27f"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/nvme0n1: PTUUID="246b752e-8cb4-41e7-b9b1-365a93acf890" PTTYPE="gpt"
/dev/nvme0n1p1: PARTUUID="1227fbb3-a2f6-4933-a7ac-98432f8f15af

参考链接:
https://wiki.archlinux.org/title/fstab

磁盘管理

fdisk

在Linux系统中,管理硬盘设备最常用的方法就当属fdisk命令了。fdisk命令用于管理磁盘分区,格式为“fdisk  [磁盘名称]”,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。
参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区信息
w 保存并退出
q 不保存直接退出

mkfs 命令

格式化分区 命令格式 : [mkfs.文件类型名称 设备文件]

du

用于查看文件数据占用量,格式为“du [选项] [文件]”

SWAP

SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。<br />    mkswap /dev/sdb2     格式化为swap格式<br />    swapon /dev/sdb2      加载到swap

磁盘配额

root管理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用quota命令进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota命令还有软限制和硬限制的功能。
  • 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
  • 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

xfs_quota

xfs_quota命令是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令,格式为“xfs_quota [参数] 配额 文件系统”。其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。

硬盘使用量的软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个。
xfs_quota -xc ‘limit bsoft=3m bhard=6m isoft=3 ihard=6 tom’ /boot/

edquota

edquota命令用于编辑用户的quota配额限制,格式为“edquota [参数] [用户] ”。在为用户设置了quota磁盘容量配额限制后,可以使用edquota命令按需修改限额的数值。其中,-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置。
Disk quotas for user tom (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 6144 3072 6144 2 3 6