存储结构与磁盘划分
一切从“/”开始
在 Linux 系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,在 Windows 操作系统中,想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是 D 盘),然后在进入该分区下的具体目录,最终找到这个文件。但是在 Linux系统中并不存在 C/D/E/F 等盘符,Linux 系统中的一切文件都是从“根(/)”目录开始的,并按照 文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。
Linux 系统中的文件存储结构
Linux 系统中常见的目录名称以及相应内容
目录名称 | 应放置文件的内容 |
---|---|
/boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
lib | 开机时用到的函数库,以及/bin 与/sbin 下面的命令要调用的函数 |
/sbin | 开机过程中需要的命令 |
/media | 用于挂载设备文件的目录 |
/opt | 放置第三方的软件 |
/root | 系统管理员的家目录 |
srv | 一些网络服务的数据文件目录 |
tmp | 任何人均可使用的“共享”临时目录 |
proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
/uer/local | 用户自行安装的软件 |
/usr/sbin | Linux 系统开机时不会使用到的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变化的文件,如日志 |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
路径指的是如何定位到某个文件, 分为绝对路径与相对路径。
- 绝对路径指的是从根目录(/)开始写起的文件或目录名称
- 相对路径则指的是相对于当前路径的写法。
物理设备的命名规则
udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的设备文件。
常见的硬件设备及其文件名称
硬件设备 | 文件名称 |
---|---|
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 |
由于现在的 IDE 设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头的,而一台主机上可以有多块硬盘,因此系统采用 a~p 来代表 16 块不同的硬盘(默认从 a 开始分配),而且硬盘的分区编号也很有讲究:
- 主分区或扩展分区的编号从 1 开始,到 4 结束;
- 逻辑分区从编号 5 开始。
/dev 目录中 sda 设备 之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用 iSCSI 网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb 这个设备 就是这个道理。
因为分区的数字编码不一定是强制顺延下来 的,也有可能是手工指定的。因此 sda3 只能表示是编号为 3 的分区,而不能判断 sda 设备上已经存在了 3 个分区。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RD81oN9U-1574168957167)(C:\Users\kris\AppData\Roaming\Typora\typora-user-images\image-20191118135259022.png)]
这是系统中第一块被识别到的硬件设备中分区编号为 5 的逻辑分区的设备文件
硬盘设备是由大量的扇区组成的,每个扇区的容量为 512 字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用 446 字节,分区表为 64 字节,结束符占用 2 字节;其中分区表中每记录一个分区 信息就需要 16 字节,这样一来最多只有 4 个分区信息可以写到第一个扇区中,这 4 个分区就 是 4 个主分区。
文件系统与数据资料
最常见的文件系统:
- Ext3: 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
- Ext4:Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配 block 块,从而极大地提高了读写效率。
- XfS :是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB,这几乎满足了所有需求。
日常在硬盘需要保存的数据实在太多了,因此 Linux 系统中有一个名为 super block 的“硬 盘地图”。Linux 只是把每个文件的权限与属性记录在 inode 中,而且每个文件占用一个独立的 inode 表格,该表格的大小默认为 128 字节,里面记录着如下信息:
-
该文件的访问权限(read、write、execute);
-
该文件的所有者与所属组(owner、group);
-
该文件的大小(size);
-
该文件的创建或内容修改时间(ctime);
-
该文件的最后一次访问时间(atime);
-
该文件的修改时间(mtime);
-
文件的特殊权限(SUID、SGID、SBIT);
-
该文件的真实数据地址(point)。
计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用 关心底层的硬盘结构,Linux 内核中的软件层为用户程序提供了一个 VFS(Virtual File System, 虚拟文件系统)接口
挂载硬件设备
在拿到一块全新的硬盘存储设备后要先分区,然后格式化,最后才能挂载并正常使用
挂载:
当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”。
mount 命令
用于挂载文件系统,格式为“mount 文件系统 挂载目录”
mount 命令中的参数以及作用
参数 | 作用 |
---|---|
-a | 挂在所有在/etc/fstab 中定义的文件系统 |
-t | 指定文件系统的类型 |
例如,要把设备/dev/sdb2 挂载到/backup 目录,只需要在 mount 命令中填写设备与挂载目录参数就行,系统会自动去判断要挂载文件的类型,因此只需要执行下述命令即可:
[root@linuxprobe ~]# mount /dev/sdb2 /backup
虽然按照上面的方法执行 mount 命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说我们需要每次开机后都手动挂载一下
如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”(各字段的意义见表 6-4) 写入到/etc/fstab 文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就 能一劳永逸了。
用于挂载信息的指定填写格式中,各字段所表示的意义
字段 | 意义 |
---|---|
设备文件 | 一 般 为 设 备 的 路 径 + 设 备 名 称 , 也 可 以 写 唯 一 识 别 码 ( UUID , Universally Unique Identifier) |
挂载目录 | 挂载目录 指定要挂载到的目录,需在挂载前创建好 |
格式类型 | 格式类型 指定文件系统的格式,比如 Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等 |
权限选项 | 权限选项 若设置为 defaults,则默认权限为:rw, suid, dev, e |