目录
🍁文件系统
🍂虚拟机添加磁盘
🍂磁盘分区方式
🍂分区格式化
🍂挂载磁盘
🍁磁盘高级管理
🍂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 #创建pv
Physical 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 lvm2
Found volume group "mailbox" using metadata type lvm2
[root@localhost ~]# vgdisplay mailbox #查看卷组状态
--- Volume group ---
VG Name mailbox
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size <39.97 GiB
PE Size 16.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / <39.97 GiB
VG 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/mail1
LV Name mail1
VG Name mailbox
LV UUID CahigK-NdHF-QubM-jBwM-TS3L-xgTf-20n3eg
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-03-04 10:43:49 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 640
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block 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逻辑卷mail2
Logical volume "mail2" created.
[root@localhost ~]# lvdisplay /dev/mailbox/mail2 #查看逻辑卷mail2
--- Logical volume ---
LV Path /dev/mailbox/mail2
LV Name mail2
VG Name mailbox
LV UUID ftxk6Y-Luwl-thVS-1tHH-6pTH-93sk-GTvznI
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-03-04 10:46:50 +0800
LV Status available
# open 0
LV Size 15.62 GiB
Current LE 1000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block 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加到15G
Size 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 mailbox
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 3
Act PV 3
VG Size 59.95 GiB
PE Size 16.00 MiB
Total PE 3837
Alloc PE / Size 1960 / 30.62 GiB
Free PE / Size 1877 / <29.33 GiB
VG UUID I9dvdd-VKKf-0Y0f-hxKo-Ivld-Ed4y-i9oFgR
[root@localhost ~]# lvextend -L 30G /dev/mailbox/mail1 #扩充mail1到30G
Size 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逻辑卷加4G
Size 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文件系统磁盘配额
-
创建test1用户
-
创建挂载目录
-
给目录其他人权限
-
重新挂载
-
生成配额文件 quotacheck /data
-
开启配额功能 quotaon /data 关闭配额功能: qutoaoff /data
-
编辑用户配额 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文件系统磁盘配额
-
创建用户 user1
-
创建挂载目录
-
编辑用户配额(也可以给组配额)
-
给挂载目录其他人权限
-
切换用户验证配额的效果
-
可以使用edquota -u 用户名 修改用户的磁盘配额
-
开启配额功能 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 chunks
unused 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