Linux raid配置

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

你可能感兴趣的:(linux)