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
下一篇 2017-09-01

相關推薦

  • shell腳本編程__bash的配置

    shell腳本編程__bash的配置   一、bash的配置文件:   按生效范圍劃分,存在兩類:     全局配置: /etc/profile /etc/profile.d/*.sh /etc/bashrc    個人配置: ~/.bash_profile ~/.bashrc 二、she…

    Linux干貨 2016-08-26
  • 馬哥教育網絡班22期+第11周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 Bob先利用單向加密算法提取當前數據的指紋(特征碼),再用自己的私鑰加密數據指紋并附加于數據尾部, 然后利用對稱加密將整個文件加密,之后用Alice的公鑰加密對稱加密密鑰附加于尾部。 Alice收到數據后,先用自己的私鑰解密,得到對稱加密密鑰,之后用對稱加密密鑰解密,然后用Bob的公鑰 解密得到數據指紋,并且驗…

    Linux干貨 2016-11-14
  • 分別設置CentOS 6與CentOS 7的開機啟動為3模式 遇到的問題

    vim /etc/inittab (centos 6) 把id:5: initdefault: 改成3模式 reboot 2  (centos7) vim /etc/inittab 打開文件沒有id:5: initdefault: 這一項 systemd使用比sysvinit的運行級別更為自由的target概念作為替代 第三運行級: multi-u…

    2017-05-18
  • linux基礎學習-第六天

    2016-08-02 授課內容: 用戶和組管理命令 理解并設置文件權限 默認權限 特殊權限 文件ACL 用戶和組管理命令 用戶和組的配置文件:/etc/default/useradd(相當于useradd -D)、/etc/skel(創建用戶的家目錄配置文件)、/etc/login.defs(修改用戶的密碼策略配置) /etc/default/useradd…

    Linux干貨 2016-08-04
  • 第二周作業新

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 pwd :顯示當前所在路徑   cd :切換目錄   cd – :在上次目錄與當前目錄之間切換。   cd ~ :切換回自己的家目錄   cd . :當前目錄      cd .. :切換到…

    2017-02-18
欧美性久久久久