在Linux中配置软 RAID,使用mdadm命令创建RAID5, RAID设备的数据恢复

您所在的位置:网站首页 linux如何格式化整个硬盘数据库中的文件 在Linux中配置软 RAID,使用mdadm命令创建RAID5, RAID设备的数据恢复

在Linux中配置软 RAID,使用mdadm命令创建RAID5, RAID设备的数据恢复

2024-02-28 18:35| 来源: 网络整理| 查看: 265

1.在Linux中配置软 RAID     RAID(Redundant Array of Inexpensive Disks,独立磁盘完余阵列)用于将多个廉价的小型磁盘驱动器合并成一个磁盘阵列,以提高存储性能和容错功能。RAID可分为软 RAID和硬。RAID、其中,软RAID是通过软件实现多块硬盘冗余的,而硬 RAID一般通过 RAID卡来实现 RAID。前者配置简单,管理也比较灵活,对于币小企业来说不失为一种最佳选择。硬 RAID在性能方面具有一定优势,但往往花费比较贵。     RAID作为高性能的存储系统,已经得到了越来越广泛的应用。RAID的级别从RAID概念的提出到现在,已经发展了6个级别,其级别分别是0、1、2、3、4、5。但是最常用的是0、1、3、5这4个级别。     RAID0:将多个磁盘合并成一个大的磁盘,不具有冗余,并行 I/O,速度最快。RAIDO也称为带区集。它是将多个磁盘并列起来,成为一个大硬盘。在存放数据时,RAIDO将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,如图所示。

 

在所有的级别中,RAID0的速度是最快的。但是RAIDO没有冗余功能,如果一个磁盘(物 理)损坏,则所有的数据都无法使用。     RAID1:把磁盘阵列中的硬盘分成相同的两组,互为映像,当任一磁盘介质出现故障时,可以利用其映像上的数据恢复,从而提高系统的容错能力。对数据的操作仍采用分块后并行传输方式。所有 RAID1不仅提高了读写速度,还加强了系统的可靠性,其缺点是硬盘的利用率低,只有50%,如图所示。

 

RAID3:RAID3存放数据的原理和RAIDO、RAID1不同。RAID3是以一个硬盘来存放数据的奇偶校验位,数据则分段存储于其余硬盘中。它像 RAIDO一样以并行的方式来存放数据,但速度没有 RAID0快。如果数据盘(物理)损坏,只要将坏的硬盘换掉,RAID控制系统会根据校验盘的数据校验位在新盘中重建坏盘上的数据。不过,如果校验盘(物理)损坏的话,则全部数据都无法使用。利用单独的校验盘来保护数据虽然没有映像的安全性高,但是硬盘利用率得到了很大的提高,为n-1。其中n为使用RAID3的硬盘总数量。    RAID5:向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个盘上,允许单个磁盘出错。RAID5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样任何一个硬盘损坏,都可以根据其他硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1,如图所示。     Red Hat Enterprise Linux提供了对软RAID技术的支持。在Linux系统中建立软 RAID可 以使用mdadm工具建立和管理RAID设备。

 

1创建与挂载 RAID设备    下面以4块硬盘/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde 为例来讲解 RAID5的创建方法。 此处利用VMware虚拟机,事先安装4块SCSI硬盘。2.1创建4个磁盘分区 使用fdisk 命令重新创建 4 个磁盘分区/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sdel,容量 大小一致,都为500MB,并设置分区类型id为 fd(Linux raid autodetect)。下面以创建/dev/sdb1磁盘分区为例来讲解

 

[root@localhost ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0xf08b1912 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n    //创建分区

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p      //创建主分区

分区号 (1-4,默认 1):1      //创建主分区1

起始 扇区 (2048-62914559,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+500M                       //分区容量为500M

分区 1 已设置为 Linux 类型,大小设为 500 MiB

命令(输入 m 获取帮助):t       //设置文件系统

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd     //设置文件系统为fd

已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):w             //存盘退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@localhost ~]# fdisk /dev/sdc

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0x39ef4766 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1):1

起始 扇区 (2048-62914559,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+500M

分区 1 已设置为 Linux 类型,大小设为 500 MiB

命令(输入 m 获取帮助):t

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):w       

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@localhost ~]# fdisk /dev/sdd

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0x2ce7fa73 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1):1

起始 扇区 (2048-62914559,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+500M

分区 1 已设置为 Linux 类型,大小设为 500 MiB

命令(输入 m 获取帮助):t

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@localhost ~]# fdisk /dev/sde

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0xaaf8c6ee 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1):1

起始 扇区 (2048-62914559,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+500M

分区 1 已设置为 Linux 类型,大小设为 500 MiB

命令(输入 m 获取帮助):t

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@localhost ~]# fdisk -l

