> 文章列表 > 【Linux进阶篇】磁盘及分区

【Linux进阶篇】磁盘及分区

【Linux进阶篇】磁盘及分区

目录

🍁文件系统

🍂虚拟机添加磁盘

🍂磁盘分区方式

🍂分区格式化

🍂挂载磁盘

🍁磁盘高级管理

🍂LVM:逻辑卷

🍃创建PV 物理卷

🍃创建VG 卷组

🍃创建LV 划分逻辑卷

🍃重新计算磁盘容量

🍂LVM案例

🍂添加磁盘配额功能

🍃ext4文件系统磁盘配额

🍃xfs文件系统磁盘配额

🍂VDO

🍂stratis(centos8)

🍂raid


  🦐博客主页:大虾好吃吗的博客

  🦐专栏地址:Linux从入门到精通

文件系统

        操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构; ​ 即在存储设备上组织文件的方法。 ​ linux常见的文件系统:

        EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。

(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB

(2)理论上支持无限数量的子目录

(3)Ext4文件系统使用64位空间记录块数量和i-节点数量

(4)Ext4的多块分配器支持一次调用分配多个数据块

        xfs是一种非常优秀的日志文件系统,SGI公司设计的,被称为业界最先进的、最具可升级性的文件系统技术

(1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容

(2)采用优化算法,日志记录对整体文件操作影响非常小

(3)是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间

(4)能以接近裸设备I/O的性能存储数据

虚拟机添加磁盘

        关机添加磁盘,系统自动识别 或 开机添加磁盘,需要使用下面命令识别

echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan 
fdisk -l

磁盘分区方式

        MBR:主引导记录,支持4主或3主1扩展多逻辑,每分区最大2TB,兼容性好。

        GPT:是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。 分区命令

1. fdisk分区方式

[root@localhost ~]# fdisk /dev/sdb

p: 显示当前硬件的分区,包括没有保存的改动 ​

n: 创建一个新的分区 ​

d:删除一个分区 ​

w: 保存并退出 ​

q: 不保存退出 ​

t: 修改分区类型(文件系统类型)

​l: 显示所支持的所有类型

2. gdisk分区方式

[root@localhost ~]# gdisk /dev/sdb

p: 显示当前硬件的分区,包括没有保存的改动

n: 创建一个新的分区

d:删除一个分区

w: 保存并退出

q: 不保存退出

t: 修改分区类型(文件系统类型)

l: 显示所支持的所有类型

分区号码有区别:fdisk 82   gdisk 8200 

分区格式化

格式化文件系统分别为ext4和xfs

mkfs.ext4 /dev/sdb1
mkfs.xfs  /dev/sdc1

挂载磁盘

1. 临时挂载

[root@localhost ~]# mount /dev/sdb1 /mnt

2. 永久挂载

[root@localhost ~]# vim /etc/fstab
/dev/sdb1   /mnt    xfs defaults  0 0

磁盘高级管理

LVM:逻辑卷

        从卷组中分割的一块空间,用于建立文件系统,动态调整分区大小,扩展性好

创建PV 物理卷

pvcreate :将实体 partition 创建成为 PV 例: pvcreate /dev/sdb1 /dev/sdc1

pvscan :搜寻目前系统里面任何具有 PV 的磁盘;

pvdisplay :显示出目前系统上面的 PV 状态;

pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性

创建VG 卷组

vgcreate :创建 VG 的 (-s :后面接 PE 的大小,默认4M)例:vgcreate -s 16m mailbox /dev/sdb1 /dev/sdc1;

vgscan :搜寻系统上面是否有 VG 存在;

vgdisplay :显示目前系统上面的 VG 状态;

vgextend :在 VG 内增加额外的 PV 例:vgextend vg1 /dev/sdd4 /dev/sdb5;

vgreduce :在 VG 内移除 PV;

vgchange :设置 VG 是否启动 (active);

vgremove :删除一个 VG;

创建LV 划分逻辑卷

lvcreate :创建 LV -n 名称 -L 空间大小(<vg) 例:lvcreate -n mail2 -l 1000 mailbox

lvscan :查询系统上面的 LV ;

lvdisplay :显示系统上面的 LV 状态

lvextend :在 LV 里面增加容量!

lvreduce :在 LV 里面减少容量;

lvremove :删除一个 LV

lvresize :对 LV 进行容量大小的调整

重新计算磁盘容量

重新计算磁盘使其生效 (磁盘在使用中,进行空间的扩展)

resize2fs   卷名              #ext4文件系统
xfs_growfs  卷名              #xfs文件系统

LVM案例

创建卷组mailbox,逻辑卷mail

[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan         #开机加入硬盘需要刷新
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan 
[root@localhost ~]# fdisk -l
[root@localhost ~]# fdisk /dev/sdb                                      n-p-回车-回车-回车-w
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# fdisk /dev/sdd
[root@localhost ~]# fdisk -l                                            #查看三个硬盘是否添加成功
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1                        #创建pvPhysical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# vgcreate -s 16m mailbox /dev/sdb1 /dev/sdc1         #创建vg卷组,-s指定PE大小Volume group "mailbox" successfully created
[root@localhost ~]# vgscan                                              #扫描卷组Reading volume groups from cache. Found volume group "centos" using metadata type lvm2Found volume group "mailbox" using metadata type lvm2[root@localhost ~]# vgdisplay mailbox                                 #查看卷组状态--- Volume group ---VG Name               mailboxSystem ID             Format                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               <39.97 GiBPE Size               16.00 MiBTotal PE              2558Alloc PE / Size       0 / 0   Free  PE / Size       2558 / <39.97 GiBVG UUID               I9dvdd-VKKf-0Y0f-hxKo-Ivld-Ed4y-i9oFgR
[root@localhost ~]# lvcreate -n mail1 -L 10G mailbox                #创建lv逻辑卷,名称为mail1,大小为10G,从mailbox卷组拿Logical volume "mail1" created.
[root@localhost ~]# lvdisplay /dev/mailbox/mail1                    #查看逻辑卷状态--- Logical volume ---LV Path                /dev/mailbox/mail1LV Name                mail1VG Name                mailboxLV UUID                CahigK-NdHF-QubM-jBwM-TS3L-xgTf-20n3egLV Write Access        read/writeLV Creation host, time localhost.localdomain, 2023-03-04 10:43:49 +0800LV Status              available# open                 0LV Size                10.00 GiBCurrent LE             640Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2
[root@localhost ~]# mkdir /mail1                                #创建挂载目录
[root@localhost ~]# mkfs.xfs /dev/mailbox/mail1                 #格式化磁盘为xfs格式
meta-data=/dev/mailbox/mail1     isize=512    agcount=4, agsize=655360 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/mailbox/mail1 /mail1/            #挂载mail1
[root@localhost ~]# lvcreate -n mail2 -l 1000 mailbox           #创建lv逻辑卷mail2Logical volume "mail2" created.
[root@localhost ~]# lvdisplay /dev/mailbox/mail2                #查看逻辑卷mail2--- Logical volume ---LV Path                /dev/mailbox/mail2LV Name                mail2VG Name                mailboxLV UUID                ftxk6Y-Luwl-thVS-1tHH-6pTH-93sk-GTvznILV Write Access        read/writeLV Creation host, time localhost.localdomain, 2023-03-04 10:46:50 +0800LV Status              available# open                 0LV Size                15.62 GiBCurrent LE             1000Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:3
[root@localhost ~]# mkdir /mail2                                #创建mail2挂载目录
[root@localhost ~]# mkfs.xfs /dev/mailbox/mail2                 #格式化mail2为xfs格式
meta-data=/dev/mailbox/mail2     isize=512    agcount=4, agsize=1024000 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4096000, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/mailbox/mail2 /mail2             #挂载mail2
[root@localhost ~]# echo "/dev/mailbox/mail1  /mail1  xfs  defaults 0 0" >> /etc/fstab          #永久挂载
[root@localhost ~]# echo "/dev/mailbox/mail2  /mail2  xfs  defaults 0 0" >> /etc/fstab 
[root@localhost ~]# cat /etc/fstab              #查看刚才文件是否插入进去,下面省略部分内容
[root@localhost ~]# vgdisplay mailbox           #查看mailbox卷组还有多少G
#省略部分内容
[root@localhost ~]# lvextend -L 15G /dev/mailbox/mail1          #给mail1加到15GSize of logical volume mailbox/mail1 changed from 10.00 GiB (640 extents) to 15.00 GiB (960 extents).Logical volume mailbox/mail1 successfully resized.
[root@localhost ~]# xfs_growfs /dev/mailbox/mail1               #重新计算磁盘容量
meta-data=/dev/mapper/mailbox-mail1 isize=512    agcount=4, agsize=655360 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 3932160 
[root@localhost ~]# lvextend -L 30G /dev/mailbox/mail1              #给mail1加30G发现保存,原因是vg容量不够,需要扩容Insufficient free space: 960 extents needed, but only 598 available
[root@localhost ~]# vgextend mailbox /dev/sdd1                      #把sdd1磁盘给mailbox卷组Physical volume "/dev/sdd1" successfully created.Volume group "mailbox" successfully extended
[root@localhost ~]# vgdisplay mailbox                               #查看卷组是否为3个pv且磁盘容量正确--- Volume group ---VG Name               mailboxSystem ID             Format                lvm2Metadata Areas        3Metadata Sequence No  5VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                2Open LV               2Max PV                0Cur PV                3Act PV                3VG Size               59.95 GiBPE Size               16.00 MiBTotal PE              3837Alloc PE / Size       1960 / 30.62 GiBFree  PE / Size       1877 / <29.33 GiBVG UUID               I9dvdd-VKKf-0Y0f-hxKo-Ivld-Ed4y-i9oFgR
[root@localhost ~]# lvextend -L 30G /dev/mailbox/mail1              #扩充mail1到30GSize of logical volume mailbox/mail1 changed from 15.00 GiB (960 extents) to 30.00 GiB (1920 extents).Logical volume mailbox/mail1 successfully resized.
[root@localhost ~]# xfs_growfs /dev/mailbox/mail1                   #重新计算磁盘容量
meta-data=/dev/mapper/mailbox-mail1 isize=512    agcount=6, agsize=655360 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3932160, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 3932160 to 7864320
[root@localhost ~]# df -hT                                  #查看磁盘大小
文件系统                  类型      容量  已用  可用 已用% 挂载点
devtmpfs                  devtmpfs  470M     0  470M    0% /dev
tmpfs                     tmpfs     487M     0  487M    0% /dev/shm
tmpfs                     tmpfs     487M  9.3M  477M    2% /run
tmpfs                     tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   xfs        17G  7.3G  9.8G   43% /
/dev/sda1                 xfs      1014M  173M  842M   18% /boot
tmpfs                     tmpfs      98M   56K   98M    1% /run/user/0
/dev/mapper/mailbox-mail1 xfs        30G   33M   30G    1% /mail1
/dev/mapper/mailbox-mail2 xfs        16G   33M   16G    1% /mail2
[root@localhost ~]# lvextend -L +4G /dev/mailbox/mail2          #给mail2逻辑卷加4GSize of logical volume mailbox/mail2 changed from 15.62 GiB (1000 extents) to 19.62 GiB (1256 extents).Logical volume mailbox/mail2 successfully resized.  
[root@localhost ~]# xfs_growfs /dev/mailbox/mail2  

添加磁盘配额功能

指定用户存放大小,临时挂载、永久挂载

mount -o usrquota,grpquota /挂载盘 /挂载点
echo "/挂载盘  /挂载点  xfs defaults,usrquota,grpquota 0 0" >> /etc/fstab

ext4文件系统磁盘配额

  1. 创建test1用户

  2. 创建挂载目录

  3. 给目录其他人权限

  4. 重新挂载

  5. 生成配额文件 quotacheck /data

  6. 开启配额功能 quotaon /data 关闭配额功能: qutoaoff /data

  7. 编辑用户配额 edquota -u test 单位:KB 1024KB=1M 1024M=1GB

[root@localhost ~]# useradd test1               #创建用户
[root@localhost ~]# mkdir /ext4_data            #创建目录
[root@localhost ~]# chmod 777 /ext4_data/       #赋予权限
[root@localhost ~]# mount -o usrquota,grpquota,defaults /dev/mailbox/mail1 /ext4_data/              #重新挂载
[root@localhost ~]# quotaon -ugv /dev/mailbox/mail1                                                 #启用配额
quotaon: Enforcing group quota already on /dev/mapper/mailbox-mail1
quotaon: Enforcing user quota already on /dev/mapper/mailbox-mail1
[root@localhost ~]# edquota -u test1                        #针对用户配额;(针对组配额 edquota -g 组名)
Disk quotas for user test1 (uid 1002):Filesystem                   blocks       soft       hard     inodes     soft     hard/dev/mapper/mailbox-mail2          0          0          0          0        0        0/dev/mapper/mailbox-mail1          0          10M        30M        0        3        5
#注:选择挂载的磁盘,soft为软限额;hard为硬限额(第一个组合为大小,第二个组合为个数):wq保存退出
bsoft:软配额限制,限制10Mb警告但不强制
bhard:硬配额限制,限制最多为30Mb
isoft:文件数超过3个警告
ihard:文件数5个后不可在创建
​
#切换用户验证
[root@localhost ~]# su - test1              #切换test1
Attempting to create directory /home/test1/perl5
[test1@localhost ~]$ cd /ext4_data/         #进入/ext4_data/目录
[test1@localhost ext4_data]$ touch file{1..6}       #创建6个文件(配额限制最多创建5个)
touch: 无法创建"file6": 超出磁盘限额
[test1@localhost ext4_data]$ dd if=/dev/zero of=/ext4_data/file1 bs=10M count=5     #使用漏斗命令测试大小(配额限制最多30Mb)
dd: 写入"/ext4_data/file1" 出错: 超出磁盘限额
记录了4+0 的读入
记录了3+0 的写出
31457280字节(31 MB)已复制,0.103206 秒,305 MB/秒
[test1@localhost ext4_data]$ ll -h file1                    #查看大小限制
-rw-rw-r--. 1 test1 test1 30M 3月   4 13:16 file1
[test1@localhost ext4_data]$ ls                             #查看数量限制
file1  file2  file3  file4  file5

xfs文件系统磁盘配额

  1. 创建用户 user1

  2. 创建挂载目录

  3. 编辑用户配额(也可以给组配额)

  4. 给挂载目录其他人权限

  5. 切换用户验证配额的效果

  6. 可以使用edquota -u 用户名 修改用户的磁盘配额

  7. 开启配额功能 quotaon /data 关闭配额功能: qutoaoff /data

[root@localhost ~]# useradd user1                       #创建用户
[root@localhost ~]# mkdir /xfs_data                     #创建挂载目录
[root@localhost ~]# mount -o usrquota,grpquota /dev/mailbox/mail2 /xfs_data/                                #挂载并启用配额
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isoft:3 ihard:5 user1' /xfs_data/         #编辑用户配额
[root@localhost ~]# chmod 777 /xfs_data/                #赋予权限
#切换用户验证
[root@localhost ~]# su - user1                          #切换user1用户
[user1@localhost ~]$ cd /xfs_data/                      #进入挂载目录
[user1@localhost xfs_data]$ touch file{1..10}           #创建file1到10,最多可以创建5个
touch: 无法创建"file6": 超出磁盘限额
touch: 无法创建"file7": 超出磁盘限额
touch: 无法创建"file8": 超出磁盘限额
touch: 无法创建"file9": 超出磁盘限额
touch: 无法创建"file10": 超出磁盘限额
[user1@localhost xfs_data]$ ls                          #查看数量限制
file1  file2  file3  file4  file5
[user1@localhost xfs_data]$ dd if=/dev/zero of=/xfs_data/file1 bs=10M count=6       #使用漏斗命令给file1文件输入大于50Mb
dd: 写入"/xfs_data/file1" 出错: 超出磁盘限额
记录了6+0 的读入
记录了5+0 的写出
52428800字节(52 MB)已复制,0.122502 秒,428 MB/秒
[user1@localhost xfs_data]$ ll -h file1                 #查看大小限制
-rw-rw-r--. 1 user1 user1 50M 3月   4 12:36 file1
[root@localhost ~]# edquota -u user1                    #该命令可以给user1修改配额
[root@localhost ~]# quotaoff /xfs_data/                 #关闭配额功能
[root@localhost ~]# quotaon /xfs_data/                  #开启配额功能
注:
bsoft:软配额限制,限制30Mb警告但不强制
bhard:硬配额限制,限制最多为50Mb
isoft:文件数超过3个警告
ihard:文件数5个后不可在创建

不只可以给用户配额,也可以通过下面命令给组配额,原理与上面相同

[root@localhost ~]# xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isoft:3 ihard:5 组名' 挂载目录  

修复文件系统

xfs_repair /dev/sdb1

检测磁盘坏道

badblocks -sv /dev/sdb

重新挂载

mount -o remount /挂载点或设备名

xfs备份/还原

xfsdump -f 备份存放路径 /dev/sdb1
xfsrestore -f 备份路径的文件 /还原到那个目录

VDO

        Virtual Data Optimizer 通过数据去重、压缩的方式来优化存储空间,vdo最大的作用就是节省硬盘空间,可以做到1TB的硬盘,存放3TB的数据甚至更多。VDO靠的就是删除和压缩解压缩技术,去重就是把硬盘里相同的数据以前要存多份,现在会把多余的删掉,只留一份,压缩算法来节省空间。

(1) 安装

[root@localhost ~]# yum -y install vdo

(2) vdo 命令语法

    create              创建一个VDO卷及其关联索引使其可用。remove              删除一个或多个已停止的VDO卷和相关卷索引。modify              修改一个或所有VDO的配置参数卷。更改将在VDO下次运行时生效设备启动;已经运行的设备则不是受到影响。list                显示已启动VDO卷的列表。如果,所有指定它同时显示已启动和未启动卷。start               启动一个或多个已停止、激活的VDO卷相关的服务。status              以YAML格式报告VDO系统和卷状态。但是,这个命令不需要root特权如果没有,信息将是不完整的。stop                停止一个或多个正在运行的VDO卷和相关卷服务。activate            激活一个或多个VDO卷。激活卷可以使用“开始”命令启动。deactivate          使一个或多个VDO卷失效。停用不能通过“start”命令启动卷。停用当前正在运行的卷不会停止它。growLogical         增加VDO卷的逻辑大小。卷必须存在并且必须正在运行。growPhysical        增加VDO卷的物理大小。卷必须存在并且必须正在运行。

(3) vdo卷案例:把20G的磁盘创建一个60G大小的vdo卷

[root@localhost ~]# vdo create --name=vdo1 --device=/dev/sdf1 --vdoLogicalSize=60G
Creating VDO vdo1
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 1 volume is ready at /dev/mapper/vdo1

(4) 查看vdo卷

[root@localhost ~]# vdo list
vdo1
[root@localhost ~]# lsblk /dev/sdf
NAME     MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdf        8:80   0  20G  0 disk 
└─sdf1     8:81   0  20G  0 part └─vdo1 253:4    0  60G  0 vdo

(5) 格式化vdo卷

[root@localhost ~]# mkfs.xfs /dev/mapper/vdo1

(6) 查看vdo卷属性

[root@localhost ~]# vdostats --si
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         21.5G      4.3G     17.2G  20%           99%
[root@localhost ~]# blkid /dev/mapper/vdo1
/dev/mapper/vdo1: UUID="bdf896be-8cf7-4881-b61b-73847a2e7e17" TYPE="xfs"

(7) 自动挂载

[root@localhost ~]# mkdir /vdo_data
[root@localhost ~]# mount /dev/mapper/vdo1 /vdo_data/
[root@localhost ~]# echo "/dev/mapper/vdo1    /vdo_data      xfs     x-systemd.requires=vdo.service  0 0" >> /etc/fstab

(8) 删除vdo卷

[root@localhost ~]# umount /vdo_data
[root@localhost ~]# vdo remove --name=vdo1
Removing VDO vdo1
Stopping VDO vdo1

stratis(centos8)

        便捷的使用精简置备(Thin Provisioning)、快照(Snapshots)、基于池(Pool-based)的管理和监控等高级存储功能;基于xfs文件系统格式,创建filesystem后不需要格式化

(1) 安装stratis

yum install -y stratisd stratis-cli
systemctl enable stratisd

(2) 创建pool池,大于1G

stratis pool create pool-one /dev/sda1
stratis pool list

(3) 向已经存在的pool池中添加块设备

stratis pool add-data pool-one /dev/sda2

(4) 同时将两块块设备添加到同一个pool池中

stratis pool create pool-two /dev/sda3 /dev/sda4

(5) 查看pool-one池和pool-two池中所使用的块设备

stratis blockdev list pool-one
stratis blockdev list pool-two

(6) 在pool-one池中创建filesystem(一次只能创建一个filesystem)

stratis filesystem create pool-one file-one
stratis filesystem list

(7) 挂载filesystem

mkdir /fsdir
mount /stratis/pool-one/file-one /fsdir/

(8) 永久挂载

blkid /stratis/pool-one/file-one
echo "UUID=deeb42ce-5715-42ca-b33a-fcbfece6dd0a     /fsdir   xfs   defaults    0 0" >> /etc/fstab

raid

磁盘阵列(Redundant Arrays of Independent Disks)由独立磁盘构成的具有冗余能力的阵列。

Raid 0(条带): 读写速度得到提升,但不具备数据冗余,不推荐,最少2块硬盘
Raid 1(镜像): 写性能下降,读性能提升,相反冗余能力提升。但磁盘利用率是1/2,最少2块硬盘
Raid 1+0: 同组不能都坏掉,目前主流的方案。最少4块
Raid 0+1: 同组都可以坏,不能是不同组的相同标号。最少4块硬盘
Raid 0+1 和Raid1+0的空间利用率都是1/2
Raid 5(校验码机制):读写都提升,冗余有,空间利用率(n-1)/n 只能坏一块。最少3块硬盘
Raid 5+0:具有RAID 5和RAID 0的共同特性。它由两组以上RAID 5磁盘组成(每组最少3个)。
Raid 6 可以看做是raid5的升级版,它支持同时损坏2块磁盘。最少是4块盘
Raid 7 可以看做是raid5的升级版,它支持同时损坏3块磁盘。最少是5块盘

(1) 分区

echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan 
fdisk -l
[root@localhost ~]# gdisk /dev/sdb          #分区为sdb1、sdb2
#文件分区类型选FD00,其他磁盘根据需求分区

(2)创建raid0,查看raid设备,挂载

[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 sdb2[1] sdb1[0]20950528 blocks super 1.2 512k chunksunused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0       #查看raid0详细信息
#省略部分内容 
[root@localhost ~]# mkfs.xfs /dev/md0       #格式化为xfs格式
#省略部分内容
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# echo "/dev/md0 /raid0 xfs default 0 0" >> /etc/fstab

(3) 创建raid1

[root@localhost ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdc /dev/sdd
#省略部分内容
[root@localhost ~]# mdadm -D /dev/md1
#省略部分内容
[root@localhost ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1               isize=512    agcount=4, agsize=1309632 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5238528, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/md1 /backup
[root@localhost ~]# echo "/dev/md1 /backup xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdc          #模拟损坏
mdadm: set /dev/sdc faulty in /dev/md1
[root@localhost ~]# mdadm /dev/md1 -r /dev/sdc          #物理拔出
mdadm: hot removed /dev/sdc from /dev/md1
[root@localhost ~]# mdadm -D /dev/md1                   #查看信息确认已经拔出
#省略部分内容
[root@localhost ~]# mdadm /dev/md1 -a /dev/sde          #添加新盘
mdadm: added /dev/sde
[root@localhost ~]# umount /dev/md1                     #卸载
[root@localhost ~]# mdadm -S /dev/md1                   #关闭md1
mdadm: stopped /dev/md1
[root@localhost ~]# mdadm -A /dev/md1                   #重启md1,结果会报错
mdadm: /dev/md1 not identified in config file.
[root@localhost ~]# mdadm -AR /dev/md1 /dev/sde         #从新声明md1磁盘成员
mdadm: /dev/md1 has been started with 1 drive (out of 2).
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdc          #添加损坏盘
mdadm: added /dev/sdc
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdf          #添加冗余盘
mdadm: added /dev/sdf
[root@localhost ~]# mdadm -S /dev/md1                   #关闭
mdadm: stopped /dev/md1
[root@localhost ~]# mdadm -A /dev/md1                   #启动
mdadm: /dev/md1 has been started with 2 drives and 1 spare.
​
umount /dev/md1                 #卸载
mdadm -S /dev/md1               #关闭md1
mdadm -A /dev/md1               #重启md1,报错(损坏盘)
​
mdadm -AR /dev/md1 /dev/sdb{3,4}    #从新声明md1磁盘成员
mdadm /dev/md1 -a /dev/sdb4     #添加损坏盘
mdadm /dev/md1 -a /dev/sdb5     #添加冗余盘
​
mdadm -D --scan > /etc/mdadm.conf   #扫描并添加raid信息到自启文件
mdadm -S /dev/md1               #重启测试
mdadm -A /dev/md1

(4) 创建raid5

        raid1创建命令与之相同,不过多叙述,创建命令如下

mdadm -Cv /dev/md5 -a yes -n 3 -l 5 -x 2  /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg

(5) 创建raid10

        raid1创建命令与之相同,不过多叙述,创建命令如下

mdadm -Cv /dev/md10 -a yes -n 4 -l 10 -x 1  /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf