# 第八部分：文件系统、挂载与磁盘配额

## 文件系统基础

文件系统是包括在一个磁盘（硬盘、光盘及其它存储设备）上的目录结构；一个磁盘设备可以包含一个或多个文件系统。

文件系统是在一个磁盘（硬盘、光盘及其它存储设备）上组织文件的方法。

文件系统是文件的数据结构或组织方法。

文件系统是基于被划分的存储设备上的一种文件的命名、存储、组织及读取的方法。

一个文件系统是有组织存储文件或数据的方法，目的是易于查询和存取。文件系统是基于一个存储设备，比如硬盘或光盘，并且包含文件文件物理位置的维护。

Linux下的所有文件和目录以一个树状的结构组织构成了 Linux 中的文件系统

Linux 文件系统标准（Linux File System Standard，FSSTND）

文件系统层次结构标准（File System Hierarchy Standard，FHS）

Linux 的内核采用了称之为虚拟文件系统（Virtual File System，VFS）的技术，因此Linux 可以支持多种不同的文件系统类型。

Linux可支持的文件系统

Linux 目前几乎支持所有的 UNIX 类的文件系统，如 HFS、XFS、JFS、Minix FS 及 UFS 等Linux 支持 NFS 文件系统

Linux 也支持 NTFS 和 vfat（FAT32）

Linux 支持

ext3/ext4

JFS（IBM）

XFS（ SGI ）

Reiserfs

日志文件系统的优点

提高了文件的存储安全性

降低了文件被破坏的机率

缩短了对磁盘的扫描时间

减少了磁盘整体扫描次数

ext2/ext3/ext4

Linux使用的标准文件系统

swap

交换文件系统

FAT32/vfat

Windows 文件系统

NFS

网络文件系统

iso9660

标准光盘文件系统

在硬盘上创建分区或逻辑卷

可以使用fdisk命令创建分区。

可以使用LVM的相关命令创建逻辑卷

在分区/LV上建立文件系统

类似于在Windows下进行格式化操作。

挂装文件系统到系统中

手工挂装：使用mount命令

启动时自动挂装：编辑“/etc/fstab” 添加相应的配置行。

卸装文件系统

对于可移动介质上的文件系统，当使用完毕可以使用 umount 命令实施卸装操作。

挂载文件系统——mount 命令

功能：挂装文件系统

格式

mount [选项] [<分区设备名>] [<挂装点>]

常用选项

-t <文件系统类型 $\mathrm { . }$ ：指定文件系统类型

-r ：使用只读方式来挂载

-a：挂装/etc/fstab 文件中记录的设备

-o iocharset=cp936：使挂装的设备可以显示中文文件名

-o loop：使用回送设备挂装ISO文件和映像文件

挂装点目录必须存在

应该在挂装目录的上级目录下进行挂装操作

不该在同一个挂装点目录下挂装两个文件系统

当文件系统处于“busy”状态时不能进行卸装

文件系统何时处于“busy”状态

文件系统上面有打开的文件

某个进程的工作目录在此文件系统上

文件系统上面的缓存文件正在被使用

fuser命令可以根据文件（目录、设备）查找使用它的进程，同时也提供了杀死这些进程的方法。

使用举例

查看挂接点有哪些进程需要杀掉

`fuser -cu /mount_point`

杀死这些进程（向其发送[SIGKILL, 9]信号）

`fuser -ck /mount_point`

查看是否还有进程在访问挂接点

`fuser -c /mount_point`

卸载挂接点上的设备

`umount /mount_point`

什么是LVM,LVM如何管理

卸载文件系统

Umount 命令

挂载点目录必须存在

应该在怪载目录的上级目录的上级目录下进行挂载操作

不该在同一个挂载点

Fuser可以根据文件（目录、设备）查找使用它的进程，同时提懂了杀死这些进程的方法系统启动时，自动挂装文件系统

/etc/fstab

开机后系统会自动搜索该文件中的内容，对雷雨该文件重点文件系统进行自动挂载

fstab (file system table) 是一个纯文本文件，开机后，系统会自动搜索该文件中的内容，对列于该文件中的文件系统进行自动挂载。

系统重启时保留文件系统体系结构

