如何使用MDADM创建Linux RAID 1(镜像)

时间:2020-03-05 15:29:13  来源:igfitidea点击:

RAID代表独立(或者廉价)磁盘的冗余阵列。
它是两个或者多个磁盘的逻辑组合的机制,以提供容错和性能升级。

提供这些功能的不同架构称为RAID级别。
RAID级别为0到6.

本教程展示了如何使用级别创建RAID 1以及如何在Linux上使用MDADM配置RAID 1.

在我们开始创建Linux RAID 1之前让我们检查一切都是不同的RAID级别:

RAID 0(磁盘条带)

RAID 0设备将数据拆分为两个或者多个磁盘。
这两个磁盘独立工作以提供更好的性能。

RAID 1(镜子)

两个磁盘在RAID 1中彼此相同。
数据同时写入两个磁盘。
因此,这两个是彼此的镜像。
具有RAID 1的容错率为RAID 1,因为如果一个磁盘停止工作,则可以从副本(即其他驱动器)恢复数据。

RAID 2(位级别带有专用汉明代码平价)

数据以比特级别而不是字节或者块级别剥离。

RAID 3(具有专用奇偶校验的字节级条带)

剥离在字节水平处完成。
存储所有数据,使得顺序字节位于不同的磁盘上。

RAID 4(带有专用奇偶校验的块水平条带)

它提供像RAID 0的块级条带,具有奇偶校验磁盘。

RAID 5(具有分布式奇偶校验的块水平条带)

这类似于RAID 4,但奇偶校验信息也是条纹的。

RAID 6(块水平带有双分布式奇偶校验的条带)

与RAID 5一样,数据驱动器的条带是块级别,并且奇偶校验信息是条形的。
但每条条纹有两个奇偶校验块。

RAID 10(RAID 1 + 0)

数据是条带化的,并在它们上创建RAID 1镜像。
它至少需要4个驱动器,两个用于条纹和两个用于镜像。

mdadm创建RAID 1

可以在软件环境中模拟磁盘镜像。
Linux中使用的工具创建软件RAID是MDADM。

MDADM实用程序可用于为软件RAID或者多路径I/O创建,管理和监控MD(多磁盘)阵列。
首先,请确保MDADM存在于Linux盒中。
如果未安装,请安装包。

安装mdadm.

在RPM架构之后的Red Hat基于Linux发行版(RHEL/FEDORA/CONTOS):

# sudo yum install mdadm

在基于Debian的发行版,如Ubuntu和Linuxmint:

$sudo apt-get install mdadm

RAID镜像的磁盘分区

我们需要两个相同的分区,用于使用mdadm创建RAID 1.
否则,如果两个分区的大小不等,则可用大小将是较小的大小。

所以现在我们创建了两个分区使用raid类型软件的fdisk命令:

# fdisk /dev/sda
The number of cylinders for this disk is set to 2088.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sda: 17.1 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 650 5116702+ 83 Linux
/dev/sda3 651 2088 11550735 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (651-2088, default 651):
Using default value 651
Last cylinder or +size or +sizeM or +sizeK (651-2088, default 2088): +400M
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (701-2088, default 701):
Using default value 701
Last cylinder or +size or +sizeM or +sizeK (701-2088, default 2088): +400M
Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): fd
Changed system type of partition 6 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sda: 17.1 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 650 5116702+ 83 Linux
/dev/sda3 651 2088 11550735 5 Extended
/dev/sda5 651 700 401593+ fd Linux raid autodetect
/dev/sda6 701 750 401593+ fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

其中我们正在实现两个分区的软件RAID。
如果我们有两个不同的相同磁盘,则可以执行此操作。
只需重复创建分区的步骤并为两个磁盘分配ID。

创建镜像阵列

现在我们的设备已准备就绪,我们现在可以继续创建RAID镜像。

# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda5 /dev/sda6
mdadm: array /dev/md1 started.

/proc/mdstat包含MD(RAID)设备的统计信息。
通过查看此文件的内容,我们可以查看设备的当前状态。

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda6[1] sda5[0]
401472 blocks [2/2] [UU]
[===================>.] resync = 96.1% (387712/401472) finish=0.0min speed=77542K/sec
unused devices:

现在RAID设备已准备就绪,我们需要格式化它。

在RAID设备上创建文件系统

我们将使用ext3文件系统格式化RAID设备。
用于使用ext3文件系统格式化设备的命令是mkfs.ext3.
如果要使用ext2或者ext4文件系统格式化它,可以分别使用mkfs.ext2或者mkfs.ext4命令。

# mkfs.ext3 /dev/md1
mke2fs 1.39 (29-May-2006)
warning: 63 blocks unused.
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
100744 inodes, 401409 blocks
20073 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
49 block groups
8192 blocks per group, 8192 fragments per group
2056 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

安装设备

现在我们的设备已准备好使用。
实际上使用它,我们需要安装它。
我们创建一个用于安装此设备的目录,并在/etd/fstab文件中创建条目以自动安装在启动时。

# mkdir /raid-mirror
# mount /dev/md1 /raid-mirror

我们可以在新设备上创建文件

# touch /raid-mirror/file1.txt

现在我们需要修改/etc/fstab以自动安装在启动时的设备。
我们可以使用echo命令添加条目

# echo "/dev/md1 /raid-mirror ext3 defaults 0 0" >> /etc/fstab

我们现在可以卸载设备并运行命令'mount -a'以检查一切是否正常。
此命令将读取/etc/fstab文件的所有条目并安装设备。

# umount /raid-mirror/
# mount -a
# mount
/dev/sda2 on/type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md1 on /raid-mirror type ext3 (rw)

mount命令的输出显示设备/dev/md1成功安装在"/raid镜像"目录中。