RHEL7--第六章
存储机构和磁盘划分
<>:表示必须选择内容;
[ ]:可有可无内容;
a|b:二选一;
...:同一内容可出现多次
- 一切从 / 开始

FHS:文件系统层级结构
用户在Linux系统中存储文件时需要遵守的规则,用于指导我们应该把文件存放在什么位置,应该在何处找到所需的文件。
Linux常见的目录名称及相应内容
/boot: 引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此;
/dev: 以文件形式存放的设备与接口;
/etc: 配置文件目录(纯文本文件);
/etc/opt: 第三方软件安装目录,现在用的不多了;
/etc/X11: 图形X桌面协议配置;
/home/USERNAME: 普通用户家目录;
/root: 管理员家目录;
/bin: 供所有用户使用的基本命令,不能关联至独立分区,OS启动会用到;
/sbin: 管理类的基本命令;不能关联至独立分区,OS启动会用到;
/lib: 基本共享库文件,以及内核模块文件(/lib/modules);
/lib64: 专用于x86_64位系统上的辅助共享库文件存放位置;
/media: 便携式移动设备挂载点;
/mnt: 临时文件系统挂载点;
/opt: 第三方应用程序的安装位置,目前不常用;
/srv: 系统上运行的服务用的数据;
/tmp: 临时文件存放位置;
/proc: 用于输出内核与进程信息相关的虚拟文件系统;
/usr/local: 用户自行安装的软件存放位置;
/usr/sbin: Linux系统开机时不会使用到的软件,命令,脚本;
/usr/share: 帮助与说明文件,也可放共享文件;
/var: 主要存放经常变化的文件,如日志;
/lost+found: 当文件系统发生错误时,将一些丢失的文件片段存放在这里;
- 物理设备的命名规则
udev:内核中的设备管理器自动把硬件名称规范起来,以守护进程行驶运行并监听内核;

硬盘分区编号:
主分区或扩展分区的编号从 1-4;
逻辑分区从编号 5 开始;
知识点:
1:/dev目录中sda设置之所以是a,不是插槽决定的,而且由系统内核的识别顺序来决定的;
2:比如sda3,并非表示设备上的第三个分区,3只是表示编号为3的分区,并非存在3个分区;
扇区的理解:
1:硬盘由大量扇区组成;每个扇区容量512字节;
2:第一扇区最重要,由组成:
a:主引导记录,占用446字节;
b:分区表,64字节;每个分区表占用16字节,最多4个主分区;
扩展分区:创建出数个逻辑分区,满足分区不够的情况;
c:结束符占用2字节;
- 文件系统与数据资料
用户在硬件存储设备中执行的文件建立,写入,读取,修改,转存与控制等操作都是依靠文件系统来完成的。
文件系统的作用:合理规划硬盘,保证用户正常的使用。Linux支持数十种文件系统;
常见的文件系统:
Ext3:日志文件系统;
1:避免系统宕机资料丢失;自动修复数据不一致与错误;
2:硬盘容量大时,修复时间长,不保证资料不会丢失;
Ext4:Ext3的改进版;
1:RHEL6默认的文件管理系统;
2:支持的存储容量高达1EB,能有无限多的子目录;
3:能够批量分配block块,极大提高读写速度;
XFS:高性能的日志文件系统,RHEL7默认的文件管理系统;
1:优势在发生意外宕机后尤其明显,快速回复可能被破坏的文件;
2:强大的日志功能只用花费极低的计算和存储性能;
3:最大支持存储容量18EB;
处理步骤:
新硬盘-->分区-->格式化并赋予文件系统-->挂载使用;
super block:
整个文件系统的信息都存在 super block 中;
inode:
Linux把每个文件的权限和属性记录在 inode 中;且每个文件占用一个独立的inode表格,大小默认为128字节,记录如下信息;

block块:
文件的实际内容保存在block块中(大小可以是1KB、2KB、4KB);
以 4KB的block来举例:
1:文件小(1KB),依然占用一个block,浪费3KB;
2:文件大(5KB),占用两个block块,也是浪费3KB;5KB-4KB;
VFS接口:
Virtual File System,虚拟文件系统;
用户操作文件时,统一对虚拟文件系统进行操作,实际文件系统在VFS下隐藏了特性和细节,可以随意使用命令在任何文件系统中操作了;

- 挂载硬件设备
挂载:需要使用硬盘设备或分区中的数据时,将其与一个以存在的目录相关联;
mount
用于手动临时挂载文件系统,格式:mount 文件系统 挂载目录;
参数:
-a:挂载所有在 /etc/fstab 中定义的文件系统;
-t:指定文件系统的类型;一般不需要指定,系统自动识别;
-o:指定挂载文件系统时的选项,有些可写到/etc/fstab中;
常用的有:
defaults:使用所有选项的默认值;
user/nouser:允许/不允许一般用户挂载;
auto/noauto:允许/不允许已 -a 选项进行安装;
remount:重新挂载已经挂载的文件系统;
uquota:开启用户磁盘配额,针对 XFS文件系统;
gquota:开启用户组磁盘配额,针对 XFS文件系统
usrquota:开启用户磁盘配额,针对 Ext文件系统;
grpquota:开启用户组磁盘配额,针对 Ext文件系统;
备注:
-o 后面跟多个参数时,用逗号隔开;
如:-o remount,uquota,gquota
例1:
# mount /dev/sdb2 /backup
临时把sdb2第二块硬盘的第二主分区,手动挂载到目录/backup上;
/etc/fstab
用于开机自动永久挂载文件系统;
# vi /etc/fstab

