RAID設備及mdadm命令
涉及到的命令:
mdadm、watch
RAID redundant arrays inexpensive disks 廉價冗餘磁盤陣列
後來改名爲:redundant arrays independent disks 獨立冗餘磁盤陣列
======================理論部分=====================
從兩個方面考慮:
性能:將I/O分散至多個設備
冗餘:將同一數據存放在至少兩個硬盤上
RAID級別:(僅用於表明其組合方式不同)
RAID0:條帶卷
至少需要2塊硬盤,使用率100%,將數據分散在各個硬盤中,讀寫性能均有提升(但不是越多越好,性能有拐點,呈拋物線狀),無冗餘能力
RAID1:鏡像卷
寫性能有所下降,讀性能有所提升,使用空間是50%,成對硬盤出現(至少2個),有冗餘能力
RAID4
至少需要3塊硬盤,數據分散在不同的硬盤中,其中一塊硬盤存放數據異或運算校驗碼,有冗餘能力,但至多壞一塊,空間:(N-1)*DISK,讀寫均有提升
RAID5
數據異或運算校驗碼分散在不同的磁盤中,相比較RAID4而言,不需要專門的校驗盤,讀寫能力提升,有冗餘能力,但至多壞一塊硬盤,空間(N-1)*DISK,至少需要3塊硬盤,RAID4中有獨立的校驗盤,每次讀取數據都會用到,所以使用比較頻繁,損壞的可能性就大大增加,RAID5把校驗碼分散在不同的磁盤中,這樣就能分散開訪問頻率
RAID6
至少4塊盤,兩塊數據盤兩塊校驗盤,至多允許壞2塊,讀寫性能提升,有冗餘能力,空間(N-2)*DISK
常見的組合方式
RAID10(常用)
先組成raid1鏡像組,然後多個鏡像組組成raid0,至少需要4塊硬盤,至多允許同時損壞半數硬盤,但同一組硬盤不能同時損壞,讀、寫有提升,有較好的冗餘能力,使用空間n*DISK/2(一半)
raid01
先組織成raid0,然後多個raid0在組成raid1,至少需要4塊硬盤
raid50(冗餘)
先組成raid5組,然後把多個raid5組組成raid0,至少需要6塊硬盤,同組raid5內,不允許同時壞兩個盤,但不同組可以同時各壞一個,讀寫性能提升,有較好的冗餘能力
JBOD(just a bunch of disks)簡單磁盤捆綁,將多個磁盤串聯在一起,當作一個設備使用,數據寫滿一個再寫入另外一個盤,而不像RAID0那樣,數據分散在不同的磁盤中
==================================================
生產情況下,不建議使用軟件raid,以下軟raid僅作爲了解即可
md:multi disks
mdadm 命令來組織使用軟raid
模式化的命令:
-A 裝配模式
-C 創建模式
-F 監控模式
-D 查看軟raid的詳細信息
-S 停止RAID
-x # 對於有冗餘能力的raid級別,此選項爲其制定可用空閒盤的個數(好處就是在其中一塊盤壞的情況下,空閒盤會自動替補上去);注意-x 指定的個數加上 -n的個數,二者之和要等於後面DEVICES的數量
管理模式
-f 標記爲壞的
-r 移出
-a 添加
-C:創建模式專用選項
-n # 用於創建raid設備的磁盤設備個數
-l # 指明RAID級別
-a yes|no 是否爲正在創建的raid設備自動創建設備文件(/dev/md#....,#僅表示設備編號,而與級別無關)
-c chunk_size 默認爲64K(如果存放的單個大文件,可以把chunk_size改大一些,存放的都是單個小文件,可以改小一點 2^n)
設備狀態信息輸出/proc/mdstat
注意:不應該使用同一個磁盤上的多個分區創建raid設備(軟raid是支持分區創建的)
創建分區時,分區格式調整爲:fd Linux raid auto(非常重要)
示例:
mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sda7 /dev/sdb7
查看信息:
cat /proc/mdstat
小技巧:#watch -n1 ' cat /proc/mdstat' 動態查看(每隔一秒查看一次),有點類似 tail -f FILE
watch命令的用法
-n # 每個幾秒鐘刷新一次,間隔時長
watch -n # 'COMMAND'
mdadm -f /dev/md0 /dev/sdb7 標記/dev/mdo這個raid中的/dev/sdb7設備爲一個壞的設備(faulty狀態)
因爲其中一個標記成壞的了,所以添加一個進行修復:
mdadm -a /dev/md0 /dev/sda8 在/dev/md0這個raid中添加/dev/sda8,添加OK後,cat /proc/mdstat 查看進度
mdadm -r /dev/md0 /dev/sdb7 移出/dev/sdb7
mdadm -D /dev/md0 查看md0的詳細信息
停止raid:
mdadm -S /dev/md# 停止指定的raid設備,將來使用時需要”裝配“ (-A)
重新裝配指定的raid
mdadm -A /dev/md# /dev/DEVICES
可能會讀取裝配文件:/etc/mdam.conf(不存在,如果需要的話需要手動創建)
注意:有冗餘能力的RAID僅避免因硬件損壞而導致業務終止,也能避免因硬件損壞而導致數據丟失,它不能取代備份的功能
============================練習============================
1、創建一個大小爲10G的RAID 1 要求有一個空閒盤,而且CHUNK大小爲128K
[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128 /dev/sda{6,7} /dev/sdb1
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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
可以對其格式,然後掛載使用
[root@localhost ~]# mkfs.ext4 /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 28 01:25:39 2015
Raid Level : raid1
Array Size : 10479232 (9.99 GiB 10.73 GB)
Used Dev Size : 10479232 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Oct 28 01:29:55 2015
State : active
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 672b6987:7a038b6e:9863300e:a049f5a9
Events : 18
Number Major Minor RaidDevice State
0 8 6 0 active sync /dev/sda6
1 8 7 1 active sync /dev/sda7
2 8 17 - spare /dev/sdb1
2、創建一個大小爲5G的RAID5設備,chunk大小爲256K,格式化爲ext4文件系統,要求開機自動掛載/backup目錄,而且不更新訪問時間戳,而且支持acl功能
創建三個分區各爲2560M,過程略(創建的時候+2.5是不行的,可以寫+2560M)
/dev/sda8 /dev/sdb5 /dev/sdb6
[root@localhost yum.repos.d]# partx -l /dev/sda
# 1: 2048- 1026047 ( 1024000 sectors, 524 MB)
# 2: 1026048- 62466047 ( 61440000 sectors, 31457 MB)
# 3: 62466048- 82946047 ( 20480000 sectors, 10485 MB)
# 4: 82946048-167772159 ( 84826112 sectors, 43430 MB)
# 5: 82950144- 87046143 ( 4096000 sectors, 2097 MB)
# 6: 87046207-108021059 ( 20974853 sectors, 10739 MB)
# 7: 108021123-129001949 ( 20980827 sectors, 10742 MB)
# 8: 129002013-134255204 ( 5253192 sectors, 2689 MB)
[root@localhost yum.repos.d]# partx -l /dev/sdb
# 1: 63- 20980889 ( 20980827 sectors, 10742 MB)
# 2: 20980890- 41961779 ( 20980890 sectors, 10742 MB)
# 3: 0- -1 ( 0 sectors, 0 MB)
# 4: 41961780- 83875364 ( 41913585 sectors, 21459 MB)
# 5: 41961843- 47215034 ( 5253192 sectors, 2689 MB)
# 6: 47215098- 52468289 ( 5253192 sectors, 2689 MB)
[root@localhost yum.repos.d]# mdadm -C /dev/md1 -a yes -n 3 -l 5 -c 256 /dev/sda8 /dev/sdb{5,6}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost yum.repos.d]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Oct 28 14:16:50 2015
Raid Level : raid5
Array Size : 5249024 (5.01 GiB 5.38 GB)
Used Dev Size : 2624512 (2.50 GiB 2.69 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Oct 28 14:18:28 2015
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 256K
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : c793a006:d3929608:9eb5de8b:67744df4
Events : 18
Number Major Minor RaidDevice State
0 8 8 0 active sync /dev/sda8
1 8 21 1 active sync /dev/sdb5
3 8 22 2 active sync /dev/sdb6
[root@localhost yum.repos.d]# mkfs -t ext4 /dev/md1
[root@localhost yum.repos.d]# blkid /dev/md1
/dev/md1: UUID="786b54c9-d523-421f-80e3-535618f88b4a" TYPE="ext4"
[root@localhost yum.repos.d]# mkdir /backup
[root@localhost yum.repos.d]# vim /etc/fstab
添加:
UUID=786b54c9-d523-421f-80e3-535618f88b4a /backup ext4 defaults,noatime,acl 0 0
[root@localhost yum.repos.d]# mount -a
[root@localhost yum.repos.d]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda3 on /usr type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/md1 on /backup type ext4 (rw,noatime,acl)
df查看結果:
/dev/md1 ext4 4.9G 11M 4.6G 1% /backup