配置文件系统体系结构

被 mount、fsck 和其它程序使用

使用 mount -a 命令挂载 /etc/fstab 中的所有文件系统

可以在设备栏使用文件系统卷标

/etc/fstab 包含的信息

每一行说明一个文件系统的挂载信息

每一行由 6 列信息组成，列与列之间用 TAB 键隔开，一般格式如下：

![](9303ce8214d567f55d42a0a06e6131a49607bc6c4c19ed7d6ee97b0a07b20ae3.jpg)

分区或 LV 挂装点 文件系统类型 挂装选项 备份频率 检查顺序

fs_spec fs_file fs_type fs_options fs_dump fs_pass

fs_file：挂装点目录

fs_type：文件系统类型

fs_options：文件系统挂载选项

fs_dump：被”dump”命令使用来检查一个文件系统应该以多快频率进行转储，若不需要转储则该字段为“0”

fs_pass：被”fsck”命令用来决定在启动时需要被扫描的文件系统的顺序，若无需在启动时扫描则该字段为“0”

每一行说明一个文件系统的挂载信息

设备名 挂载点 文件系统类型 挂装选项列表 dump 时记录 fsck 时的顺序

EXT 2/3/4 文件系统

前端命令mkfs的格式

Mkfs-t <fstype> -c <分区设备名>

前端命令mkfs的格式

`mkfs -t <fstype> -c <分区设备名>`

-t fstype：指定文件系统类型

-c：建立文件系统前先检测有无坏块

举例

`mkfs -t ext3 -c /dev/hda2`

`mkfs -t vfat /dev/hdb2`

`mke2fs -c /dev/hda2`

`mkfs.ext4 /dev/sda1`

fsck 是操作系统扫描文件系统内容检查内部一致性的工具。

主要功能

检测并修正链接中断的目录

检测并修正错误时间标记

检测并修正指向错误磁盘区域的 i-node

命令格式

fsck [选项][-t 文件系统类型] <设备名 $>$ [特定文件系统的附加选项]

Fsck ——检查文件系统

Tune2fs

显示文件系统属性参数

tune2fs -l <device>

dumpe2fs -h <device>

可调整的文件系统属性参数

保留块

默认挂载选项

fsck 频率

格式

tune2fs [<选项>] <设备名>

常用选项

-c：表示文件系统在 mount 次数达到设定后，需要运行 fsck 检查文件系统。

-i：文件系统的检查间隔时间。系统在达到时间间隔时，自动检查文件系统。

-j：为 ext2 文件系统添加文件系统日志，转换为 ext3 文件系统。

-m: 设置保留的空间百分比，预设为 $5 \% .$ 。

-o: 设置默认加载参数。

-L: 为指定设备设置卷标，不大于 16 字符。

文件系统的 LABLE 和 UUID

标识块设备的传统方法

设备名

标识块设备的其他方法

文件系统 LABEL

文件系统的UUID

在生成文件系统时自动为设备只当 UUID

磁盘限额是系统管理员用来监控和限制用户或组对磁盘的使用的工具

磁盘限额是系统管理员用来监控和限制用户或组对磁盘的使用的工具。

磁盘限额可以从两方面限制

限制用户或组可以拥有的inode数（即文件个数）

限制分配给用户或组的磁盘块的数目

磁盘配额是以每一使用者，每一文件系统为基础的。如果使用者可以在超过一个以上的文件系统上建立文件，那么必须在每一文件系统上分别设定。

硬限制：超过此设定值后不能继续存储新的文件。

软限制：超过此设定值后仍旧可以继续存储新的文件，同时系统发出警告信息, 建议用户清理自己的文件，释放出更多的空间。

时限：超过软限制多长时间之内（默认为7天）可以继续存储新的文件。

Edquota

交互式编辑配额

edquota

命令式设置配额

setquota

将参考用户/组的配额复制给其他用户/组

edquota -p <protoname> ……

setquota -p <protoname> ……

编辑指定用户的配额

edquota [-u] [ -f filesystem ] <username>

编辑指定组的配额

edquota -g [ -f filesystem ] <groupname>

编辑指定用户的配额时限

edquota -t [-u] [ -f filesystem ]

编辑指定组的配额时限
