Raid0:不能容错,但是速度快,至少需要两块磁盘。
Raid1:写性能下降,读性能提升,支持容错,但磁盘利用率为1/2,至少需要两块磁盘。
环境要求:新添加4块磁盘,2块磁盘做Raid0,2块磁盘做Raid1,磁盘大小为5G,系统需要识别到。
Raid0:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
sde 8:64 0 5G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev/sdc
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
mdadm:将任何块设备做成RAID
-C :创建模式
-a :是否创建设备文件,后面需要跟值yes或no
-l :级别
-n :设备数量
查看当前系统上所有启用 了Raid的设备
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc[1] sdb[0]
10475520 blocks super 1.2 512k chunks
unused devices:
格式化:
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2618880, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载:
[root@localhost ~]# mkdir /mnt/yule
[root@localhost ~]# mount /dev/md0 /mnt/yule/
[root@localhost ~]# mount |tail -1
/dev/md0 on /mnt/yule type xfs (rw,relatime,seclabel,attr2,inode64,sunit=1024,swidth=2048,noquota)
PS: 当然这个是临时挂载,也可以加入开机自动挂载,编辑/etc/fstab文件即可,这里不再赘述
复制一个数据进去,然后移除一块磁盘,看一下还能不能访问。
[root@localhost ~]# cd /mnt/yule
[root@localhost yule]# echo zzzzzzzzzzzzzzzzz > z
[root@localhost yule]# echo xxxxxxxxxxxxxxxxxx > x
[root@localhost yule]# ll
总用量 8
-rw-r--r--. 1 root root 19 4月 14 20:12 x
-rw-r--r--. 1 root root 18 4月 14 20:12 z
[root@localhost yule]# cat z\
>
zzzzzzzzzzzzzzzzz
[root@localhost yule]# cat x
xxxxxxxxxxxxxxxxxx
一处一块磁盘后,关闭终端,再打开终端。这是因为刚才写入的数据在缓存里面,没有同步到磁盘里面。
[root@localhost ~]# cd /mnt/yule
[root@localhost yule]# ll
ls: 无法打开目录.: 输入/输出错误
[root@localhost yule]# cd
Raid1:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─md0 9:0 0 10G 0 raid0 /mnt/yule
sdc 8:32 0 5G 0 disk
└─md0 9:0 0 10G 0 raid0 /mnt/yule
sdd 8:48 0 5G 0 disk
sde 8:64 0 5G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdd /dev/sde
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
格式化:
[root@localhost ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=327360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1309440, 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 /mnt/Raid1
[root@localhost ~]# mount /dev/md1 /mnt/Raid1/
[root@localhost ~]# mount |tail -1
/dev/md1 on /mnt/Raid1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
复制一个数据进去,然后模拟一块磁盘损坏,看一下还能不能访问。
[root@localhost ~]# cd /mnt/Raid1/
[root@localhost Raid1]# ll
总用量 0
[root@localhost Raid1]# echo 11111111111111 > 1
[root@localhost Raid1]# echo 222222222222222 > 2
[root@localhost Raid1]# ll
总用量 8
-rw-r--r--. 1 root root 15 4月 14 20:25 1
-rw-r--r--. 1 root root 16 4月 14 20:25 2
然后移除一块磁盘。
[root@localhost Raid1]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Apr 14 20:06:54 2022
Raid Level : raid1
Array Size : 5237760 (5.00 GiB 5.36 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 14 20:27:37 2022
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 29b791ed:e145b3f8:6af71b12:e7aea22e
Events : 20
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
- 0 0 1 removed
1 8 64 - faulty /dev/sde
最后一行faulty ,意思是有缺陷的。
[root@localhost Raid1]# ll
总用量 8
-rw-r--r--. 1 root root 15 4月 14 20:25 1
-rw-r--r--. 1 root root 16 4月 14 20:25 2
[root@localhost Raid1]# cat 1
11111111111111
[root@localhost Raid1]# cat 2
222222222222222