Linux学习-软件磁盘阵列

文章中实例都是基于CentOS7

软件磁盘阵列(SoftwareRAID)

磁盘阵列全名(Redundant Arrays of inexpensive Disks,RAID),中文意思独立冗余磁盘阵列。RAID通过技术(软件或硬件)将多个小的磁盘整合成一个较大的磁盘设备,这个较大的磁盘不止有数据存储功能,还具有数据保护功能,根据选择RAID选择的级别不同,而使得整合后的磁盘具有不同的功能,常见的level有以下几种

RAID0(等量模式,stripe):性能较佳

这种模式使用相同型号与容量的磁盘来组成,效果最好,RAID0会先将磁盘切出等量的数据块(chunk,一般为4KB~1MB),然后当一个文件要写入RAID时,该文件会根据chunk的大小切割好,之后再依序存放到各个磁盘里面去,由于每个磁盘会交错的存放数据,因此当你的数据要写入RAID时,数据会被等量的放置在各个磁盘上面。举例来说,如果你有两块磁盘组成的RAID0,当有100MB数据需要写入时,每个磁盘各被分配到50MB的存储量。
RAID0
在组成RAID0时,每块磁盘(DiskA与DiskB)都会先被分隔成为小数据块(chunk),当有数据写入RAID时,数据先被切割成符合小数据块的大小,然后依序一个一个的放置到不同的磁盘中,由于数据已经先被切割并且依序放置到不同的磁盘上面,因此每块磁盘所负责的数据量就降低了。照这样的情况来看,***越多块的磁盘组成RAID0性能会越好,因为每块负责的数据量就更低了。这样数据可以分散让多块磁盘来存储,当然性能也变得更好。此外,磁盘容量也变大了,因为每块磁盘的容量最终会相加成为RAID0的容量。只是在这种情况下,你必须自行负担数据损坏的风险,由于数据被分割成适合每块磁盘分区大小的块,再依次存储到每个磁盘中,如果有一块磁盘损坏了,那么文件数据将缺少一块,此时这个文件就损坏了,因此***RAID0只要有一块磁盘损坏,数据将会遗失无法读取。

RAID1(镜像模式,mirror):完整备份

RAID1

RAID5

在这里插入图片描述

RAID1+0,RAID0+1

在这里插入图片描述

RAID的优点

  • 数据安全与可靠性:指的并非网络信息安全,而是当硬件(磁盘)损坏时,数据是否还能够安全的恢复或使用。
  • 读写性能:如RAID0加强读写信息,让系统I/O部分得到改善。
  • 容量:可以让多块磁盘组合起来,故单一文件系统可以有相当大的容量。

实战创建RAID

  1. 在虚拟机上添加两块各1G的SCSI磁盘。
  2. 安装mdadm
    [root@localhost scripts]# yum install -y mdadm
    mdadm(multiple devices admin)是一个用于创建、管理、监控RAID设备的工具,它使用linux中的md驱动。mdadm程序是一个独立的程序,能完成所有软件RAID的管理功能。
模式名称主要功能
Assemble加入一个以前定义的陈列
Build创建一个没有超级块的阵列
create创建一个新的阵列,每个设备具有超级块
Manage管理阵列(添加或删除)
Misc允许单独对陈列中的某个设备进行操作
Fllow or Minitor监控RAID的状态
Grow改变RAID的容量或陈列中的设备数目

创建RAID0

通过shell脚本对磁盘(/dev/sdb,/dev/sdc)进行分区

#disklist.conf文件内容
/dev/sdb /dev/sdc
#fdiskscript.sh
ls disklist.conf > /dev/null
if [ $? -ne 0 ];then
 echo '请确认当前目录下存在disklist.conf文件,文件内容为磁盘名称【/dev/sda /dev/sdb等,多个磁盘通过空格进行分隔】'
fi
disklist=`cat disklist.conf` #读取disklist.conf中配置的磁盘名称
for diskname in $disklist;
do
 #fd表示改变磁盘分区类型为fd Linux raid auto 
 fdisk $diskname << EOF 
n




t
fd
w
EOF
done

脚本执行完成后,会产生以下的运行结果

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x782ce4e2.

Command (m for help): Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): Using default response p
Partition number (1-4, default 1): First sector (2048-2097151, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): Selected partition 1
Hex code (type L to list all codes): Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xdf60b6b3.

Command (m for help): Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): Using default response p
Partition number (1-4, default 1): First sector (2048-2097151, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): Selected partition 1
Hex code (type L to list all codes): Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#创建RAID0
[root@localhost scripts]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[b,c]1
# -C,--create表示创建RAID,
# -l,--level表示创建RAID的级别
# -n,--raid-devices表示raid设备的个数
# /dev/sd[b,c]1 表示使用的磁盘
# /dev/md0 表示创建的RAID的名称

查看RAID0情况

