Linux mdadm命令解析

mdadm命令解析

一,在Linux系統中目前MD(Multiple Devices)虛擬塊設備的方式實現軟件RAID,利用多個底層的塊設備虛擬出一個新的虛擬設備,并且利用條帶化(stripping)技術將數據塊均勻分布到多個磁盤上來提高虛擬設備的讀寫性能,利用不同的數據冗余算法來保護用戶數據不會因為某個塊設備的故障而完全丟失,而且還能在設備被替換后將丟失的數據恢復到新的設備上。

目前MD支持 Linear,Mulyipath,Raid0(stripping),Raid1(mirror),Raid4,Raid5,Raid6,Raid10等不同的冗余級別和級成方式,當然也能支持多個RAID陳列的層疊組成Raid1 0,raid5 1等類型的陳列,

文章主要講解用戶層mdadm如何管理軟件RAID及使用中經常遇到的問題及解決辦法,現流行的系統中一般已經化悲憤MD驅動模塊直接編譯到內核中或編譯為可動態加載的驅動模塊,我們可以在機器啟動后通過cat /proc/mdstat看內核是否已經加載MD驅動或者cat/proc/devices是否有MD塊設備,并且使用lsmod看MD是否可以模塊加載到系統中。

# cat /proc/mdstat
Personalities :
unused devices: 
# cat /proc/devices | grep md
1 ramdisk
9 md
254 mdp
# mdadm –version
mdadm – v3.3.4 – 3rd August 2015

二,mdadm管理軟RAID陳列

mdadm程序是一個獨立的程序,能完成所有的軟件raid管理功能,主要有7種使用模式:

  1. Create:使用空閑的設備創建新的整列,每個設備有元數據塊
  2. Assemble:將原來屬于一個陣列的每個塊設備組裝為陣列
  3. Build:創建或組裝不需要元數據的陣列,每個設備沒有元數據塊
  4. Manage:管理已經存儲陣列中的設備,比如增加熱備磁盤或者設置某個磁盤失效,然后從陣列中刪除這個磁盤
  5. Misc:報告或者修改陣列中相關設備的信息,比如查詢陣列或者設備的狀態信息
  6. Grow:改變陣列中每一個設備被使用的容量或陣列中的設備的數目
  7. Monitor:監控一個或多個陣列,上報指定的事件

如果MD驅動被編譯到內核中,當內核調用執行MD驅動驅動時,會自動查找分區為FD(linux raid autodetect)格式的磁盤。所以一般關于會使用fdisk工具將HD磁盤或者SD磁盤分區,在設置為FD磁盤。

# fdisk /dev/hdc
The number of cylinders for this disk is set to 25232.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-25232, default 1):
Using default value 1
Last cylinder or size or sizeM or sizeK (1-25232, default 25232):
Using default value 25232
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or
busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

如果MD驅動時模塊形式加載,需要在系統運行時由用戶層腳本控制RAID陳列啟動運行,如在FedoraCore系統中在、etc/rc.d/rc.sysinit文件中有啟動軟RAID陣列的指令,若RAID的配置文件mdadm.conf存在,則調用mdadm檢查配置文件里的選項,然后啟動RAID陣列。

echo “raidautorun /dev/md0” | nash –quiet
if [ -f /etc/mdadm.conf]; then
/sbin/mdadm -A -s

-A:指裝載一個已存在的陣列

-s:指查找mdadm.conf文件中的配置信息。

人工停止盤陳:#mdadm -S /dev/md0

創建新的陣列

mdadm使用

–create(或者縮寫-C)參數來創建新的陳列并且將一些重要陣列的表示信息作為元數據可以寫在每一個底層設備的指定區間

–level(-l)表示陣列的RAID級別

–chunk(-c)表示每個條帶單元大小,以KB為單位,默認為64KB,條帶單元的大小配置對不同負載下的陣列讀寫性能有很大影響

–raid-devices(-n)表示陣列中活躍的設備個數

–spare-devices(-x)表示陣列中熱備盤的個數,一定陣列中某個磁盤失效,MD內核驅動程序自動用將熱備磁盤加入到陣列

,然后重構丟失磁盤上的數據到熱備磁盤上

創建一個RAID 0設備:

mdadm –create /dev/md0 –level=0 –chunk=32 –raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

創建一個RAID 1設備:

mdadm –create /dev/md0 –level=1 –chunk=128 –raid-devices=2 –spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1

創建一個RAID 5設備:

