【Linux命令】《鸟哥Linux基础》第十四章 磁盘配额(Quota)与高级文件系统管理

第十四章 磁盘配额(Quota)与高级文件系统管理

解决的问题:在多人多任务的环境下,如何公平分配空间。通过磁盘配额完成限制额度。

14.1 磁盘配额(Quota)的应用与实践

14.1.1 磁盘配额概念

磁盘配合的规范设置选项,针对XFS文件系统的限制:

  1. 分别针对用户、用户组、或个别目录(user、group、project)
  2. 容量限制或文件数量限制(block或inode)通过限制inode使用量,可以限制用户建立的文件数量;通过限制block使用量,可以限制用户磁盘容量(常见)
  3. 软限制与硬限制(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 611 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(热备份磁盘):
让系统可以实时在硬盘坏掉时主动重建,无需手动拔插硬盘

磁盘阵列优点:

  1. 数据安全与可靠性:不是网络信息安全,是硬件损坏时数据是否安全
  2. 读写性能能得到提高(RAID 0及其衍生物)
  3. 容量能变得很大

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中的数据,有两种方式写入到硬盘:

  1. 线性模式:将两个分区加入到VG中,且VG中只有1个LV时,一个分区用完,再用另一个分区。(推荐)
  2. 交错模式:将一条数据拆成两部分,分别写入两个分区。

LVM最大的优势在于弹性管理整个分区的大小,而不是着眼于性能。

14.3.2 LVM实践流程

由于前面5个分区没装好,这里依然玩不起来,丧!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值