2016-9-6 RAID及mdadm命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016-9-6 RAID及mdadm命令相关的知识,希望对你有一定的参考价值。
8MB=1Mb
IDE:133Mbps
SATA:并行 300Mbps,600Mbps,6Gbps
USB 3.0:480Mbps
SCSI:Small Computer System Interface 10000,15000
RAID:
级别:仅代表磁盘组织方式不同,没有上下之分
0:条带化:把整部分数据分成不同的部分分别存储在不同的磁盘上
性能提升: 读,写
冗余能力(容错能力): 无
空间利用率:nS
至少2块盘
1:镜像
性能表现:写性能下降,读性能提升
冗余能力:有
空间利用率:1/2
至少2块盘
10:先镜像后条带
01:先条带后镜像
10比01性能好
2
3
4:校验码
5:轮流做校验盘
性能表现:读,写提升
冗余能力:有
空间利用率:(n-1)/n
至少需要3块
10:
性能表现:读、写提升
冗余能力:有
空间利用率:1/2
至少需要4块
01:
性能表现:读、写提升
冗余能力:有
空间利用率:1/2
至少需要4块
50:
性能表现:读、写提升
冗余能力:有
空间利用率:(n-2)/n
至少需要6块
jbod:把不同的小磁盘组合起来,在Hadoop中使用
性能表现:无提升
冗余能力:无
空间利用率:100%
至少需要2块
Hadoop
HDFS:分布式备份系统
逻辑RAID:
/dev/md0
/dev/md1
RAID0装配一个2G的阵列:需要4个512M的磁盘,或2个1G的磁盘
RAID1装配一个2G的阵列:需要2个2G的磁盘
RAID5装配一个2G的阵列,需要3个1G的磁盘(n为3,利用率为2/3,即2G,可以有空闲盘)
RAID5装配两个2G的阵列:需要4个1G的磁盘(n为4,利用率为2/4,即2G)
************空闲盘即自动顶上去以后把坏的磁盘给移除*****************
md:mdadm 将任何块设备做成RAID
1.直接使用硬盘硬件设备,不需要分区
2.如果要使用某个硬盘的分区做RAID,需要fdisk特定的分区,并给它指定分区类型:fd
此次以/dev/sdb硬盘的分区做RAID
模拟化的命令:
创建模式
-C
专用选项:
-l #:级别
-n #:设备个数
-a {yes|no}:自动为其创建设备文件
-c #M:指定chunk(数据块单位的大小,2的倍数,默认64k)
-x #:指定空闲的磁盘个数
管理模式
--add,--remove(增加移除某个磁盘块)
-f(--fail,--set-faulty)(用来模拟损坏磁盘的)
mdadm /dev/md# --add /dev/sda#
监控模式
-F
增长模式
-G
装配模式
-A
查看RAID阵列的详细信息
mdadm -D /dev/md#
--detail :详细信息 显示一个Raid设备的详细信息
停止阵列
mdadm -S /dev/md#
--stop
将当前RAID信息保存至配置文件中,以便以后进行装配
mdadm -D --scan > /etc/mdadm.conf
mke2fs格式化md#的时候可以指定条带化大小,优化性能
-stride #:指定条带化大小(chunk比上block的倍数,即商)
watch:周期性地执行指定命令,并以全屏方式显示结果
-n #:指定周期长度,单位为秒,默认为2
命令格式: watch -n # ‘COMMMAND‘
【例子:
1.先创建分区并将分区大小调试好
Device Boot Start End Blocks Id System
/dev/sdb1 1 654 5253223+ 83 Linux
/dev/sdb2 655 916 2104515 83 Linux
/dev/sdb3 917 2610 13607055 5 Extended
/dev/sdb5 917 1048 1060258+ fd Linux raid autodetect
/dev/sdb6 1049 1180 1060258+ fd Linux raid autodetect
2.将5和6的分区类型调整为fd
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)
3.保存退出并用partprobe命令让内核重读分区
最后可以cat /proc/partitions查看一下是否生效
[[email protected] ~]# cat /proc/partitions
major minor #blocks name
8 16 20971520 sdb
8 17 5253223 sdb1
8 18 2104515 sdb2
8 19 1 sdb3
8 21 1060258 sdb5
8 22 1060258 sdb6
8 0 20971520 sda
8 1 204800 sda1
8 2 2048000 sda2
8 3 1024000 sda3
8 4 1 sda4
8 5 17692672 sda5
4.用 mdadm命令将/dev/sdb5和/dev/sdb6组成磁盘阵列,其中-C表示开启mdadm的创建模式,
-a yes 表示是自动创建; -l 0表示该磁盘阵列的级别为0; -n 表示块设备个数为2
[[email protected] ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb5 /dev/sdb6
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
5.1用cat /proc/mdstat 查看当前系统上所有以启用的RAID设备
[[email protected] ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb6[1] sdb5[0]
2119680 blocks super 1.2 512k chunks
unused devices:
5.2可以查看此时/dev/md0设备的信息
[[email protected] mnt]# fdisk -l /dev/md0
Disk /dev/md0: 2170 MB, 2170552320 bytes
2 heads, 4 sectors/track, 529920 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000
或者
[[email protected] mnt]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2 #版本
Creation Time : Sun Aug 14 03:29:34 2016 #创建时间
Raid Level : raid0 #RAID类型
Array Size : 2119680 (2.02 GiB 2.17 GB) #RAID大小
Raid Devices : 2 #一共有几个设备创建的Raid
Total Devices : 2 #一共有多少设备
Persistence : Superblock is persistent #超级快是否是持久的
Update Time : Sun Aug 14 03:29:34 2016 #更新时间
State : clean #数据是完整地
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K #Chunk的大小
Name : LGRY:0 (local to host LGRY) #当前主机名
UUID : 92919afd:adbc589d:f9c32d64:085b4681 #设备的UUID
Events : 0
Number Major Minor RaidDevice State #标识号码,主设备号,次设备号 以及磁盘状态
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
或者:
[[email protected] ~]# ls /dev/md
md-device-map
[[email protected] ~]# cat /dev/md/md-device-map
md0 1.2 fd9a9192:9d58bcad:642dc3f9:81465b08 /dev/md0
6.格式化RAID设备md0,注意:是此时格式化,而不是创建分区类型后格式化
[[email protected] ~]# mke2fs -t ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
132736 inodes, 529920 blocks
26496 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=545259520
17 block groups
32768 blocks per group, 32768 fragments per group
7808 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
7.挂载该设备
[[email protected] mnt]# mount /dev/md0 /mnt/
[[email protected] mnt]# ls /mnt/
lost+found
8.测试
RAID0的读写能力有提升,但不提供冗余能力,无容错能力,磁盘利用数为n(n为磁盘数),其至少需要两块盘,损坏一块盘就完了,
[[email protected] ~]# mdadm /dev/md0 -f /dev/sdb6
mdadm: set device faulty failed for /dev/sdb6: Device or resource busy
RAID1的读性能提升但写性能下降,有冗余能力,磁盘利用数为n/2,至少需要两块盘,损坏一块还能继续用;
测试RAID1(每个盘大小为2G,创建过程和上面的一样)
再创建三个分区,partprobe /dev/sdb##
先将前两个分区组成磁盘阵列 RAID-1类型
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb5 /dev/sdb6
-l 1表示磁盘阵列的级别为1
其属性为
[[email protected] ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Sep 6 22:29:10 2016
Raid Level : raid1
Array Size : 1059200 (1034.55 MiB 1084.62 MB)
Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Sep 6 22:35:26 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : host:1 (local to host host)
UUID : 327b1d31:7f26c899:5f243db0:cd84e496
Events : 17
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
(1)将/dev/sdb8模拟损坏(-f)
[[email protected] ~]# mdadm /dev/md1 -f /dev/sdb6
mdadm: set /dev/sdb6 faulty in /dev/md1
(2)查看此时/dev/md1的状态
[[email protected] ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Sep 6 22:29:10 2016
Raid Level : raid1
Array Size : 1059200 (1034.55 MiB 1084.62 MB)
Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Sep 6 22:47:25 2016
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : host:1 (local to host host)
UUID : 327b1d31:7f26c899:5f243db0:cd84e496
Events : 19
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 0 0 1 removed
1 8 22 - faulty /dev/sdb6
(3)查看该磁盘中的文件能否访问
损坏前
[[email protected] ~]# ls
inittab lost+found
[[email protected] ~]# cat inittab
# inittab is only used by upstart for the default runlevel.
..
损坏后
[[email protected] ~]# cat inittab
# inittab is only used by upstart for the default runlevel.
..
可见该RAID1方式下其中一个盘损坏后文件还可以访问(其实就是镜像技术,两个2G的盘都存放数据,只不过一个是另一个的备份或者镜像)
(4)盘损坏后在该阵列中就没用了,可以移除出去(-r)
[[email protected] ~]# mdadm /dev/md1 -r /dev/sdb6
mdadm: hot removed /dev/sdb6 from /dev/md1
此时的/dev/md1信息是
[[email protected] ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Sep 6 22:29:10 2016
Raid Level : raid1
Array Size : 1059200 (1034.55 MiB 1084.62 MB)
Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Tue Sep 6 23:00:10 2016
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : host:1 (local to host host)
UUID : 327b1d31:7f26c899:5f243db0:cd84e496
Events : 28
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5 #只有这一块盘了
1 0 0 1 removed
(5)此时的RAID还有一块盘,如果这个盘也损坏了,那就完了,所以可以另外添加一个(分区别忘了将它的类型改为fd,大小和前面的分区也要一致)
[[email protected] ~]# mdadm /dev/md1 -a /dev/sdb9
mdadm: added /dev/sdb9
此时的/dev/md1信息是
[[email protected] ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Jul 16 02:19:39 2015
Raid Level : raid1
Array Size : 2102400 (2.01 GiB 2.15 GB)
Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Jul 16 02:43:07 2015
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : LGRY:1 (local to host LGRY)
UUID : c0bf61c5:2697069d:32c3b3ab:2b7c9523
Events : 43
Number Major Minor RaidDevice State
0 8 23 0 active sync /dev/sdb7
2 8 25 1 active sync /dev/sdb9
补充:查看阵列信息
[[email protected] ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb7[2] sdb5[0]
1059200 blocks super 1.2 [2/2] [UU]
unused devices: <none>
其中sdb7[2]:该设备在RAID1中的次序;[2/2]:RAID使用2个设备,当前有2个设备正常运行,当某一个设备出错时将会显示[2/1];
[UU]:RAID中所有磁盘运转正常。如果出错则显示[_U],则说明RAID中第一磁盘fail。
(6)此时让/dev/adb5损坏还是可以查看盘中的内容
[[email protected] ~]# mdadm /dev/md1 -f /dev/sdb5
mdadm: set /dev/sdb7 faulty in /dev/md1
[[email protected] ~]# cat /mnt/inittab
# inittab is only used by upstart for the default runlevel.
..
(7)停止阵列
[[email protected] ~]# umount /mnt/ ##先卸载
[[email protected] ~]# mdadm -S /dev/md1 ##再停止阵列
mdadm: stopped /dev/md1
(8)装配RAID1
[[email protected] ~]# mdadm -A /dev/md1
mdadm: /dev/md1 not identified in config file.
此时并不让装配,因为它不知道/dev/md1中都有那些分区或盘
给/dev/md1添加设备(只不过此次两个设备中有一个是坏的)
[[email protected] ~]# mdadm -A /dev/md1 /dev/sdb5 /dev/sdb7
mdadm: /dev/md1 has been started with 1 drive (out of 2).
查看此时设备启动信息,可知md1又启动起来了
[[email protected] ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb7[2]
2102400 blocks super 1.2 [2/1] [_U]
unused devices:
】
本文出自 “11160930” 博客,请务必保留此出处http://11170930.blog.51cto.com/11160930/1847012
以上是关于2016-9-6 RAID及mdadm命令的主要内容,如果未能解决你的问题,请参考以下文章