• 在RHEL6系统上配置磁盘阵列(RAID)


    磁盘阵列全名是: Redundant Arrays of Inexpensive Disks, RAID ,大概的意思是:廉价的磁盘冗余阵列。RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘不但扩展了储存空间,而且还有数据保护的功能。

    RAID会根据等级(level) 的不同,而使得整合后的磁盘具有不同的功能,基本常见的level 有以下这几种

    RAID级别划分

    RAID 0:磁盘叠加

    这种模式一般是使用相同型号与容量的磁盘来组成。这种模式的RAID 会将磁盘先切出等量的区块, 然后当一个文件需要要写入RAID 设备时,该文件就会依据区块的大小切割好,然后再依次放到各个磁盘里。由于每个磁盘会交错的存放数据, 因此数据要写入RAID 时,会被等量的放在各个磁盘上面。

    所以说,RAID 0,他的特点就是:

    1、磁盘越多RAID设备的容量就越大。

    2、容量的总大小是多个硬盘的容量的总和。

    3、磁盘越多,写入的效能就越高。

    4、如果使用非等大的硬盘,那么当小的磁盘写满后,就直接向空间大的磁盘中写数据了。

    5、最少的磁盘数是2个,而且磁盘使用率为100%

    他的致使之处就是:万一其中一个磁盘有问题,那么数据就会全部出问题。因为数据是分开存储的。

    RAID 1:镜像备份

    这种模式主要是让同一份数据,完整的保存在不同的磁盘上。由于同一份数据会被分别写入到其他不同磁盘。因此在大量写入RAID 1 设备的情况下,写入的效能会变的非常差。但如果你使用的是硬件RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的I/O总线,这对效能影响是不大的。 如果使用软件磁盘阵列,效能就会明显下降了。

    RAID 1,他的特点是:

    1、保证了数据的安全,

    2、RAID 1设备的容量是所有磁盘容量总和的一半

    3、在多个磁盘组成RAID 1设备的时候,总容量将以最小的那一颗磁盘为主

    4、读取的效能相对增加。这是因为数据在不同的磁盘上面,如果多个进程在读取同一笔数据时,RAID 会自行取得最佳的读取平衡。

    5、磁盘数必需是2的整数倍。磁盘利用率为50%

    不足之处就是:写入的效能会降低

    RAID 5:效能与数据备份的均衡考虑

    RAID 5:至少需要三个以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似RAID 0, 不过每个循环的写入过程中,在每颗磁盘还加入一个校验数据(Parity),这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。

    特点:

    1、当任何一个磁盘损坏时,都能够通过其他磁盘的检查码来重建原本磁盘内的数据,安全性明显增强。

    2、由于有同位检查码的存在,因此RAID 5 的总容量会是整个磁盘数量减一个。

    3、当损毁的磁盘数量大于等于两颗时,那么RAID 5 的资料就损坏了。 因为RAID 5 预设只能支持一颗磁盘的损坏情况。

    4、在读写效能上与RAID-0 差不多。

    5、最少磁盘是3块,磁盘利用率N-1块

    不足:数据写入的效能不一定增加,因为要写入RAID 5 的数据还得要经过计算校验码(parity)。所以写入的效能与系统的硬件关系较大。尤其当使用软件磁盘阵列时,校验码(parity)是通过CPU 去计算而非专职的磁盘阵列卡, 因此在数据校验恢复的时候,硬盘的效能会明显下降。

    RAID0 RAID1 RAID5三个级别的数据存储流程,大家可以参考下图


    RAID 01或RAID 10

    这个RAID级别就是针对上面的特点与不足,把RAID 0和RAID 1这两个结合起来了。

    所谓的RAID 01就是:(1)先让磁盘组成RAID 0 (2)将这RAID 0 再组RAID 1。这就是RAID 0+1

    而RAID 10就是:先组成RAID 1 再组成RAID 0,这就是RAID 1+0

    特点与不足:由于具有RAID 0 的优点,所以效能得以提升,由于具有RAID 1 的优点,所以数据得以备份。 但是也由于RAID 1 的缺点,所以总容量会少一半用来做为备份。

    RAID10级别的数据存储流程,大家可以参考下图

    由于RAID5 仅能支持一颗磁盘的损毁,因此还有发展出另外一种等级,就是RAID 6 ,这个RAID 6 则使用两颗磁盘的容量作为parity 的储存,因此整体的磁盘容量就会少两颗,但是允许出错的磁盘数量就可以达到两颗,也就是在RAID 6 的情况下,同时两颗磁盘损毁时,数据还是可以恢复回来的。而此级别的RAID磁盘最少是4块,利用率为N-2。

    Spare Disk:热备磁盘

    他的作用就是:当磁盘阵列中的磁盘有损毁时,这个热备磁盘就能立刻代替损坏磁盘的位置,这时候我们的磁盘阵列就会主动重建。然后把所有的数据自动恢复。而这个或多个热备磁盘是没有包含在原本磁盘阵列等级中的磁盘,只有当磁盘阵列有任何磁盘损毁时,才真正的起作用。

    关于理论知识我们就只介绍到这里,当然还可以延伸出多种组合,只要理解了上面的内容,那么其他级别就不难了,无非是多种组合而已。通过上面的讲解,我相信大家也知道了做磁盘阵列的优点了:1、数据的安全性明显增强,2、读写的效能明显提高,3、磁盘的容量有效扩展。但也别忘记了他的缺点就是成本提高。但相对于数据而言,我想这点成本也不算什么吧!

    下面我就以RAID5为例,给大家演示

    1、增加硬盘。

    我在虚拟机上新增了6块硬盘,每块是2G。哈哈,这么多只是为了做实验啊!

    [root@yufei ~]# ls /dev/sd*

    /dev/sda /dev/sda2 /dev/sdc /dev/sde /dev/sdg

    /dev/sda1 /dev/sdb /dev/sdd /dev/sdf

    这里面除了sda是以前的,后面的都是新增加了,当然你也可以通过fdisk -l来查询,其他的都是没有进行过分区的。所以会显示"Disk /dev/sdb doesn’t contain a valid partition table"这样的提示啊!

    先拿出三个(sdb,sdc,sdd)来做RAID5,这是做RAID5的最少硬盘数量。但为了安全,我们需要加入sde做热备磁盘。这才是最安全的设置,当然,如果你不加热备也没有关系,RAID5照样能做出来。

    特别说明:如果使用分区来创建的话,也是可以的,但不太科学啊!还有一点就是,你可以对分区转换类型(fd),也可以不转换,似乎这个不重要,我测试转换与不转换都是一样的效果。

    2、创建RAID设备文件

    [root@yufei ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}

    mdadm: partition table exists on /dev/sdb but will be lost or

    meaningless after creating array

    mdadm: partition table exists on /dev/sdc but will be lost or

    meaningless after creating array

    mdadm: partition table exists on /dev/sdd but will be lost or

    meaningless after creating array

    Continue creating array? y

    mdadm: Defaulting to version 1.2 metadata

    mdadm: array /dev/md5 started.

    这时候会在/dev/下创建md文件夹和md5设备文件,而且/dev/md这个文件夹里面还有一个连接文件和一个MD设备的镜像文件

    [root@yufei ~]# ls -l /dev/md*

    brw-rw----. 1 root disk 9, 5 May 31 00:19 /dev/md5

    /dev/md:

    total 4

    lrwxrwxrwx. 1 root root 8 May 31 00:15 md5 -> ../md127

    -rw-------. 1 root root 53 May 31 00:19 md-device-map

    我们可以通过下面的命令查看RAID设备的状况

    [root@yufei ~]# mdadm -D /dev/md5

    /dev/md5:

    Version : 1.2

    Creation Time : Tue May 31 00:19:11 2011

    Raid Level : raid5

    Array Size : 4191232 (4.00 GiB 4.29 GB)

    Used Dev Size : 2095616 (2046.84 MiB 2145.91 MB)

    Raid Devices : 3

    Total Devices : 4

    Persistence : Superblock is persistent

    Update Time : Tue May 31 00:19:22 2011

    State : clean

    Active Devices : 3

    Working Devices : 4

    Failed Devices : 0

    Spare Devices : 1

    Layout : left-symmetric

    Chunk Size : 512K

    Name : yufei:5 (local to host yufei)

    UUID : 69443d97:7e32415d:7f3843c5:4d5015cf

    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

    这里我们可以把他看作是一个普通的硬盘,只是他是多块硬盘的结合体而已。我们可以对其分区、格式化,然后挂载使用的操作

    3、对RAID设备进行分区、格式化、挂载

    如果你想对其分区也是可以,分区后的分区名为md5p1 md5p2等等。当然不分区也一样能正常使用,这个就看你的用途了。我这里就不分区了。直接进行格式化。

    [root@yufei ~]# mkfs.ext4 /dev/md5

    mke2fs 1.41.12 (17-May-2010)

    Filesystem label=

    OS type: Linux

    Block size=4096 (log=2)

    Fragment size=4096 (log=2)

    Stride=128 blocks, Stripe width=256 blocks

    262144 inodes, 1047808 blocks

    52390 blocks (5.00%) reserved for the super user

    First data block=0

    Maximum filesystem blocks=1073741824

    32 block groups

    32768 blocks per group, 32768 fragments per group

    8192 inodes per group

    Superblock backups stored on blocks:

    32768, 98304, 163840, 229376, 294912, 819200, 884736

    Writing inode tables: done

    Creating journal (16384 blocks): done

    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 31 mounts or

    180 days, whichever comes first. Use tune2fs -c or -i to override.

    如果想要分区你可以这样做

    [root@yufei ~]# fdisk /dev/md5

    我这里就不分区了

    挂载使用

    [root@yufei ~]# mount /dev/md5 /mnt

    [root@yufei ~]# df

    Filesystem 1K-blocks Used Available Use% Mounted on

    /dev/sda1 15118728 7014960 7335768 49% /

    tmpfs 255784 0 255784 0% /dev/shm

    /dev/md5 4125376 73720 3842096 2% /mnt

    向里面写入数据文件。

    [root@yufei ~]# touch /mnt/testfil1

    [root@yufei ~]# touch /mnt/testfil2

    [root@yufei ~]# ls /mnt

    lost+found testfil1 testfil2

    4、模拟磁盘损坏

    我们模拟是/dev/sdb这块硬盘损坏

    [root@yufei ~]# mdadm /dev/md5 -f /dev/sdb

    mdadm: set /dev/sdb faulty in /dev/md5

    再查看一下md5的状态

    [root@yufei ~]# mdadm -D /dev/md5

    前面省略

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    0 8 16 - faulty spare /dev/sdb

    我们看到,热备盘现在正在使用,而/dev/sdb是处于损坏状态。

    注意一点:当热备盘在顶替损坏盘的时候,RAID设备的性能会明显下降,因为他要进行数据检验与恢复。

    再看看里面的文件还存在不?

    [root@yufei ~]# ls /mnt

    lost+found testfil1 testfil2

    一切正常

    下面就是要把损坏的硬盘移除,然后新加硬盘,来充当热备盘。注意:如果此时我不加热备盘的话,当MD5中再有任何一个硬盘损坏的话,数据还是正常的。这个留给大家来测试吧。

    5、移除损坏的磁盘

    mdadm: hot removed /dev/sdb from /dev/md5

    再查看MD5的信息

    [root@yufei ~]# mdadm -D /dev/md5

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    发现已经移除了

    6、新加热备磁盘

    [root@yufei ~]# mdadm /dev/md5 -a /dev/sdf

    mdadm: added /dev/sdf

    再次查看MD5的情况

    [root@yufei ~]# mdadm -D /dev/md5

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    5 8 80 - spare /dev/sdf

    热备盘已经加上了

    [root@yufei ~]# ls /mnt/

    lost+found testfil1 testfil2

    向RAID中增加存储硬盘

    如果说,我现在已经做好的RAID空间还是不够用的话,那么我们可以向里面增加新的硬盘,来增加RAID的空间,默认的情况下,我们向RAID中增加的磁盘,会被默认当作热备盘的,如何把热备盘加入到RAID中呢?下面看演示。

    我们接着上面的继续操作

    [root@yufei ~]# mdadm -D /dev/md5

    /dev/md5:

    Version : 1.2

    Creation Time : Tue May 31 19:46:20 2011

    Raid Level : raid5

    Array Size : 4191232 (4.00 GiB 4.29 GB)

    Used Dev Size : 2095616 (2046.84 MiB 2145.91 MB)

    Raid Devices : 3

    Total Devices : 4

    Persistence : Superblock is persistent

    Update Time : Tue May 31 19:49:07 2011

    省略

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    5 8 80 - spare /dev/sdf

    向RAID中增加一块硬盘

    [root@yufei ~]# mdadm /dev/md5 -a /dev/sdg

    mdadm: added /dev/sdg

    [root@yufei ~]# mdadm -D /dev/md5

    /dev/md5:

    Version : 1.2

    Creation Time : Tue May 31 19:46:20 2011

    Raid Level : raid5

    Array Size : 4191232 (4.00 GiB 4.29 GB)

    Used Dev Size : 2095616 (2046.84 MiB 2145.91 MB)

    Raid Devices : 3

    Total Devices : 5

    Persistence : Superblock is persistent

    Update Time : Tue May 31 19:53:53 2011

    省略

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    5 8 80 - spare /dev/sdf

    6 8 96 - spare /dev/sdg

    我们新加的磁盘变成了热备盘,还没有加入到RAID的存储盘中,我们需要让其中的一个热备磁盘起存储作用。看看如何来操作。

    [root@yufei ~]# mdadm -G /dev/md5 -n4

    mdadm: Need to backup 3072K of critical section..

    [root@yufei ~]# mdadm -D /dev/md5

    /dev/md5:

    Version : 1.2

    Creation Time : Tue May 31 19:46:20 2011

    Raid Level : raid5

    Array Size : 4191232 (4.00 GiB 4.29 GB)

    Used Dev Size : 2095616 (2046.84 MiB 2145.91 MB)

    Raid Devices : 4

    Total Devices : 5

    Persistence : Superblock is persistent

    Update Time : Tue May 31 20:02:34 2011

    省略

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    6 8 96 3 active sync /dev/sdg

    5 8 80 - spare /dev/sdf

    我们看到RAID的存储盘已经增加了一个了,由3个变成了4个,但注意这里的一条信息Array Size : 4191232 (4.00 GiB 4.29 GB),虽然我们已经加入了一块硬盘,但此RAID的空间并没有增大,下面就是要把RAID的空间扩展

    resize2fs /dev/md5

    先来看看这个md5里面的数据

    [root@yufei ~]# ls /mnt

    lost+found testfile1 testfile2

    [root@yufei ~]# resize2fs /dev/md5

    resize2fs 1.41.12 (17-May-2010)

    Filesystem at /dev/md5 is mounted on /mnt; on-line resizing required

    old desc_blocks = 1, new_desc_blocks = 1

    Performing an on-line resize of /dev/md5 to 1571712 (4k) blocks.

    The filesystem on /dev/md5 is now 1571712 blocks long.

    [root@yufei ~]# mdadm -D /dev/md5

    /dev/md5:

    Version : 1.2

    Creation Time : Tue May 31 20:21:36 2011

    Raid Level : raid5

    Array Size : 6286848 (6.00 GiB 6.44 GB)

    Used Dev Size : 2095616 (2046.84 MiB 2145.91 MB)

    Raid Devices : 4

    Total Devices : 5

    Persistence : Superblock is persistent

    Update Time : Tue May 31 20:26:15 2011

    以下省略

    这时候,我们就看到Array Size : 6286848 (6.00 GiB 6.44 GB)就增加了2G了

    [root@yufei ~]# ls /mnt

    lost+found testfile1 testfile2

    而且里面的数据也是正常的

    开机挂载RAID设备

    为了下次开机还能正常使用我们的RAID设备,我们还需要做以下事情

    1、把挂载的信息写入fstab

    [root@yufei ~]# vim /etc/fstab

    加入下面的内容

    /dev/md5 /mnt ext4 defaults 0 0

    [root@yufei ~]# mount -a

    没有错误,那说明我们没有写错哦!

    2、把我们的RAID信息写入配置文件

    我们先看一下/etc/mdadm.conf文件的内容

    [root@yufei ~]# cat /etc/mdadm.conf

    # mdadm.conf written out by anaconda

    MAILADDR root

    AUTO +imsm +1.x -all

    里面已经有了一些内容,但没有RAID的相关信息,所以我们要把RAID的相关信息写入此文件中,否则在下次开机RAID设备就不起作用了。

    [root@yufei ~]# mdadm -D -s >> /etc/mdadm.conf

    [root@yufei ~]# cat /etc/mdadm.conf

    # mdadm.conf written out by anaconda

    MAILADDR root

    AUTO +imsm +1.x -all

    ARRAY /dev/md5 metadata=1.2 spares=1 name=yufei:5 UUID=69443d97:7e32415d:7f3843c5:4d5015cf

    RAID信息已经写入了。注意,如果系统中有多个RAID的话,此命令会把系统中所有的RAID信息全部收集并写入此文件。所以,当用>>来追加内容的时候,你可能需要根据情况来修改。

    3、重新启动系统测试看是否成功

    重新启动后,查看内容

    [root@yufei ~]# df

    Filesystem 1K-blocks Used Available Use% Mounted on

    /dev/sda1 15118728 7015236 7335492 49% /

    tmpfs 255784 0 255784 0% /dev/shm

    /dev/md5 4125376 73720 3842096 2% /mnt

    [root@yufei ~]# ls /mnt

    lost+found testfil1 testfil2

    一切正常

    RAID设备的删除

    这个在网上很多的资料都不是正确的移除方法,今天我就给大家详细说一下。

    网上很多教程一般都是这样的步骤

    umount卸载RAID设备

    编辑配置文件包括

    /etc/mdadm.conf

    /etc/fstab

    停止RAID设备

    mdadm -S /dev/md5

    到这里就结束了,如今在RHEL6的系统上,你会发现仅上面的步骤是完全不行的,RHEL6系统重新启动后,他会自动创建/dev/md127(这里不同级别数字会不同)这样的文件,而且以前在RAID里面的设备,你是不能使用的。如果你遇到这样的情况的话,就说明我们做的RAID没有彻底删除。那么下面就看看我是如何实现彻底删除的。

    1、umount卸载RAID设备

    [root@yufei ~]# umount /dev/md5

    2、停止RAID设备

    [root@yufei ~]# mdadm -S /dev/md5

    mdadm: stopped /dev/md5

    这里顺便给大家讲一下设备停止后如何开启,算是插曲啊。

    [root@yufei ~]# mdadm -A -s /dev/md5

    mdadm: /dev/md5 has been started with 3 drives and 1 spare.

    在停止前,你要用再查看一下RAID里面的硬盘信息,因为后面会用到这个,很关键哦!

    [root@yufei ~]# mdadm -D /dev/md5

    Number Major Minor RaidDevice State

    3 8 64 0 active sync /dev/sde

    1 8 32 1 active sync /dev/sdc

    4 8 48 2 active sync /dev/sdd

    5 8 80 - spare /dev/sdf

    OK,现在再停止一次

    [root@yufei ~]# mdadm -S /dev/md5

    mdadm: stopped /dev/md5

    3、移除RAID里面的磁盘(这是关键的一步,而很多教程上都没有写)

    删除RAID里面的所有磁盘

    这一步,一定要把RAID停止后才能执行,否则会出现下面的错误提示

    mdadm: Couldn’t open /dev/sde for write – not zeroing

    [root@yufei ~]# mdadm --misc --zero-superblock /dev/sde

    [root@yufei ~]# mdadm --misc --zero-superblock /dev/sdc

    [root@yufei ~]# mdadm --misc --zero-superblock /dev/sdd

    [root@yufei ~]# mdadm --misc --zero-superblock /dev/sdf

    OK,这时候就把RAID里面的所有磁盘删除掉了。

    4、删除相关配置文件里面的RAID信息

    [root@yufei ~]# vim /etc/mdadm.conf

    把我们增加的这一行删除

    ARRAY /dev/md5 metadata=1.2 spares=1 name=yufei:5 UUID=69443d97:7e32415d:7f3843c5:4d5015cf

    [root@yufei ~]# vim /etc/fstab

    把我们增加的这一行删除

    /dev/md5 /mnt ext4 defaults 0 0

    经过这四步就完全删除RIAD了。重新启动,也不会有raid的相关内容了。

    如果你想做得更熟练的话,建议你把raid5 raid0 raid1 raid5+raid0都做一边。我想这也不是什么难事了。关于mdadm的命令参数,大家可以通过查看帮助来获得

  • 相关阅读:
    Python安装
    Python的种类
    Windows server 下 DNS服务器 实现递归查询和循环查询的配置方法
    Command Injection_low、Medium、high、Impossible
    Brute Force_impossible
    Brute Force_high
    Brute Force_medium
    Brute Force_low
    脚本黑客1----HTML基础笔记
    windows服务器大量端口被dns.exe占用的解决方法
  • 原文地址:https://www.cnblogs.com/google4y/p/2251525.html
Copyright © 2020-2023  润新知