/dev/sr0: 设备路径及名称,也可以写唯一标识码 UUID;
/mnt/centos7:指定要挂载到的目录路径,挂载前需创建好;
iso9660: 指定文件系统的格式类型,比如ext3,ext4,XFS,iso9660;
defaults: 若设置为defaults,默认权限为:rw,suid,dev,exec,auto,nouser,async;
0: 若为1则开机后使用dump进行磁盘备份,为0不备份;
0: 若为1则开始后自动进行磁盘自检,为0不自检;
umount
撤销已经挂载的设备文件,格式:umount 挂载点或设备文件;
# umount /dev/sdb2
- 添加硬盘设备,分区,格式化,挂载
管理硬盘命令
处理步骤:新硬盘-->分区-->格式化并赋予文件系统-->挂载使用
fdisk
用于管理磁盘分区,格式:fdisk [磁盘名称];
提供了集添加、删除、转换分区等功能于一身的交互式"一站式分区服务";
参数:
在# fdisk [磁盘名称]后,运行的参数;
m:查看全部可用的参数;
n: 添加新的分区;
d: 删除某个分区信息;
l: 列出所有可用的分区类型;
t: 改变某个分区的类型;
p: 查看分区表信息;
w: 保存并退出;
q: 不保存直接退出;
# fdisk -l
查看当前硬盘及分区情况
# fdisk /dev/sdb
对/dev/sdb硬盘进行分区操作;
partprobe
当添加了新的分区后,用于不重启系统,让内核重新读取分区信息;
# file /dev/sdb1 查看文件类型;
# ls -l /dev/sdb* 显示当前的磁盘信息;
# partprobe
mkfs
格式化分区并赋予文件系统类型;输入mkfs,按两下TAB查看;

# mkfs.xfs /dev/sdb1
利用 mkfs.xfs 将分区 /dev/sdb1 格式化为 XFS的文件系统;
mount
挂载上面的 /dev/sdb1的分区;
# mkdir /mnt/newXFS
# mount /dev/sdb1 /mnt/newXFS
# df -h 查看挂载状态及硬盘使用信息;

du
查看文件数据占用量,格式:du [选项] 文件;
该命令就是用来查看一个或多个文件占用了多大的硬盘空间;
例:
# du -sh /* 查看根目录下所有一级目录分别占用的空间大小;
# du -sh /etc 查看etc目录占用多少硬盘空间;
df
显示当前Linux系统上的文件系统的磁盘使用情况统计;
# df -h 最常用;
- 添加交换分区
SWAP(交换)分区
是一种通过在硬盘中划分一定的空间,然后将内存中暂时不常用的数据临时存放在硬盘中,以便腾出物理内存空间让更活跃的程序服务使用的技术;解决真实物理内存不够的问题;
mkswap
进行分区格式化后成为 SWAP文件系统;
# mkswap /dev/sdb2 格式化成swap文件系统
# free -m 查看当前内存,swap容量;
# swapon /dev/sdb2 挂载/dev/sdb2 成 swap;
# free -m 再次查看当前内存,swap容量;
swapon
手动临时挂载swap分区;
# swapon /dev/sdb2
swapoff
撤销swap分区;
# swapoff /dev/sdb2
/etc/fstab
开机自动永久挂载分区

- 磁盘容量配额
1:Linux系统的设计初衷是让多人一起使用并执行各自的任务,从而成为多用户,多任务的操作系统;
2:由于硬件资源有限,针对这种情况,root使用磁盘容量配额服务来限制某些用户或用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数;
3:限制针对两类:
a:限制用户;
b:限制用户组;
quota
进行磁盘容量配额管理,限制用户的硬盘可用容量或所能创建的最大文件个数;
有如下两种限制功能:
1:软限制:当达到软限制时会提示用户,但仍允许用户在限定额度内继续使用;
2:硬限制:当达到硬限制时会提示用户,且强制终止用户的操作;
支持(开启)磁盘配额:
安装quota相关软件包;否则下面 edquota 命令无法使用;
# yum install -y quota
参考上面 mount 的选择参数描述;
1:临时让指定文件系统支持限制用户的磁盘配额;
# mount -o remount,uquota /dev/sdb3 /mnt/quota
RHEL7中XFS文件系统使用 uquota参数来表示用户;
EXT文件系统使用 usrquota参数来表示用户;
2:永久让指定文件系统支持限制用户的磁盘配额;
# vi /etc/fstab
/dev/sdb3 /mnt/quota xfs defaults,uquota 0 0
查看是否已支持(开启)磁盘配额功能;
# mount | grep quota
相关命令:
1:针对RHEL7的XFS文件系统的命令:
xfs_quota
专门针对XFS文件系统来管理quota磁盘容量配额服务的,格式:xfs_quota [参数] 配额 文件系统;
参数:
-c:以参数的形式设置要执行的命令;
-x:专家模式,对quota服务进行更复杂的配置;
例1:
设置用户a1对/mnt/quota目录的quota磁盘容量配额,控制如下:磁盘使用量的软和硬限制为3M和6M;创建文件数量的软和硬限制为4个和6个;
# xfs_quota -x -c ' limit bsoft=3m bhard=6m isoft=4 ihard=6 a1 ' /mnt/quota
测试结果:
# su - a1
# dd if=/dev/zero of=/mnt/quota/aaa bs=5M count=1
创建一个文件aaa,容量为5M,在允许范围,创建成功;
# dd if=/dev/zero of=/mnt/quota/bbb bs=5M count=4
创建一个文件bbb,容量为20M,超过quota配额范围,报错;

