RAID設備及mdadm命令

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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章