[root@localhost scripts]# cat /proc/mdstat
Personalities : [raid0] 
md0 : active raid0 sdc1[1] sdb1[0]
      2091008 blocks super 1.2 512k chunks

格式化RAID0

#mkfs.ext4创建ext4的文件系统
[root@localhost scripts]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
130816 inodes, 522752 blocks
26137 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

建立挂载点并挂载

#创建挂载目录
[root@localhost mnt]# mkdir raid0
[root@localhost raid0]# pwd
/mnt/raid0
#将raid0挂载到/mnt/raid0
[root@localhost raid0]# mount /dev/md0 /mnt/raid0
#查看挂载情况
[root@localhost raid0]# df -TH
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        11G  1.7G  9.1G  16% /
devtmpfs                devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                   tmpfs     1.4G     0  1.4G   0% /dev/shm
tmpfs                   tmpfs     1.4G   11M  1.4G   1% /run
tmpfs                   tmpfs     1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda2               xfs       1.1G  149M  915M  14% /boot
/dev/mapper/centos-home xfs       5.4G   34M  5.4G   1% /home
tmpfs                   tmpfs     279M     0  279M   0% /run/user/0
**/dev/md0                ext4      2.1G  6.3M  2.0G   1% /mnt/raid0**

修改配置/etc/fstab,实现开机启动

#
# /etc/fstab
# Created by anaconda on Fri Dec 11 17:49:49 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=21e378c9-09e4-41d9-8ce7-c2bf7ac2295c /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
**/dev/md0 /mnt/raid0                             ext4    defaults        0 0**

创建RAID1

同raid0,修改-l参数为【1】

#创建RAID1
[root@localhost scripts]# mdadm -C /dev/md0 -l 1 -n 2 /dev/sd[b,c]1

创建RAID5

通过上述创建RAID0中磁盘分区的脚本进行磁盘分区(/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde)

[root@localhost ~]# mdadm --create /dev/md5 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[b-e]
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Sat Dec 19 10:13:03 2020
        Raid Level : raid5
        Array Size : 2093056 (2044.00 MiB 2143.29 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Dec 19 10:13:09 2020
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : 51d44079:03062529:9923d9b2:3efb743b
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde

创建RAID1+0或RAID0+1

#--auto=yes为默认参数,可以不设置
[root@localhost ~]# mdadm -C /dev/md4 --auto=yes -l 10 -n 4 /dev/sd[b-e]
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid10] 
md4 : active raid10 sde[3] sdd[2] sdc[1] sdb[0]
      2093056 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      [===================>.]  resync = 96.8% (2027648/2093056) finish=0.0min speed=225294K/sec
      
unused devices: <none>

删除RAID方法

  • 先取消挂载好的raid:[root@localhost scripts]# umount /dev/md0
  • 停止RAID设备:[root@localhost raid0]# mdadm -S /dev/md0
  • 删除raid里的所有硬盘:mdadm --misc --zero-superblock /dev/sdb,mdadm --misc --zero-superblock /dev/sdc
  • 删除配置文件:rm -f /etc/mdadm.conf
  • 如果之前将raid相关信息写入了/etc/fstab配置文件中,还需vim /etc/fstab,将raid相关的内容删除即可.

查看RAID信息方法

#-D,--detail查看md设备的信息
[root@localhost ~]# mdadm --detail /dev/md4
/dev/md4:
           Version : 1.2
     Creation Time : Sat Dec 19 09:27:41 2020
        Raid Level : raid10
        Array Size : 2093056 (2044.00 MiB 2143.29 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Dec 19 09:27:51 2020
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:4  (local to host localhost.localdomain)
              UUID : 19f1ce5e:f2eafe09:09e406f8:635de44e
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

管理RAID

mdadm --manage 管理RAID

  • –add 将后面的设备添加至md设备
  • –remove 将后面的设备从md中移除
  • –fail将后面的设备设置成为出错的状态
    ***添加磁盘 --add ***
[root@localhost ~]# mdadm --manage /dev/md5 --add /dev/sdf
mdadm: added /dev/sdf
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Sat Dec 19 10:13:03 2020
        Raid Level : raid5
        Array Size : 2093056 (2044.00 MiB 2143.29 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 3
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Sat Dec 19 10:14:27 2020
             State : clean 
    Active Devices : 3
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 2

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : 51d44079:03062529:9923d9b2:3efb743b
            Events : 19

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde
       5       8       80        -      spare   /dev/sdf

***移除磁盘 --remove ***

[root@localhost ~]# mdadm --manage /dev/md5 --remove /dev/sdf
mdadm: hot removed /dev/sdf from /dev/md5
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Sat Dec 19 10:13:03 2020
        Raid Level : raid5
        Array Size : 2093056 (2044.00 MiB 2143.29 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sat Dec 19 10:18:04 2020
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:5  (local to host localhost.localdomain)
              UUID : 51d44079:03062529:9923d9b2:3efb743b
            Events : 20

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值