复制文件到/mnt/quota目录下:
# cp -a /etc /mnt/quota
由于硬限制创建文件数量为6个,超过6个报错;

edquota
1:用于编辑用户的quota配额限制,在为用户设置quota配额限制后,修改限额的数值格式:edquota [参数] [用户];
2:edquota会调用 vi,vim编辑器来让root修改限制;
备注:
如果提示 edquota 没有此命令,安装 quota 包;
# yum install -y quota
参数:
-u:针对哪个用户进行设置修改;
-g:针对哪个用户组进行设置修改;
-p<源用户名称>:将源用户的磁盘配额设置套用到其他用户或群组;
-t:设置宽限期限;
例1:
将用户a1 的硬盘使用量的硬限制从6M提升到10M;
# edquota -u a1
![]()
测试,创建10M的文件,会提示限制告警,但还是创建成功了;
# dd if=/dev/zero of=/mnt/quota/ccc.txt bs=10M count=1

例2:
将用户a1 的配额限制配置套用到用 a2,a3上;
格式:edquota [-p <源用户>] [-ug] [用户或群组名称...];
# edquota -p a1 -u a2 a3
# edquota -u a2
直接用edquota编辑 a2,查看是否已经套用了 a1 的配额配置;
2:针对ext4文件系统的配置命令
举例步骤:
1:挂载磁盘到对应的目录,并添加quota参数,使此文件系统支持磁盘配额;即使/mnt/ext4具有配额功能,但未开启;
# mount -o remount,usrquota /dev/sdb5 /mnt/ext4
2:开启/dev/sdb5的磁盘配额功能;
# quotaon /dev/sdb5
3:让a1用户针对/dev/sdb5磁盘进行磁盘的配额;
# edquota -u a1
4:测试是否成功;
# dd命令建文件测试即可;
quotaon
开启指定文件系统的配额功能;也适用于 xfs文件系统;
# quotaon /dev/sdb1
quotaoff
关闭指定文件系统的配额功能;也适用于 xfs文件系统;
# quotaoff /dev/sdb1
quotacheck
检查磁盘的使用空间和限制

例2:
# quotacheck -avug
将所有在 /etc/mtab 内,含有quota支持的partition进行扫描;
- 软硬方式链接
即为:Linux系统的快捷方式;
Linux中的两种链接文件:
硬链接:
1:可以理解成一个 "指向原始文件inode的指针",不分配独立的inode和文件;
2:硬链接和原始文件是同一个文件,只是名字不同;
3:每添加一个硬链接,文件的inode链接数就会增加1,当文件的inode链接为0时,才算彻底将文件删除;
4:硬链接时指向原始文件inode的指针,即使原始文件被删除,依然可以通过硬链接文件来访问;
5:不能跨分区,文件系统对目录文件进行链接;
软连接:(也叫 符号链接 symbolic link)
1:仅包含所链接文件的路径名,因此能链接目录文件,也可以跨文件系统进行链接;
2:原始文件被删除后,链接文件也将失效,与windows中的快捷方式一样;
相关命令:
ln
用于创建链接文件,格式:ln [选项] 目标
参数:
-s:创建 软链接,“符号链接”(如果不带 -s 参数,则默认创建 硬链接);
-f:强制创建文件或目录的链接;
-i:覆盖前先询问;
-v:显示创建链接的过程;
例1:
软链接配置
# ln -s /tmp/fstab /mnt/test
# ls -l /mnt/test

创建 /tmp/fstab 的软链接文件为/mnt/test,链接成功如上图;
# rm -rf /tmp/fstab
# ls -l /mnt/test

删除原始文件/tmp/fstab后,/mnt/test链接失效,如上图;
例2:
硬链接创建
# ln /tmp/fstab2 /mnt/test2
# ls -l /mnt/test2

创建的硬链接文件,红框中2表示创建一次硬链接后inode数值+1;
浙公网安备 33010602011771号