前言
RAID常用來管理磁盤陣列,但是linux也有軟件RAID,通過對多個分區進行RAID管理。
內核中MD模塊軟件 將制定的磁盤組合成RAID 例如 /dev/sdb /dev/sdc --> /dev/md0
寫數據時候,操作系統到內核態時,調用 MD模塊,內容寫到 RAID中, MD模塊再降內容分成兩片 在寫到 /dev/sdb /dev/sdc
注意:操作系統奔潰時候,寫入的時候,操作系統默認寫入了,但是MD模塊沒有寫入
環境
建議避免使用軟RAID,但是本篇通過軟RAID進行練習操作
實驗環境:VMware Workstation 14 Pro
系統平臺:ubuntu 16.04 LTS
mdadm版本:mdadm - v3.3 - 3rd September 2013
步驟
step1 磁盤設置
在VMware 中模擬物理增加磁盤,我們將創建RAID0,RAID1,RAID5分區
RAID 0 2塊硬盤
RAID 1 2塊硬盤
RAID 5 4塊硬盤
總共添加8塊硬盤,每塊5GB,上面有添加圖示。
fdisk -l 查看添加磁盤
step 2 安裝 mdadm
mdadm multiple devices admin 是標準的軟件RAID管理工具
dpkg -l | grep mdadm 查看是否安裝
未安裝,則通過命令 apt-get install mdadm安裝
step3 創建 RAID 0
3.1 新建分區
使用 /dev/sdb 和 /dev/sdc 創建 RAID0
#fdisk /dev/sdb //對sdb進行分區
默認新建分區的類型是Linux,代號83,我們需要將其修改爲raid 類型。輸入"t" ,然後輸入"L" 列出所有的文件格式,這裏我們選擇"fd Linux raid auto", 輸入"fd",然後再輸入"p" 查看分區情況,這是分區格式已經變成了Linux raid autodetect。詳細的步驟在上文找。
同樣的方法對 /dev/sdc 進行分區
3.2同步分區情況
partprobe 命令同步分區情況
3.3 查看現在狀態
fdisk -l /dev/sdb /dev/sdc
3.4 創建RAID 0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd[b,c]1
- -C --create 創建陣列;
- -a --auto 同意創建設備,如不加此參數時必須先使用mknod 命令來創建一個RAID設備,不過推薦使用-a yes參數一次性創建;
- -l --level 陣列模式,支持的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
- -n --raid-devices 陣列中活動磁盤的數目,該數目加上備用磁盤的數目應該等於陣列中總的磁盤數目;
- /dev/md0 陣列的設備名稱;
- /dev/sd{b,c}1 參與創建陣列的磁盤名稱;
3.5 查看raid 0狀態
cat /proc/mdstat
mdadm -D /dev/md0
說明:
- Raid Level : 陣列級別;
- Array Size : 陣列容量大小;
- Raid Devices : RAID成員的個數;
- Total Devices : RAID中下屬成員的總計個數,因爲還有冗餘硬盤或分區,也就是spare,爲了RAID的正常運珩,隨時可以推上去加入RAID的;
- State : clean, degraded, recovering 狀態,包括三個狀態,clean 表示正常,degraded 表示有問題,recovering 表示正在恢復或構建;
- Active Devices : 被激活的RAID成員個數;
- Working Devices : 正常的工作的RAID成員個數;
- Failed Devices : 出問題的RAID成員;
- Spare Devices : 備用RAID成員個數,當一個RAID的成員出問題時,用其它硬盤或分區來頂替時,RAID要進行構建,在沒構建完成時,這個成員也會被認爲是spare設備;
- UUID : RAID的UUID值,在系統中是唯一的;
3.6 添加RAID 配置文件 /etc/mdadm/mdadm.conf
該配置文件的主要作用是系統啓動的時候能夠自動加載軟RAID,同時也方便日後管理。但不是必須的,推薦對該文件進行配置。
需要創建這個文件,測試中發現,如果沒有這個文件,則reboot 後,已經創建好的md0 會自動變成md127。
/etc/mdadm/mdadm.conf 文件內容包括:
由DEVICE 選項指定用於軟RAID的所有設備,和ARRAY 選項所指定陣列的設備名、RAID級別、陣列中活動設備的數目以及設備的UUID號。
3.6.1 添加信息到配置文件
#echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
3.6.2 修改配置文件
當前生成的/etc/mdadm/mdadm.conf 文件內容並不符合所規定的格式,所以也是不生效的,這時需要手工修改該文件內容爲如下格式:
#vim /etc/mdadm.conf
將內容改爲
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md/md0 metadata=1.2 name=ubpara:0 UUID=353e837f:674a11a3:29e7cb83:c77ca832
注意 /dev/md/md0 在目錄中要有一一對應,不然找不到
詳細配置格式查看 man 5 mdadm.conf
3.7 格式化磁盤陣列
mkfs.ext4 /dev/md0
3.8建立掛載點並掛載
mkdir /mnt/raid0
mount /dev/md0 /mnt/raid0可以看到,/dev/md0 可用大小爲9.9G
3.9 寫入 /etc/fstab
爲了下次開機還能正常使用我們的RAID設備,需要將掛載的信息寫入/etc/fstab 文件中。
然後reboot 測試開機是否自動掛載,raid0 創建完畢
step 4 創建RAID1
和創建raid0 類似,使用 /dev/sdd 和 /dev/sde 創建 RAID1
4.1創建分區並修改分區類型
4.2開始創建RAID1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[d,e]1
4.3查看raid 1 狀態
cat /proc/mdstat
mdadm -D /dev/md1
說明:Used Dev Size : RAID單位成員容量大小,也就是構成RAID的成員硬盤或分區的容量的大小;
4.4添加raid1 到RAID 配置文件/etc/mdadm.conf 並修改
#echo DEVICE /dev/sd{d,e}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
4.5 格式化磁盤陣列
mkfs.ext4 /dev/md1
4.6 建立掛載點並掛載
mkdir /mnt/raid1
mount /dev/md1 /mnt/raid1
/dev/md1 的可用幹空間大小爲4.9G
4.7寫入/etc/fstab
然後reboot 測試開機是否自動掛載,raid1 創建完畢
step5 創建RAID5
RAID至少需要三塊硬盤,我們拿/dev/sdf、/dev/sdg、/dev/sdh、/dev/sdi四塊硬盤來做實驗,三塊爲活動盤,另一塊爲熱備份盤
5.1新建分區,並修改類型
5.2創建RAID5
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd[f,g,h,i]1
說明:"-x1" 或"–spare-devices=1" 表示當前陣列中熱備盤只有一塊,若有多塊熱備盤,則將"–spare-devices" 的值設置爲相應的數目
5.3 查看raid5狀態
cat /proc/mdstat
mdadm -D /dev/md5
待創建完畢,狀態如下
5.4添加raid5 到RAID配置文件 /etc/mdadm/mdadm.conf
#echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
5.5格式化磁盤陣列
mkfs.ext4 /dev/md5
5.6建立掛載點並掛載
mkdir /mnt/raid5
mount /dev/md5 /mnt/raid5
raid5 的可用大小爲9.9G,即(3-1)x 5G.
5.7寫入/etc/fstab
然後reboot 測試開機是否自動掛載,raid5 創建完畢