RAID(Redundant Array of Independent Disk)
,经常被翻译为链接磁盘冗余阵列,最早的思想是用来组合小磁盘,代替大容量的磁盘,并且尽量的提供磁盘冗余能力,提供磁盘在硬件损毁时,提供对于数据一定的冗余能力;- 这里通过软件来实现
RAID
阵列,软件RAID
和硬件RAID
的性能相差特别大,但是可以通过软件RAID
来了解RAID
的特性 RAID
的几种技术:
- 条带化技术:如何将数据分散存储在多块盘上面,将数据按照一定的大小划分称为一定的数量然后将这些划分好的数据按照一定的位置进行存放;
- 磁盘镜像化技术:用于实现将数据划分成为相同的几份;
- 检验码技术:数据在进行条带化的存储的时候,将等长的数据,计算校验码的值,用于在数据出错时,进行数据的检错和恢复;校验技术例如奇偶校验;
- RAID阵列的级别
- 级别仅仅是不同的功能的划分,和性能等无关
RAID 0
:- 仅仅使用条带化技术,可以改善数据的存入和读取性能,但是不提供数据的冗余能力,至少需要两块磁盘来构建
RAID 0
阵列
RAID 1
:- 仅仅使用镜像技术,写性能提升,读性能提升,写性能下降,存在冗余能力,磁盘利用率为
1/2
,至少需要两块磁盘;
RAID 2
:- 使用汉明码的方式将需要存储的数据进行编码,并且使用条带化技术进行存储,在进行数据读取时,要求具有共轴同步技术,对于大文件读取性能优秀,对于小文件,频繁的读取不足一个扇区的数据,导致性能下降,较少应用于
PC
机等小文件操作频繁的技术; `RAID 3
:- 使用条带化和校验码技术,通过条带化技术将原始数据划分成为两份,分别存储在不同磁盘上面相同位置,并且根据校验码技术计算出校验和,将校验和保存在独立的第三块磁盘上面,通过这种技术,磁盘保证了数据的读取和写入性能,并且数据具有一定的冗余能力,数据的校验以及恢复能力有限,仅仅允许单块磁盘出错,否则数据无法进行恢复;磁盘的利用率为
n-1/n
;
RAID 4
:- 是一种类似于
RAID 3
的技术,RAID 3
实现的是按位进行数据的存储,读取以及计算校验码,RAID 4
实现的是按照一定的数据块来进行数据的读取和存储,并且计算出校验码,以及保证数据块的完整性,不被条带化技术影响; RAID 5
:- 是对于
RAID 3
的一种改进,将数据的校验盘的值,存储在不同的磁盘上面,也就是打乱数据存储和校验码存储,解决了校验码盘存储错误的导致数据校验无法完成的缺点,至少需要三块磁盘,磁盘的利用空间为n-1/n
;
- 常见的RAID阵列
RAID
阵列只是对于上述不同RAID
进行的组合,为了应对不同的业务场景,组合出不同的RAID
场景;RAID 0+1
- 表示的含义是首先进行条带化,然后进行镜像化;适合于对属于安全性要求较高场景,并且首先进行条带化,数据的写入速度高,可以保证数据的及时写入,可以同时保证数据的安全性和数据的写入性能;
RAID 1+0
:- 表示的含义是首先进行镜像化,其次进行条带化;数据的安全性好,只需要保证镜像化的数据不会同时损坏相同的部分,但是数据的写入性能稍差;
RAID 5+0
:- 表示首先进行的是奇偶校验,并且将校验的值和原始数据打乱,然后对这些数据进行条带化,存储在不同的磁盘上面,这种情况可以应用于对于数据的恢复以及数据的写入要求比较高的场景;
jbod
:- 这个是名副其实的用来将多个小盘整合成为一个大空间的磁盘来使用的软件,不提供冗余能力,空间利用率高,因为这个软件就是用来提高空间利用率的,通常至少需要两块磁盘
raid
阵列的实现:
- 首先需要内核支持
RAID
多阵列设备,在内核中有一个multi disks
模块用于对多设备的支持,首先需要模拟出一个逻辑RAID
设备,设备文件通常是/dev/md0
,/dev/md5
等根据识别顺序命名,应用程序提请数据请求,将请求发送给内核,内核提交给md
设备,再通过
md
设备完成数据在真实硬盘上数据的存储;,
- 首先需要内核支持
- 内核的需要
md
模块完成这样的转换,但是如果操作系统崩溃,内核功能丧失,所以需要 md 模块会将磁盘设别标记为内核可以识别的fd
类型,并且模块会存储一些元数据用于来识别 RAID 阵列; - 常见的RAID类型
- 硬件实现的方式,这种方式实现的
RAID
阵列一点都不廉价,但是性能优异,并且为稳定;RAID
芯片是十分昂贵的,RAID
自带CPU
以及内存,缓存等设备,设置提供电池,这些特性都是用来保证数据的安全性的,所以价格也就不会低了; - 软件实现方式:这种方式仅仅用来演示
RAID
的特性,软件RAID
的实现需要满足以下要求:
- 1.首先内核需要支持软件
RAID
,软件RAID
的实现是内核的md(multi disks)
; - 2.内核需要模拟出一个软件逻辑RAID,提供设备文件
/dev/md#
; - 3.存储数据数据时,请求不再交给
sda
设备,而是交给内核md
模块; - 4.该模块完成数据的存储;
- 1.首先内核需要支持软件
md
模块:
- 1.根据指定配置将指定的硬盘配置称为
RAID
设备,软件RAID
的性能,取决于CPU
的能力,硬盘的能力; - 2.对于
RAID
底下的磁盘模块必须标记为内核可以识别的模块,这是为了防止操作系统崩溃之后数据被按照普通的数据格式进行读取,所以对于RAID
的磁盘需要标记为内核可以识别为RAID
阵列的类型称为fd
类型; - 3.在
RAID
的磁盘上面存储的一些元数据,用来在操作系统重装时,用来识别RAID
阵列;
- 1.根据指定配置将指定的硬盘配置称为
RAID
阵列的管理工具:mdadm
:
- 创建模式:
-C[大写]
:
-l
:指定RAID
阵列的级别;-n
:设备的个数;-a yes | no
:自动为其创建设备文件;-c[小写]
:指定chunk
的大小,表示数据块的大小;-x
:表示用于指定空闲盘的个数,n+x=
你所提供的设备数;
- 管理模式:
-add
:用于添加阵列中的磁盘;--remove
:用于移除阵列中的磁盘;-fail
:用于模拟损坏某个磁盘;mdadm /dev/md# --fail /dev/vdb3
:模拟这个阵列的vdb3
损坏;-S | --stop /dev/md#
:用于停止某个阵列;
- 监控模式:
-F
:用于设定监控模式,也就是阵列出现问题的告警方式,常见的有mail program
等等;-D /dev/md#
:Print details of one or more md devices
,这里必须指定阵列,而不是具体的磁盘设备;
- 装配模式:
-A
:表示用于装配一个已经存在的阵列;
mdadm --detail --scan > /etc/mdadm.conf
:表示用于设置配置文件;
- 创建模式:
- 删除阵列的正确方式,首先应该停止阵列,然后进行删除;
mdadm -S /dev/md#
rm /dev/md#
- 扫描模式常常用来制作配置文件;
- 1.
mdadm –D –scan > /etc/mdadm.conf
; - 2.启动时,
mdadm –A /dev/md1
可以重新自动进行装配,不需要手动的配置; - 创建RAID
- 创建
RAID 0
: - 1.创建一个
2G
的RAID 0
也就是需要使用至少两块1G
的磁盘或者分区;
Disk identifier: 0x58fcb7a0
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ 83 Linux
/dev/vdb2 2083 4164 1049328 83 Linux
- 这里还需要调整类型
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ fd Linux raid autodetect
/dev/vdb2 2083 4164 1049328 fd Linux raid autodetect
- 然后通知内核进行调整
[root@server23 ~]# partx /dev/vdb
# 1: 63- 2098655 ( 2098593 sectors, 1074 MB)
# 2: 2098656- 4197311 ( 2098656 sectors, 1074 MB)
- 接下来的操作可能需要安装
mdadm-3.2.6-7.el6.x86_64
,来提供mdadm
命令
[root@server23 ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
- 如果出现了以下错误
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
mdadm: /dev/vdb1 appears to contain an ext2fs file system
size=1048576K mtime=Mon Jan 22 22:56:18 2018
mdadm: super1.x cannot open /dev/vdb2: Device or resource busy
mdadm: /dev/vdb2 is not suitable for this array.
mdadm: create aborted
- 是因为之前的进行过格式化操作,已经存在文件系统,可以删除这个分区,之后,重新进行创建;
- 如果正常,执行下面的命令来查看创建的
RAID
设备
[root@server23 ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 vdb2[1] vdb1[0]
2098176 blocks super 1.2 512k chunks
unused devices: <none>
- 设备状态是正常的,所以可以进行格式化这个设备
[root@server23 ~]# mke2fs -j /dev/md0
mke2fs 1.41.12 (17-May-2010)
warning: 256 blocks unused.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
131328 inodes, 524288 blocks
26227 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
8208 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
- 接下来可以将这个目录挂载到本地,然后进行使用
[root@server23 ~]# mount /dev/md0 /mnt/md0/
[root@server23 md0]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 7853764 1262644 6192172 17% /
tmpfs 251136 0 251136 0% /dev/shm
/dev/vda1 495844 33457 436787 8% /boot
/dev/md0 2064144 68676 1890560 4% /mnt/md0
- 使用监控模式来查看
RAID
阵列的使用情况
[root@server23 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 12 11:11:29 2018
Raid Level : raid0
Array Size : 2098176 (2.00 GiB 2.15 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 12 11:11:29 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : server23.com:0 (local to host server23.com)
UUID : 56db67d3:a553f8b3:a30596f5:d12598ea
Events : 0
Number Major Minor RaidDevice State
0 252 17 0 active sync /dev/vdb1
1 252 18 1 active sync /dev/vdb2
RAID 0
仅仅是条带化技术,所以任何一块磁盘出现损坏,数据都无法进行访问;接下来实现
RAID 1
- 创建一个
1G
的RAID 1
,这里需要两个相同的RAID
磁盘,使用两个1G
的分区,并且调整类型
Disk identifier: 0x58fcb7a0
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ fd Linux raid autodetect
/dev/vdb2 2083 4164 1049328 fd Linux raid autodetect
- 通知内核重读分区表
[root@server23 mnt]# partx /dev/vdb
# 1: 63- 2098655 ( 2098593 sectors, 1074 MB)
# 2: 2098656- 4197311 ( 2098656 sectors, 1074 MB)
# 3: 0- -1 ( 0 sectors, 0 MB)
# 4: 0- -1 ( 0 sectors, 0 MB)
- 接下来创建
RAID 1
- 如果在分区的过程中出现这个错误:
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 or after you run partprobe(8) or kpartx(8)
Syncing disks.
- 使用命令读取新的分区表,会失败,
[root@server23 mnt]# partprobe /dev/vdb
Warning: WARNING: the kernel failed to re-read the partition table on /dev/vdb (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
- 然后划分新的分区,并且调整类型
Disk identifier: 0x58fcb7a0
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ fd Linux raid autodetect
/dev/vdb2 2083 4164 1049328 fd Linux raid autodetect
[root@server23 ~]# partx /dev/vdb
# 1: 63- 2098655 ( 2098593 sectors, 1074 MB)
# 2: 2098656- 4197311 ( 2098656 sectors, 1074 MB)
# 3: 0- -1 ( 0 sectors, 0 MB)
# 4: 0- -1 ( 0 sectors, 0 MB)
- 接下来需要创建
RAID 1
[root@server23 ~]# mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/vdb1 /dev/vdb2
mdadm: /dev/vdb1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 12:58:25 2018
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
mdadm: /dev/vdb2 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 12:58:25 2018
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
- 可以查看两个磁盘在第一次进行镜像的状态
[root@server23 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 vdb2[1] vdb1[0]
1048256 blocks super 1.2 [2/2] [UU]
[========>............] resync = 43.7% (458752/1048256) finish=0.2min speed=38229K/sec
unused devices: <none>
[root@server23 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 vdb2[1] vdb1[0]
1048256 blocks super 1.2 [2/2] [UU]
[===========>.........] resync = 56.2% (589824/1048256) finish=0.1min speed=39321K/sec
unused devices: <none>
- 接下来进行格式化操作
[root@server23 ~]# mke2fs -j /dev/md1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262064 blocks
13103 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
- 接下来可以模拟损坏一块的磁盘,并且移除这个损坏的磁盘
[root@server23 ~]# mdadm /dev/md1 -f /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md1
[root@server23 ~]# mdadm /dev/md1 --remove /dev/vdb1
mdadm: hot removed /dev/vdb1 from /dev/md1
- 为了完成镜像,这里还需要添加一块磁盘,这里的话,可以将移除的磁盘添加回来
[root@server23 ~]# mdadm /dev/md1 --add /dev/vdb1
mdadm: added /dev/vdb1
- 添加磁盘之后,还需要进行新的同步
[root@server23 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 vdb1[2] vdb2[1]
1048256 blocks super 1.2 [2/1] [_U]
[=====>...............] recovery = 25.0% (262144/1048256) finish=0.4min speed=26214K/sec
unused devices: <none>
- 查看配置的
RAID 1
的状态
[root@server23 ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Apr 12 12:58:54 2018
Raid Level : raid1
Array Size : 1048256 (1023.86 MiB 1073.41 MB)
Used Dev Size : 1048256 (1023.86 MiB 1073.41 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 12 13:06:32 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : server23.com:1 (local to host server23.com)
UUID : aef4598c:6b80129e:86d946b8:c9f2a851
Events : 39
Number Major Minor RaidDevice State
2 252 17 0 active sync /dev/vdb1
1 252 18 1 active sync /dev/vdb2
- 接下来如何停止一个阵列:
- 首先需要卸载存在的挂载
[root@server23 ~]# umount /mnt/md1/
[root@server23 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 7853764 1266712 6188104 17% /
tmpfs 251136 0 251136 0% /dev/shm
/dev/vda1 495844 33457 436787 8% /boot
- 接下来停止
RAID
服务
[root@server23 ~]# mdadm -S /dev/md1
- 然后删除
RAID
的设备文件
- 然后可以看到
[root@server23 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
unused devices: <none>
- 接下来尝试配置使磁盘具有热切换
这里需要提供三块磁盘,使用
RAID 1
来进行实验 - 首先需要准备三块分区
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ fd Linux raid autodetect
/dev/vdb2 2083 4164 1049328 fd Linux raid autodetect
/dev/vdb3 4165 6246 1049328 fd Linux raid autodetect
- 接下来创建
RAID
阵列,使得两块磁盘在线,一块磁盘作为热备份,必要时,进行快速切换 - 因为这里使用的分区存在前面的
RAID
阵列的一些元数据等信息,所以会有下面的提示
[root@server23 ~]# mdadm -C /dev/md2 -l 1 -n 2 -x 1 /dev/vdb1 /dev/vdb2 /dev/vdb3
mdadm: /dev/vdb1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 12:58:54 2018
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
mdadm: /dev/vdb2 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 12:58:54 2018
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
- 接下来进行格式化操作
[root@server23 ~]# mke2fs -j /dev/md2
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262064 blocks
13103 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
- 然后可以进行挂载
[root@server23 ~]# mount /dev/md2 /mnt/md2/
- 复制文件,并且查看
RAID
的状态
[root@server23 md2]# cp /etc/passwd .
[root@server23 md2]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md2 : active raid1 vdb3[2](S) vdb2[1] vdb1[0]
1048256 blocks super 1.2 [2/2] [UU]
unused devices: <none>
- 使用管理类命令查看具体的状态
[root@server23 md2]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Thu Apr 12 16:46:59 2018
Raid Level : raid1
Array Size : 1048256 (1023.86 MiB 1073.41 MB)
Used Dev Size : 1048256 (1023.86 MiB 1073.41 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 12 16:51:27 2018
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : server23.com:2 (local to host server23.com)
UUID : 567843a7:c1a9cdd8:08175ce7:12be630d
Events : 17
Number Major Minor RaidDevice State
0 252 17 0 active sync /dev/vdb1
1 252 18 1 active sync /dev/vdb2
2 252 19 - spare /dev/vdb3
- 接下来模拟一块磁盘的损坏,查看空闲磁盘是否会自动顶替
[root@server23 md2]# mdadm /dev/md2 --fail /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md2
- 查看磁盘切换的状态
[root@server23 md2]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md2 : active raid1 vdb3[2] vdb2[1] vdb1[0](F)
1048256 blocks super 1.2 [2/1] [_U]
[======>..............] recovery = 31.2% (327680/1048256) finish=0.4min speed=25206K/sec
unused devices: <none>
- 查看相信的信息,已经正常的进行了切换
[root@server23 md2]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Thu Apr 12 16:46:59 2018
Raid Level : raid1
Array Size : 1048256 (1023.86 MiB 1073.41 MB)
Used Dev Size : 1048256 (1023.86 MiB 1073.41 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 12 16:58:50 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Name : server23.com:2 (local to host server23.com)
UUID : 567843a7:c1a9cdd8:08175ce7:12be630d
Events : 36
Number Major Minor RaidDevice State
2 252 19 0 active sync /dev/vdb3
1 252 18 1 active sync /dev/vdb2
0 252 17 - faulty /dev/vdb1
通过上述配置文件的对比,发现已经进行了切换
对于这种出现故障的磁盘,应该及时的移除,然后重新添加新的磁盘,用于构建冗余磁盘
[root@server23 md2]# mdadm /dev/md2 --remove /dev/vdb1
mdadm: hot removed /dev/vdb1 from /dev/md2
- 这里还是将上面模拟损坏的分区添加回去
[root@server23 md2]# mdadm /dev/md2 --add /dev/vdb1
mdadm: added /dev/vdb1
- 对于
RAID
的信息如果需要保存为配置文件需要执行
[root@server23 md2]# mdadm --detail --scan
ARRAY /dev/md2 metadata=1.2 spares=1 name=server23.com:2 UUID=567843a7:c1a9cdd8:08175ce7:12be630d
将上面的输出信息重定向为
/etc/mdadm.conf
;通过查询
mdadm
的手册,发现
Currently, Linux supports LINEAR md devices, RAID0 (striping), RAID1
(mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER.
- 接下来实现的上面支持的
RAID 5
,并且提供冗余磁盘,
Device Boot Start End Blocks Id System
/dev/vdb1 1 2082 1049296+ fd Linux raid autodetect
/dev/vdb2 2083 4164 1049328 fd Linux raid autodetect
/dev/vdb3 4165 6246 1049328 fd Linux raid autodetect
/dev/vdc1 1 2082 1049296+ fd Linux raid autodetect
- 接下来创建
RAID 5
磁盘
[root@server23 mnt]# mdadm -C /dev/md3 -l 1 -n 3 -x 1 /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc1
mdadm: /dev/vdb1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 16:46:59 2018
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
mdadm: /dev/vdb2 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 16:46:59 2018
mdadm: /dev/vdb3 appears to be part of a raid array:
level=raid1 devices=2 ctime=Thu Apr 12 16:46:59 2018
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.
- 查看
RAID 5
阵列的状态
[root@server23 mnt]# mdadm -D /dev/md3
/dev/md3:
Version : 1.2
Creation Time : Thu Apr 12 17:16:06 2018
Raid Level : raid1
Array Size : 1048256 (1023.86 MiB 1073.41 MB)
Used Dev Size : 1048256 (1023.86 MiB 1073.41 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Apr 12 17:17:15 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Name : server23.com:3 (local to host server23.com)
UUID : 7b58543b:37fe2cf1:07102435:e600eeff
Events : 17
Number Major Minor RaidDevice State
0 252 17 0 active sync /dev/vdb1
1 252 18 1 active sync /dev/vdb2
2 252 19 2 active sync /dev/vdb3
3 252 33 - spare /dev/vdc1
- 然后进行格式化,格式化时可以指定
stride
的大小
[root@server23 mnt]# mke2fs -j -E stride=16 -b 4096 /dev/md3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=0 blocks
65536 inodes, 262064 blocks
13103 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
- 对于上面指定的参数,可以根据实际的应用场景进行选择,如果大文件的场景,适当的调大上面的值;
- 创建RAID 10
- 首先需要四个分区,使用上面提供的分区,来完成
RAID 10
的创建,在创建的RAID 10
的时候,需要计算的是,需要几块硬盘,手法提供空闲磁盘,空闲磁盘至少需要几块
[root@server23 mnt]# mdadm -C /dev/md10 -l 10 -n 4 /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc1
mdadm: /dev/vdb1 appears to be part of a raid array:
level=raid1 devices=3 ctime=Thu Apr 12 17:16:06 2018
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
mdadm: /dev/vdb2 appears to be part of a raid array:
level=raid1 devices=3 ctime=Thu Apr 12 17:16:06 2018
mdadm: /dev/vdb3 appears to be part of a raid array:
level=raid1 devices=3 ctime=Thu Apr 12 17:16:06 2018
mdadm: /dev/vdc1 appears to be part of a raid array:
level=raid1 devices=3 ctime=Thu Apr 12 17:16:06 2018
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
- 然后就可以就可以进行格式化操作
[root@server23 mnt]# mke2fs -j -E stride=16 -b 4096 /dev/md10
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=0 blocks
65536 inodes, 262064 blocks
13103 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
- 之后就可以进行挂载使用