mdadm –create /dev/md0 –level=5 –raid-devices=5 /dev/sd[c-g]1 -spare-devices=1 /dev/sdb1

創建一個RAID 10設備:

mdadm -C /dev/md0 -l10 -n6 /dev/sd[b-g] -x1 /dev/sdh

創建一個RAID1 0設備:

mdadm -C /dev/md0 -l 1 -n2 /dev/sdb dev/sdc

mdadm -C /dev/md1 -l 1 -n2 /dev/sdd dev/sde

mdadm -C /dev/md2 -l 1 -n2 /dev/sdf  dev/sdg

mdadm -C /dev/md3 -l 0 -n3 /dev/md0 /dev/md1 /dev/md2

初始化的時間長短和磁盤陣列自身性能以及讀寫的應用負載相關,使用cat /proc/mdstat信息查詢RAID陣列當前重構的速度和語氣的完成時間。

# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
[===>………..] resync = 15.3% (483072/3145536) finish=0.3min speed=120768K/sec
unused devices: 
# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
unused devices: 

使用陣列:

MD設備可以像普通塊設備那樣直接讀寫,也可以做文件系統格式化。

#mke2fs -j /dev/md0
mkdir -p /mnt/md-test
#mount /dev/md0 /mnt/md-test

停止正在運行的陳列:

當陣列沒有文件系統或者其他存儲應用以及高級設備使用的話,可以使用–stop(-S)停止陣列,如果命令返回設備或者資源忙類型的錯誤,說明/dev/md0正在被上層應用使用,暫時不能停止,必須要首先停止上層的應用,這樣也能保證陣列上數據的一致性。

# ./mdadm –stop /dev/md0
mdadm: fail to stop array /dev/md0: Device or resource busy
# umount /dev/md0
#./mdadm –stop /dev/md0 
mdadm: stopped /dev/md0


暫時和大家分享到這里,有不足的地方請諒解。

原創文章,作者:eedsxb,如若轉載,請注明出處:http://www.www58058.com/85697

(3)
eedsxbeedsxb
上一篇 2017-08-31 16:20
下一篇 2017-09-01 14:12

相關推薦

  • 馬哥教育21期網絡班—第六周課程+練習—-成長進行時

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/rc.sysinit&nbs…

    Linux干貨 2016-08-03
  • man和history及bashi的快捷鍵

    man:幫助命令     命令格式:man# cmd;使用時可以先使用whatis 查詢所對應的man的章節,然后用對應的man章節來查詢幫助;     info:本地幫助文檔     官方文檔,在線查詢等等,如果是付費版系統的話可以使用S…

    Linux干貨 2016-07-29
  • 例圖分析軟、硬鏈接

    在linux系統中存在兩種鏈接方式硬鏈接和軟連接,兩種鏈接方式在系統中是完全不同的模式,本文主要詳述兩種的區別并給與圖示; 創建guo ,lin兩個文件,兩個文件分別用于演示軟連接和硬鏈接     圖一:創建文件   創建軟連接guo.ruan1     圖二:創建軟連…

    Linux干貨 2016-10-29
  • 第七周

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; 第一步先在磁盤上創建分區:fdisk /dev/sdc n –> e –> 5 –> default &#…

    Linux干貨 2017-05-18
  • 來馬哥教育后

    來北京三天了,說實話,我長了不少見識,甚至可以說是見過了以前一些從沒想到過的事情,我拼了命往大城市來,如今如我所愿了,我來的時候發誓對自己說:我要留在北京,我也要積累足夠的資本讓自己真正成為大城市的上層社會人士,現在吃多少苦我都無所謂。 我以前在建筑工地的時候想:我將來能學IT是最幸福的事了。當時真是這么想的,等我真到馬哥教育,我發現,我把問題想的太簡單,就…

    Linux干貨 2018-03-26
  • N21-北京-泥人-馬哥教育網絡班21期+第一周課程練習

    馬哥教育網絡班21期  第一周課程練習 一、計算機的組成 1、計算機主要由以下幾部分組成:運算器 控制器 存儲器(編址存儲單元)、 輸入、輸出設備   2、運算器負責運算:只能做二進制的數學、邏輯運算, 控制器:控制由哪得到數據,放到哪去,協調運算器、存儲器、輸入、輸出等設備 運算器、控制器整合到一起就是常說的中央處理器,也就是CPU。 …

    Linux干貨 2016-07-12
欧美性久久久久