第十四章 磁盘配额(Quota)与高级文件系统管理
解决的问题:在多人多任务的环境下,如何公平分配空间。通过磁盘配额完成限制额度。
14.1 磁盘配额(Quota)的应用与实践
14.1.1 磁盘配额概念
磁盘配合的规范设置选项,针对XFS文件系统的限制:
- 分别针对用户、用户组、或个别目录(user、group、project)
- 容量限制或文件数量限制(block或inode)通过限制inode使用量,可以限制用户建立的文件数量;通过限制block使用量,可以限制用户磁盘容量(常见)
- 软限制与硬限制(soft/hard):超过soft发出警告,同时开始倒数计时的宽限时间grace time,超过规定时间还没有释放磁盘使用空间,磁盘使用权就会被锁定无法新增文件;如果容量到了hard那果断强制不能再往里放东西了
14.1.2 一个xfs文件系统的磁盘配额实践范例
制作账号环境,产生5个用户myquota1-5,这些用户都属于同一个组myquotagrp。这个组有个共享文件夹/home/myquota,该文件夹对其他人不可见。
cat addaccount.sh
输出:
#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
useradd -g myquotagrp $username
echo "password" |passwd --stdin $username
done
mkdir /home/myquota
chgrp myquotagrp /home/myquota
chmod 2770 /home/myquota
[root@study ~] sh addaccount.sh
更改用户 myquota1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 myquota2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 myquota3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 myquota4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 myquota5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
针对这个场景,进行练习:
14.1.3 实践1:文件系统的支持和查看
首先看使用的是不是默认支持磁盘配额的内核,若是,启动文件系统的支持。
不要在根目录进行磁盘配额设置,会过于复杂。 此处在/home下的xfs文件系统操作。
为了查看目录使用的文件系统:
[root@study ~] df -hT /home
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-home xfs 5.0G 42M 5.0G 1% /home
vim /etc/fstab 编辑这个文件,才能启用磁盘配额功能
在第四行的default后面加上俩参数:
/dev/mapper/centos-home /home xfs defaults,usrquota,grpquota 0 0
文件全部内容:
#
# /etc/fstab
# Created by anaconda on Wed Apr 29 21:19:56 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=fa15ca75-5fee-40f1-a0c0-166886678508 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults,usrquota,grpquota 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID="b9297c33-1376-4eab-8d25-98196d01c822" /data/xfs xfs defaults 0 0
/srv/loopdev /data/file xfs defaults,loop 0 0
UUID="c716c895-6286-45f2-8906-bc106bc5dcff" swap swap defaults 0 0
/tmp/swap swap swap defaults 0 0
UUID="DD87-2ABC" /data/win vfat defaults 0 0
[root@study ~] umount /home 此时务必是直接通过root身份登录系统,而不能是通过dj用户进入系统后通过su -转成root身份,这个命令必须所有的一般账户都注销后才能成功
[root@study ~] mount -a
[root@study ~] mount | grep home
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
14.1.4 实践2:查看磁盘配额报告数据
设置文件系统支持后,要查看到底有没有正确列出磁盘配额的管理数据。
列出目前系统的各个文件系统,以及文件系统的磁盘配额挂载参数支持:
[root@study ~] xfs_quota -x -c "print"
Filesystem Pathname
/ /dev/mapper/centos-root
/boot /dev/sda2
/data/xfs /dev/sda4
/data/file /dev/loop0
/home /dev/mapper/centos-home (uquota, gquota) 这里是支持的
列出目前/home这个支持磁盘配额的挂载点文件系统使用情况:
[root@study ~] xfs_quota -x -c "df -h" /home
Filesystem Size Used Avail Use% Pathname
/dev/mapper/centos-home
5.0G 41.3M 4.9G 1% /home
列出目前/home的所有用户的磁盘配额限制值:
[root@study ~] xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 4 0 0 00 [------]
dj 8.5M 0 0 00 [------] 249 0 0 00 [------]
vbird1 16K 0 0 00 [------] 9 0 0 00 [------]
vbird2 20K 0 0 00 [------] 13 0 0 00 [------]
std01 12K 0 0 00 [------] 7 0 0 00 [------]
std02 12K 0 0 00 [------] 7 0 0 00 [------]
std03 12K 0 0 00 [------] 7 0 0 00 [------]
std04 12K 0 0 00 [------] 7 0 0 00 [------]
std05 12K 0 0 00 [------] 7 0 0 00 [------]
myquota1 12K 0 0 00 [------] 7 0 0 00 [------]
myquota2 12K 0 0 00 [------] 7 0 0 00 [------]
myquota3 12K 0 0 00 [------] 7 0 0 00 [------]
myquota4 12K 0 0 00 [------] 7 0 0 00 [------]
myquota5 12K 0 0 00 [------] 7 0 0 00 [------]
soft和hard均为0,代表没限制。
列出目前支持的磁盘配额文件系统是否有启动了磁盘配额功能:
[root@study ~] xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home) 这里说的是启动了对user的限制
Accounting: ON
Enforcement: ON
Inode: #47744 (3 blocks, 3 extents)
Group quota state on /home (/dev/mapper/centos-home) 这里说的是启动了对group的限制
Accounting: ON
Enforcement: ON
Inode: #47745 (4 blocks, 4 extents)
Project quota state on /home (/dev/mapper/centos-home) 这里说的是project并未支持
Accounting: OFF
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Blocks grace time: [7 days] 这里说的是grace time 的选项
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
14.1.5 实践3:限制值设置方式
确认文件系统的磁盘配额支持顺利启用后,也能够查看到相关的磁盘配额限制,接下来就是要实际设置用户或用户组的限制。
设置语法:
xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft][hard]=N name"
xfs_quota -x -c "timer [-ug] [-bir] Ndays"
真实设置:
设置好用户的block限制值:
[root@study ~] xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home
[root@study ~] xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota2" /home
[root@study ~] xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota3" /home
[root@study ~] xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota4" /home
[root@study ~] xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota5" /home
[root@study ~] xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 4 0 0 00 [------]
dj 8.5M 0 0 00 [------] 249 0 0 00 [------]
vbird1 16K 0 0 00 [------] 9 0 0 00 [------]
vbird2 20K 0 0 00 [------] 13 0 0 00 [------]
std01 12K 0 0 00 [------] 7 0 0 00 [------]
std02 12K 0 0 00 [------] 7 0 0 00 [------]
std03 12K 0 0 00 [------] 7 0 0 00 [------]
std04 12K 0 0 00 [------] 7 0 0 00 [------]
std05 12K 0 0 00 [------] 7 0 0 00 [------]
myquota1 12K 250M 300M 00 [------] 7 0 0 00 [------]
myquota2 12K 250M 300M 00 [------] 7 0 0 00 [------]
myquota3 12K 250M 300M 00 [------] 7 0 0 00 [------]
myquota4 12K 250M 300M 00 [------] 7 0 0 00 [------]
myquota5 12K 250M 300M 00 [------] 7 0 0 00 [------]
设置好myquotagrp的block限制值:
[root@study ~] xfs_quota -x -c "limit -g bsoft=950M bhard=1G myquotagrp" /home
[root@study ~] xfs_quota -x -c "report -gbih" /home
Group quota on /home (/dev/mapper/centos-home)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
users 20K 0 0 00 [------] 14 0 0 00 [------]
dj 8.5M 0 0 00 [------] 248 0 0 00 [------]
vbird1 16K 0 0 00 [------] 9 0 0 00 [------]
std01 12K 0 0 00 [------] 7 0 0 00 [------]
std02 12K 0 0 00 [------] 7 0 0 00 [------]
std03 12K 0 0 00 [------] 7 0 0 00 [------]
std04 12K 0 0 00 [------] 7 0 0 00 [------]
std05 12K 0 0 00 [------] 7 0 0 00 [------]
myquotagrp 60K 950M 1G 00 [------] 36 0 0 00 [------]
设置grace time 为14天:
[root@study ~] xfs_quota -x -c "timer -b -u 14days" /home
[root@study ~] xfs_quota -x -c "timer -b -g 14days" /home
[root@study ~] xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #47744 (3 blocks, 3 extents)
Group quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #47745 (4 blocks, 4 extents)
Project quota state on /home (/dev/mapper/centos-home)
Accounting: OFF
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Blocks grace time: [14 days] 这里变成了设置的14天
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
以myquota1用户测试磁盘配额是否真的实际运行:
[root@study ~] su - myquota1
[myquota1@study ~]$ dd if=/dev/zero of=123.img bs=1M count=310
dd: 写入"123.img" 出错: 超出磁盘限额
记录了300+0 的读入
记录了299+0 的写出
313524224字节(314 MB)已复制,0.546213 秒,574 MB/秒
[myquota1@study ~]$ ll -h
总用量 299M
-rw-r--r--. 1 myquota1 myquotagrp 299M 6月 11 14:21 123.img
[myquota1@study ~]$ exit
登出
[root@study ~] xfs_quota -x -c "report -ubh" /home
User quota on /home (/dev/mapper/centos-home)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 0 0 0 00 [0 days]
dj 8.5M 0 0 00 [------]
vbird1 16K 0 0 00 [------]
vbird2 20K 0 0 00 [------]
std01 12K 0 0 00 [------]
std02 12K 0 0 00 [------]
std03 12K 0 0 00 [------]
std04 12K 0 0 00 [------]
std05 12K 0 0 00 [------]
myquota1 299.0M 250M 300M 00 [13 days] 因为这个用户的磁盘使用量已经爆表,所以会出现可怕的grace time
myquota2 12K 250M 300M 00 [------]
myquota3 12K 250M 300M 00 [------]
myquota4 12K 250M 300M 00 [------]
myquota5 12K 250M 300M 00 [------]
至此,完成磁盘配额的制作。
14.1.6 实践4:project的限制(针对目录限制)(Optional)
如果需要限制的是目录/home/myquota,而不是用户组myquotagrp时,使用下面的方法。
先取消group的设置,才能进行project的设置,两者只能二选一。
修改/etc/fstab
内的文件系统支持参数:
[root@study ~] vim /etc/fstab
修改第四行,换掉第二个参数:
/dev/mapper/centos-home /home xfs defaults,usrquota,prjquota 0 0
[root@study ~] umount /home
[root@study ~] mount -a
[root@study ~] xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #47744 (3 blocks, 3 extents)
Group quota state on /home (/dev/mapper/centos-home) 已经取消了
Accounting: OFF
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Project quota state on /home (/dev/mapper/centos-home) 确实启动了
Accounting: ON
Enforcement: ON
Inode: #47745 (4 blocks, 4 extents)
Blocks grace time: [14 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
规范目录、选项名称(project)与选项ID:
[root@study ~] echo "11:/home/myquota">>/etc/projects
[root@study ~] echo "myquotaproject:11">> /etc/projid
[root@study ~] xfs_quota -x -c "project -s myquotaproject"
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion depth infinite (-1).
[root@study ~] xfs_quota -x -c "print " /home
Filesystem Pathname
/home /dev/mapper/centos-home (uquota, pquota)
/home/myquota /dev/mapper/centos-home (project 11, myquotaproject)
[root@study ~] xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 307.6M 0 0 00 [------] 351 0 0 00 [------]
myquotaproject 0 0 0 00 [------] 1 0 0 00 [------]
实际设置规范与测试:
[root@study ~] xfs_quota -x -c "limit -p bsoft=450M bhard=500M myquotaproject" /home
[root@study ~] xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 307.6M 0 0 00 [------] 351 0 0 00 [------]
myquotaproject 0 450M 500M 00 [------] 1 0 0 00 [------]
连root在该目录创建过大文件也会被阻止,这才是完整的针对目录的规范:
[root@study ~] dd if=/dev/zero of=/home/myquota/123.img bs=1M count=510
dd: 写入"/home/myquota/123.img" 出错: 设备上没有空间
记录了501+0 的读入
记录了500+0 的写出
524288000字节(524 MB)已复制,0.795924 秒,659 MB/秒
这样,就可以对指定的目录进行容量限制,不必管里面的文件所属者。
14.1.7 xfs磁盘配额的管理与额外命令对照表
不多完美的系统,都要为可能的突发状况准备应对方案。
暂时关闭磁盘配额限制功能:
[root@study ~] xfs_quota -x -c "disable -up" /home
[root@study ~] xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: OFF
Inode: #47744 (3 blocks, 3 extents)
Group quota state on /home (/dev/mapper/centos-home)
Accounting: OFF
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Project quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Blocks grace time: [14 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
此时,可以写入大小超标的文件:
[root@study ~] dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
记录了520+0 的读入
记录了520+0 的写出
545259520字节(545 MB)已复制,0.609748 秒,894 MB/秒
[root@study ~] xfs_quota -x -c "report -pbh" /home
Project quota on /home (/dev/mapper/centos-home)
Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
#0 307.6M 0 0 00 [------]
myquotaproject 520M 450M 500M 00 [-none-]
重新开启磁盘配额功能:
[root@study ~] xfs_quota -x -c "enable -up" /home
[root@study ~] dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
dd: 写入"/home/myquota/123.img" 出错: 设备上没有空间
记录了501+0 的读入
记录了500+0 的写出
524288000字节(524 MB)已复制,0.612934 秒,855 MB/秒
完全关闭磁盘配额功能:
[root@study ~] xfs_quota -x -c "off -up" /home
这时无法通过enable重启:
[root@study ~] xfs_quota -x -c "enable -up" /home
XFS_QUOTAON: 函数未实现
只能通过重新卸载后再挂载:
[root@study ~] umount /home;mount -a
重新挂载后磁盘配额功能自动恢复正常:
[root@study ~] xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #47744 (3 blocks, 3 extents)
Group quota state on /home (/dev/mapper/centos-home)
Accounting: OFF
Enforcement: OFF
Inode: #47745 (4 blocks, 4 extents)
Project quota state on /home (/dev/mapper/centos-home)
Accounting: ON
Enforcement: ON
Inode: #47745 (4 blocks, 4 extents)
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]
删除project:
[root@study ~] xfs_quota -x -c "off -up" /home
[root@study ~] xfs_quota -x -c "remove -p" /home
[root@study ~] umount /home;mount -a 即使是重新挂载也无法恢复
[root@study ~] xfs_quota -x -c "report -phb" /home
Project quota on /home (/dev/mapper/centos-home)
Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
#0 307.6M 0 0 00 [------]
myquotaproject 500M 0 0 00 [------] soft和hard全是0,说明删除了所有限制值
14.1.8 不修改既有系统的磁盘配额实例
就是你主机上没新的空间了,而且也无法跨文件系统来设计磁盘配额的project功能,但是还想让某个文件夹大小固定。不太懂,等后面用到再学习。
14.2 软件磁盘阵列(Software RAID)
14.2.1 RAID的概念
通过技术(软件或硬件)将多个较小的磁盘整合成为一个较大的磁盘设备,这个较大的磁盘功能不只是存储,还具有数据保护的功能。整个RAID由于选择的级别level不同,使整合后的磁盘具有不同的功能,level如下:
level | 介绍 |
---|---|
RAID 0 | 使用多块相同大小型号的磁盘性能最佳,磁盘块数越多性能越好,因为每块负责的数据量低了;但是风险大!只要有一块磁盘损坏,所有数据全都丢失 |
RAID 1 | 镜像模式,能完整备份。最好是相同的磁盘。让同一份数据,完整地保存在两块磁盘上面。使用磁盘阵列卡主动复制内容,而不使用系统的I/O总线,性能过关。 |
RAID 1+0 | 是目前最被推荐的方法!有两组磁盘,每组都先让两块磁盘组成RAID1;将这两组RAID1再组成一组RAID0 |
RAID 0+1 | 有两组磁盘,每组都先让两块磁盘组成RAID0;将这两组RAID0再组成一组RAID1 |
RAID 5 | 性能与数据备份的均衡考虑;至少需要3块磁盘,使用一块磁盘的容量在存储时进行奇偶校验,仅支持一块磁盘损坏 |
RAID 6 | 在RAID5的基础上,可以允许两块磁盘同时损坏 |
Spare Disk(热备份磁盘):
让系统可以实时在硬盘坏掉时主动重建,无需手动拔插硬盘
磁盘阵列优点:
- 数据安全与可靠性:不是网络信息安全,是硬件损坏时数据是否安全
- 读写性能能得到提高(RAID 0及其衍生物)
- 容量能变得很大
14.2.2 硬件RAID,软件RAID
因为硬件贵,所以用软件的手段也能实现
14.2.3 软件磁盘阵列的设置
- 利用4个分区组成RAID 5
- 每个分区约1G,需要确定每个分区一样大较佳
- 将1个分区设置为热备份磁盘
- chunk设置为256KB这么大即可
- 这个热备份磁盘的大小与其他RAID所需分区一样大
- 将此RAID5设备挂载到/srv/raid目录下
[root@study ~] gdisk /dev/sda 操作分区
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n n表示创建分区
Partition number (8-128, default 8): (默认顺着往下来)
First sector (34-83886046, default = 71288832) or {+-}size{KMGTP}: (默认顺着往下来)
Last sector (71288832-83886046, default = 83886046) or {+-}size{KMGTP}: +1G(给1G大小空间)
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L (这里通过L查询代码代表的内容)
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot
4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS
7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved
8200 Linux swap 8300 Linux filesystem 8301 Linux reserved
8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM
a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap
a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID
a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap
a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum
a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS
a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted
a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+
af01 Apple RAID af02 Apple RAID offline af03 Apple label
af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot
bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300): fd00 (这里要选择的是fd00 Linux RAID)
Changed type of partition to 'Linux RAID'
Command (? for help): p 查看当前的情况
Disk /dev/sda: 83886080 sectors, 40.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9739A8E8-08C1-4F8A-9EF8-DB0947CDEE7C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 2113469 sectors (1.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00
4 65026048 67123199 1024.0 MiB 8300 Linux filesystem
5 67123200 69220351 1024.0 MiB 0700 Microsoft basic data
6 69220352 70268927 512.0 MiB 8200 Linux swap
7 70268928 71288831 498.0 MiB 0700 primary
8 71288832 73385983 1024.0 MiB FD00 Linux RAID
9 73385984 75483135 1024.0 MiB FD00 Linux RAID
10 75483136 77580287 1024.0 MiB FD00 Linux RAID
11 77580288 79677439 1024.0 MiB FD00 Linux RAID
12 79677440 81774591 1024.0 MiB FD00 Linux RAID
Command (? for help): w ===================> 这里千万别忘了写入
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
这样才算是写入成功了。
[root@study ~] lsblk 看一下磁盘情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 30G 0 part
│ ├─centos-root 253:0 0 10G 0 lvm /
│ ├─centos-swap 253:1 0 1G 0 lvm [SWAP]
│ └─centos-home 253:2 0 5G 0 lvm /home
├─sda4 8:4 0 1G 0 part /data/xfs
├─sda5 8:5 0 1G 0 part
├─sda6 8:6 0 512M 0 part [SWAP]
└─sda7 8:7 0 498M 0 part /data/win
sr0 11:0 1 10.3G 0 rom /run/media/root/CentOS 7 x86_64
loop0 7:0 0 512M 0 loop /data/file
虽然不想承认,但是不得不说,这个例子目前在虚拟机中实现不了了。
正常情况下应该是:
mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256K --raid-devices=4 --spare-devices=1 /dev/sda{8,9,10,11,12}
mdadm --detail /dev/md0
14.3 逻辑卷管理器(LVM)
解决的问题是:初始规划主机分配的容量不合理,后续想调整的时候,如何避免麻烦复杂繁琐的拷贝。
LVM可以弹性地调整文件系统的容量。
LVM可以整合多个物理分区,让这些分区看起来就像是一个磁盘一样。而且未来还能在这个LVM管理的磁盘中新增或删除其他物理分区。
14.3.1 LVM:PV、VG、PE、LV的意义
LVM将几个物理的分区(或磁盘)通过软件组合成一块看起来是独立的大盘(VG
),然后将这块大磁盘经过划分得到可用的分区(LV
),最后就能够挂载使用了。
(1)物理卷(PV
):通过gdisk
调整实际分区的系统标识符(system ID
)成为8e
(LVM的标识符),然后经过pvcreate
命令将它转成LVM最底层的物理卷PV,之后这些PV才能使用。
(2)卷组(VG
):LVM组合后得到的大磁盘。
(3)物理扩展块(PE
):
- LVM 默认使用 4MB 的 PE 数据块,LVM 的 LV 在 32 位系统上最多仅能含 65534 个 PE,因此默认的 LVM 的 LV 会有
4MB*65534/(1024M/G)=256GB
。 - PE是整个LVM最小的存储数据单位,我们的文件数据存储都是借由写入
PE
来完成的。 - PE有点像文件系统里的
block
大小。 - 调整PE会影响到LVM的最大容量。64位系统不存在这个问题。
(4)逻辑卷(LV
):VG会被切成LV,这个LV就是最后可以被格式化使用的类似分区的东西。不能随意指定大小,大小与在此LV内的PE总数有关。LV设备文件名通常为/dev/vgname/lvname
。
LVM可以弹性修改文件系统的容量,靠的就是【交换 PE】来进行数据交换的。将原本LV内的PE转移到其他设备中以降低LV容量,或将其他设备的PE加入到次LV中以加大容量。
写入到LV中的数据,有两种方式写入到硬盘:
- 线性模式:将两个分区加入到VG中,且VG中只有1个LV时,一个分区用完,再用另一个分区。(推荐)
- 交错模式:将一条数据拆成两部分,分别写入两个分区。
LVM最大的优势在于弹性管理整个分区的大小,而不是着眼于性能。
14.3.2 LVM实践流程
由于前面5个分区没装好,这里依然玩不起来,丧!