linux:RAID(磁盘阵列)笔记
RAID磁盘阵列简述:
RAID0(条带): 把多个同样大小的磁盘串联起来当做一个磁盘来用。
优点:读写速度快。
缺点:数据容易丢失(没有容错能力)。
磁盘使用率:n*disk
例如:串联了5块磁盘,存入100G数据。5个磁盘同时写入数据,即每块磁盘分别写入100/5G大小数据。
RAID1(镜像):把数据同时写入多个磁盘(至少两块硬盘),相当于备份。
优点:保证线上业务不终止;数据不容易丢失;读取性能提升(等同于RAID0)。
缺点:写入性能并没有提高。
磁盘使用率:1*disk
RAID4:至少3块磁盘,第一个和第二个存盘存储不同的数据块,第三个磁盘存储校验码。
三个磁盘中任何一个磁盘坏掉后都可以找回数据,所以最多允许坏一块磁盘。
优点:提供了一定的容错能力。
缺点:只能坏一块盘。
磁盘使用率:(n-1)*disk
RAID5:相当于RAID4的改进。只是校验码在磁盘之间轮流存放。
RAID6:相当于RAID5的升级版,至少四块磁盘。计算两次校验码。
RAID10:RAID0和RAID1的组合。组合RAID0在组合RAID1。
优点:写入速速快。 容错能力强。
磁盘利用率:(n/2)*disk 即1/2
注:
RAID把数据分块存储。
RAID0和RAID1至少需要两块硬盘;
RAID4和RAID5至少需要三块硬盘;
RAID6至少需要四块磁盘。
RAID的实现方式:
一、软件实现。
由内核模块(multi disk即md)及软件驱动实现;
对应/dev/md*开头的文件;
相关命令mdadm;
可以是任意的块设备,比如说分区。
创建RAID0(分区模拟硬盘):
1、分出至少两个一样大小的分区并修改分区类型为“Linux raid auto”。注意:不要格式化新分区。
[root@localhost ~]#fdisk /dev/sdb
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 5 Extended
/dev/sdb5 1 262 2104452 83 Linux
/dev/sdb6 263 524 2104483+ 83 Linux
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)
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
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 5 Extended
/dev/sdb5 1 262 2104452 fd Linux raid autodetect
/dev/sdb6 263 524 2104483+ fd Linux raid autodetect
Command (m for help): w
[root@localhost ~]# partprobe /dev/sdb //注意:不要格式化新分区。
2、创建RAID0
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6}
mdadm: /dev/sdb5 appears to contain an ext2fs file system
size=4200932K mtime=Thu Jan 1 08:00:00 1970
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# ls /dev/| grep md //新建的设备文件名md开头
md
md0
3、查看RAID信息
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb6[1] sdb5[0]
4206592 blocks super 1.2 512k chunks
unused devices: <none>
4、格式化RAID分区,注意是格式化新建的md0设备,不是硬盘分区
[root@localhost ~]# mke2fs -j /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
262944 inodes, 1051648 blocks
52582 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1077936128
33 block groups
32768 blocks per group, 32768 fragments per group
7968 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
正在写入inode表: 完成
Creating journal (32768 blocks):
完成
Writing superblocks and filesystem accounting information:
完成
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
5、挂载使用
[root@localhost ~]# mount /dev/md0 /mnt/
[root@localhost ~]# ls /mnt/
lost+found
/////////////////至此RAID0安装完成////////////////
6、卸载RAID0分区
[root@localhost ~]# umount /dev/md0
7、查看RAID设备详细信息
[root@localhost ~]# mdadm -D /dev/md0 或 mdadm -D /dev/md*
8、标记/模拟RAID中已损坏硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -f /dev/sd7
mdadm: set /dev/sdb7 faulty in /dev/md1
9 添加RAID设备中硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -a /dev/sd9
10、删除RAID设备中硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -r /dev/sd9
11、停止RAID设备
[root@localhost ~]# mdadm -S /dev/md1 //停止
12、停止后重新装配RAID设备
[root@localhost ~]# mdadm -A /dev/md1 /dev/sdb{5,6}
13、RAID设备设置存入配置文件
[root@localhost ~]# mdadm -D --scan >> /etc/mdadm.conf
二、硬件实现。
RAID0(条带): 把多个同样大小的磁盘串联起来当做一个磁盘来用。
优点:读写速度快。
缺点:数据容易丢失(没有容错能力)。
磁盘使用率:n*disk
例如:串联了5块磁盘,存入100G数据。5个磁盘同时写入数据,即每块磁盘分别写入100/5G大小数据。
RAID1(镜像):把数据同时写入多个磁盘(至少两块硬盘),相当于备份。
优点:保证线上业务不终止;数据不容易丢失;读取性能提升(等同于RAID0)。
缺点:写入性能并没有提高。
磁盘使用率:1*disk
RAID4:至少3块磁盘,第一个和第二个存盘存储不同的数据块,第三个磁盘存储校验码。
三个磁盘中任何一个磁盘坏掉后都可以找回数据,所以最多允许坏一块磁盘。
优点:提供了一定的容错能力。
缺点:只能坏一块盘。
磁盘使用率:(n-1)*disk
RAID5:相当于RAID4的改进。只是校验码在磁盘之间轮流存放。
RAID6:相当于RAID5的升级版,至少四块磁盘。计算两次校验码。
RAID10:RAID0和RAID1的组合。组合RAID0在组合RAID1。
优点:写入速速快。 容错能力强。
磁盘利用率:(n/2)*disk 即1/2
注:
RAID把数据分块存储。
RAID0和RAID1至少需要两块硬盘;
RAID4和RAID5至少需要三块硬盘;
RAID6至少需要四块磁盘。
RAID的实现方式:
一、软件实现。
由内核模块(multi disk即md)及软件驱动实现;
对应/dev/md*开头的文件;
相关命令mdadm;
可以是任意的块设备,比如说分区。
创建RAID0(分区模拟硬盘):
1、分出至少两个一样大小的分区并修改分区类型为“Linux raid auto”。注意:不要格式化新分区。
[root@localhost ~]#fdisk /dev/sdb
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 5 Extended
/dev/sdb5 1 262 2104452 83 Linux
/dev/sdb6 263 524 2104483+ 83 Linux
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)
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
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 5 Extended
/dev/sdb5 1 262 2104452 fd Linux raid autodetect
/dev/sdb6 263 524 2104483+ fd Linux raid autodetect
Command (m for help): w
[root@localhost ~]# partprobe /dev/sdb //注意:不要格式化新分区。
2、创建RAID0
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6}
mdadm: /dev/sdb5 appears to contain an ext2fs file system
size=4200932K mtime=Thu Jan 1 08:00:00 1970
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# ls /dev/| grep md //新建的设备文件名md开头
md
md0
3、查看RAID信息
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb6[1] sdb5[0]
4206592 blocks super 1.2 512k chunks
unused devices: <none>
4、格式化RAID分区,注意是格式化新建的md0设备,不是硬盘分区
[root@localhost ~]# mke2fs -j /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
262944 inodes, 1051648 blocks
52582 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1077936128
33 block groups
32768 blocks per group, 32768 fragments per group
7968 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
正在写入inode表: 完成
Creating journal (32768 blocks):
完成
Writing superblocks and filesystem accounting information:
完成
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
5、挂载使用
[root@localhost ~]# mount /dev/md0 /mnt/
[root@localhost ~]# ls /mnt/
lost+found
/////////////////至此RAID0安装完成////////////////
6、卸载RAID0分区
[root@localhost ~]# umount /dev/md0
7、查看RAID设备详细信息
[root@localhost ~]# mdadm -D /dev/md0 或 mdadm -D /dev/md*
8、标记/模拟RAID中已损坏硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -f /dev/sd7
mdadm: set /dev/sdb7 faulty in /dev/md1
9 添加RAID设备中硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -a /dev/sd9
10、删除RAID设备中硬盘/分区
[root@localhost ~]# mdadm /dev/md1 -r /dev/sd9
11、停止RAID设备
[root@localhost ~]# mdadm -S /dev/md1 //停止
12、停止后重新装配RAID设备
[root@localhost ~]# mdadm -A /dev/md1 /dev/sdb{5,6}
13、RAID设备设置存入配置文件
[root@localhost ~]# mdadm -D --scan >> /etc/mdadm.conf
二、硬件实现。