用同样方法创建其他3个硬盘分区,最后的分区结果如下所示(已去掉无用信息

 设备 Boot      Start     End     Blocks   Id  System

/dev/sdb1    2048    1026047     512000  fd  Linux raid autodetect

/dev/sdc1   2048   1026047      512000   fd  Linux raid autodetect

/dev/sdd1  2048    1026047      512000   fd  Linux raid autodetect

/dev/sde1  2048   1026047      512000   fd  Linux raid autodetect

2.2使用mdadm命令创建RAID5

RAID 设备名称为dev/mdX,其中X为设备编号,该编号从0开始。

[root@localhost ~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{b-e}1

mdadm:array /dev/md0 started.

上述命令中指定 RAID设备名为/dev/mdo,级别为5,使用3个设备建立RAID,空余一个留作备用。上面的语法中,最后面是装置文件名,这些装置文件名可以是整个磁盘,如/dev/sdb,也可以是磁盘上的分区,如/dev/sdb1之类。不过,这些装置文件名的总数必须要等于--raid-devices 与--spare-devices 的个数总和。此例中,/dev/sd[b-e]l 是一种简写,表示/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1,其中/dev/sdel 为备用。2.3为新建立的/dev/mdo建立类型为 ext4的文件系统 [root@localhost ~]# mkfs -t ext4 -c /dev/md02.4查看建立的 RAID5的具体情况(注意哪个是备用!) [root@localhost ~]# mkfs -t ext4 -c /dev/md0 /dev/mdo:        Version:1.2 Creation Time: Mon May 28 05:45:21 2018    Raid Level:raid5 Array  Size :1021952 (998.00 MiB 1046.48 MB)

Used Dev Size :510976 (499.00 MiB 523.24 MB)Raid Devices:3 Total Devices :4 Persistence : Superblock is persistent Update Time : Mon May 28 05:47:36 2018 State: clean Active Devices :3

Working Devices :4

Failed Devices:0

Spare Devices :1       Layout : left-symmetric 

Chunk Size :512K Consistency Policy : resync               Name : CentOS 7 x86_64            (local to host localhost)             UUID :082401ed:7e3b0286:58eac7e2:a0c2fOfd 

Events:18 Number    Major   Minor    Raid   Device             State 0         8       17       0       active sync       /dev/sdb1 1         8       33       1       active sync       /dev/sdc1 4         8       49       2       active sync       /dev/sdd13         8       65       -       spare             /dev/sde12.5将RAID设备挂载 将 RAID 设备/dev/mnd0挂载到指定的目录/media/mdO中,并显示该设备中的内容。

[root@localhost ~]# mkdir /media/md0

[root@localhost ~]# mount /dev/md0 /media/md0;1s /media/md0

Lost+found

[root@localhost ~]# cd /media/md0      

//写入一个50MB的文件50_file供数据恢复时测试用

[root@localhost md0]# dd if=/dev/zero of=50_file count=1 bs=50M;ll

记录了1+0 的读入

记录了1+0 的写出

52428800字节(52 MB)已复制,0.198441 秒,264 MB/秒

[root@localhost md0]# cd

3  RAID设备的数据恢复     如果 RAID设备中的某个硬盘损坏,系统会自动停止这块硬盘的工作,让后备的那块硬盘代替损坏的硬盘继续工作。例如,假设/dev/sdcl损坏。更换损坏的RAID设备中成员的方法如下。 (1)将损坏的RAID成员标记为失效。

[root@localhost ~]#mdadm /dev/md0 --fail /dev/sdcl

移除失效的RAID成员。 [root@localhost ~]#mdadm /dev/md0 --remove /dev/sdcl (3)更换硬盘设备,添加一个新的 RAID成员(注意上面查看RAID5的情况)。备份硬盘一般会自动替换。 [rOot@localhost ~]#mdadm /dev/md0 --add /dev/sde1 (4)查看 RAID5下的文件是否损坏,同时再次查看RAID5的情况。命令如下。 [rOot@localhost ~]#l1 /media/md0 [root@localhost ~]#mdadm --detail /dev/md0 /dev/md0: Number    Major   Minor    Raid    Device          State 0        8       17       0       active sync     /dev/sdb1 3        8       65       1       active sync     /dev/sde1

4        8       49       2       active sync     /dev/sdd1

RAID5 中的失效硬盘已被成功替换。

说明:mdadm 命令参数中凡是以“--”引出的参数选项,与“-”加单词首字母的方式等价。例如,“--remove”等价于“-r”,“--add”等价于“-a”。 (5)当不再使用RAID设备时,可以使用命令“mdadm  -S /dev/mdX”的方式停止RAID设备。需要注意的是,应先卸载再停止。

1root@localhost ~]# umount /dev/mdO /media/mdo umount:/media/md0:not mounted  

[root@localhost ~]# mdadm -S /dev/md0

mdadm:stopped /dev/mdO



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3