20220920 14. 磁盘配额(Quota)与进阶文件系统管理
14.1 磁盘配额 (Quota) 的应用与实作
14.1.1 什么是 Quota
在 Linux 系统中,由于是多用户多任务的环境,所以会有多人共同使用一个硬盘空间的情况 发生,因此管理员应该适当的限制硬盘的容量给使用者,以妥善的分配系统资源!
Quota 的一般用途
quota 比较常使用的几个情况是:
-
针对 WWW server ,例如:每个人的网页空间的容量限制!
-
针对 mail server,例如:每个人的邮件空间限制。
-
针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)
上头讲的是针对网络服务的设计,如果是针对 Linux 系统主机上面的设置那么使用的方向有 下面这一些:
-
限制某一群组所能使用的最大磁盘配额 (使用群组限制)
-
限制某一使用者的最大磁盘配额 (使用使用者限制)
-
限制某一目录 (directory, project) 的最大磁盘配额:EXT 文件系统的磁盘配额主要是针对整个文件系统来处理, 所以大多针对“挂载点”进行设计。 新的 xfs 可以使用 project 这种模式,就能够针对个别 的目录 (非文件系统喔) 来设计磁盘配额
quota 就是在回报管理员磁盘使用率以及让管理员管理磁 盘使用情况的一个工具
Quota 的使用限制
quota 使用上的限制:
-
在 EXT 文件系统家族仅能针对整个 filesystem:EXT 文件系统家族在进行 quota 限制的 时候,它仅能针对整个文件系统来进行设计,无法针对某个单一的目录来设计它的磁盘 配额。XFS 已经可以使用 project 模式来设计不同目录的磁盘配额
-
核心必须支持 quota :CentOS 7.x 默认有支持 quota
-
只对一般身份使用者有效:root 就不能设置 quota
-
若启用 SELinux,非所有目录均可设置 quota : 新版的 CentOS 默认都有启用 SELinux 这个核心功能,该功能会加强某些细部的权限控制!由于担心管理员不小心设置错误, 因此默认的情况下, quota 似乎仅能针对 /home 进行设置而已
Quota 的规范设置项目:
针对 XFS filesystem 的限制项目主要分为下面几个部分:
-
分别针对使用者、群组或个别目录 (user, group & project)
-
容量限制或文件数量限制 (block 或 inode)
-
限制 inode 用量:可以管理使用者可以创建的“文件数量”
-
限制 block 用量:管理使用者磁盘容量的限制,较常见为这种方式
-
-
柔性劝导与硬性规定 (soft/hard)
-
hard:表示使用者的用量绝对不会超过这个限制值
-
soft:表示使用者在低于 soft 限值时 (此例中为 400MBytes),可以正常使用磁盘,但 若超过 soft 且低于 hard 的限值 (介于 400~500MBytes 之间时),每次使用者登陆系统 时,系统会主动发出磁盘即将爆满的警告讯息, 且会给予一个宽限时间 (grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下, 则宽 限时间会停止。
-
-
会倒数计时的宽限时间 (grace time):当你的磁盘用量即 将到达 hard 且超过 soft 时,系统会给予警告,但也会给一段时间让使用者自行管理磁盘。 一般默认的宽限时间为七天,如果七天内你都不进行任何磁盘管理,那么 soft 限制值会即刻 取代 hard 限值来作为 quota 的限制
14.1.2 一个 XFS 文件系统的 Quota 实作范例
xfs_quota 指令
14.2 软件磁盘阵列 (Software RAID)
磁盘阵列 (RAID)
14.2.1 什么是 RAID
磁盘阵列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容错式 廉价磁盘阵列。
RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个 较大的磁盘设备; 而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢。
整个 RAID 由于选择的等级 (level) 不同,而使得整合后的磁盘具有不同的功能,基本常见 的 level 有这几种:
RAID-0 (等量模式, stripe):性能最佳
这种模式的 RAID 会将磁盘 先切出等量的区块 (名为chunk,一般可设置 4K~1M 之间), 然后当一个文件要写入 RAID 时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会 交错的存放数据, 因此当你的数据要写入 RAID 时,数据会被等量的放置在各个磁盘上面。
举例来说,你有两颗磁盘组成 RAID-0 , 当你有 100MB 的数据要写入时,每个磁盘会各被分 配到 50MB 的储存量。
RAID-1 (映射模式, mirror):完整备份
这种模式主要是“让同一份数据,完 整的保存在两颗磁盘上头”。
举例来说,如果我有一个 100MB 的文件,且我仅有两颗磁盘组 成 RAID-1 时, 那么这两颗磁盘将会同步写入 100MB 到他们的储存空间去。 因此,整体 RAID 的容量几乎少了 50%。由于两颗硬盘内容一模一样,好像镜子映照出来一样, 所以我 们也称他为 mirror 模式啰~
如果你使用的 是硬件 RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的 I/O 总线, 性能方面则还可以。 如果使用软件磁盘阵列,可能性能就不好了。
RAID 1+0,RAID 0+1
RAID-0 的性能佳但是数据不安全,RAID-1 的数据安全但是性能不佳,那么能不能将这两者 整合起来设置 RAID 呢? 可以啊!那就是 RAID 1+0 或 RAID 0+1。
所谓的 RAID 1+0 就是:
-
先让两颗磁盘组成 RAID 1,并且这样的设置共有两组;
-
将这两组 RAID 1 再组成 一组 RAID 0。这就是 RAID 1+0
反过来说,RAID 0+1 就是先组成 RAID-0 再组成 RAID- 1 的意思。
RAID 1+0 是目前储存设备厂商最推荐的方法
RAID 5:性能与数据备份的均衡考虑
RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入 有点类似 RAID-0 , 不过每个循环的写入过程中 (striping),在每颗磁盘还加入一个同位检 查数据 (Parity) ,这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援
RAID 5 默认仅能支持一颗磁盘的损毁情况
RAID 6 则使用两颗磁盘的容量作为 parity 的储存,因此整体的磁盘容量就会 少两颗,但是允许出错的磁盘数量就可以达到两颗
Spare Disk:预备磁盘的功能:
spare disk 就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平 时并不会被磁盘阵列所使用, 当磁盘阵列有任何磁盘损毁时,则这颗 spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列! 然后立即重建数据系统。
若你的磁盘阵列有支持热拔插那就更完美了! 直接将坏掉的那颗磁盘 拔除换一颗新的,再将那颗新的设置成为 spare disk ,就完成了!
磁盘阵列的优点
其实你的系统如果需要磁盘阵列的话,其实重点在于:
-
数据安全与可靠性
-
读写性能
-
容量
项目 | RAID0 | RAID1 | RAID10 | RAID5 | RAID6 |
---|---|---|---|---|---|
最少磁盘数 | 2 | 2 | 4 | 3 | 4 |
最大容错磁盘 数(1) | 无 | n-1 | n/2 | 1 | 2 |
数据安全性 (1) | 完全没有 | 最佳 | 最佳 | 好 | 比RAID5 好 |
理论写入性能 (2) | n | 1 | n/2 | <n-1 | <n-2 |
理论读出性能 (2) | n | n | n | <n-1 | <n-2 |
可用容量 (3) | n | 1 | n/2 | n-1 | n-2 |
一般应用 | 强调性能但数据不重要的环境 | 数据与 备份 | 服务器、云 系统常用 | 数据与 备份 | 数据与 备份 |
14.2.2 software, hardware RAID
硬件磁盘阵列 (hardware RAID) 是通过磁盘阵 列卡来达成阵列的目的。 磁盘阵列卡上面有一块专门的芯片在处理 RAID 的任务,因此在性 能方面会比较好。在很多任务 (例如 RAID 5 的同位检查码计算) 磁盘阵列并不会重复消耗 原本系统的 I/O 总线,理论上性能会较佳。此外目前一般的中高阶磁盘阵列卡都支持热拔插, 亦即在不关机的情况下抽换损坏的磁盘,对于系统的复原与数据的可靠性方面非常的好用。
由于磁盘阵列有很多优秀的功能,然而硬件磁盘阵列卡偏偏又贵的很~因此就有发展出利用 软件来仿真磁盘阵列的功能, 这就是所谓的软件磁盘阵列 (software RAID)。软件磁盘阵 列主要是通过软件来仿真阵列的任务, 因此会损耗较多的系统资源,比如说 CPU 的运算与 I/O 总线的资源等。
14.2.3 软件磁盘阵列的设置
mdadm 指令
14.2.4 仿真 RAID 错误的救援模式
14.2.5 开机自动启动 RAID 并自动挂载
14.2.6 关闭软件 RAID(重要!)
14.3 逻辑卷轴管理员 (Logical Volume Manager)
LVM 的重点在于“可以弹性的调整 filesystem 的容量!
LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个磁盘一样!而且,还可以在未来新增或 移除其他的实体 partition 到这个 LVM 管理的磁盘当中。 如此一来,整个磁盘空间的使用上, 实在是相当的具有弹性啊!