Linux系統下配置軟RAID及維護的例子

來源:互聯網
上載者:User

Linux系統下配置軟RAID


一、設定磁碟
這裡我們以Raid 1為例,其他的Raid層級設定類似。Riad 1需要兩塊硬碟,我在vps裡添加了2塊80G的硬碟。系統裡使用fdisk –l 命令查看
二、安裝mdadm
mdadm 是multiple devices admin 的簡稱,它是Linux下的一款標準的軟體RAID 管理工具。
1、先查看是否安裝了mdadm軟體

# rpm -qa|grep mdadm

2、如果未安裝,則使用yum 方式安裝。


# yum install mdadm
三、建立RAID

1、建立分區
通過命令查看建立的兩塊硬碟是/dev/sdb和/dev/sdc,首先對他們進行分區。

# fdisk /dev/sdb        //對sdb 進行分區
PS:詳細的分區過程參考以前寫的文章Centos下磁碟分割及掛載,需要注意的是最後建立好分區先別輸入"w"儲存,而是輸入"p"查看分區情況。
2、修改分區類型
預設建立分區的類型是Linux,代號83,我們需要將其修改為raid 類型。輸入"t" ,然後輸入"L" 列出所有的檔案格式,這裡我們選擇"fd Linux raid auto", 輸入"fd",然後再輸入"p" 查看分區情況,這是分區格式已經變成了Linux raid autodetect.
3、儲存分區
輸入"w",儲存分區。
使用同樣方法對/dev/sdc進行分區操作。
4、同步分區情況
使用partprobe 命令同步分區情況。


# partprobe
 
Warning: Unable to open /dev/hdc read-write (Read-only file system). /dev/hdc has been opened read-only.
5、查看分區情況

# fdisk -l /dev/sdb /dev/sdc
 
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
Device Boot Start End Blocks Id System
/dev/sdb1 1 10443 83883366 fd Linux raid autodetect
 
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
Device Boot Start End Blocks Id System
/dev/sdc1 1 10443 83883366+ fd Linux raid autodetect
6、開始建立Raid


# mdadm -C /dev/md0 -ayes -l1 -n2 /dev/sd[b,c]1
 
mdadm: largest drive (/dev/sdc1) exceed size (83883264K) by more than 1%
 
Continue creating array?
 
Continue creating array? (y/n) y
 
mdadm: array /dev/md0 started.
PS:
-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  參與建立陣列的磁碟名稱;
同理建立其他的Raid命令如下:
Raid 0

# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1
Raid 5

# mdadm -C /dev/md0 -ayes -l5 –n3 -x1 /dev/sd[b,c,d,e]1
PS:"-x1" 或"--spare-devices=1" 表示當前陣列中熱備盤只有一塊,若有多塊熱備盤,則將"--spare-devices" 的值設定為相應的數目。
7、查看Raid狀態

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
83883264 blocks [2/2] [UU]
[>....................] resync = 2.8% (2396800/83883264) finish=6.2min speed=217890K/sec
 
unused devices: <none>

# mdadm -D /dev/md0
/dev/md1:
Version : 0.90
Creation Time : Wed Oct 28 11:12:48 2015
Raid Level : raid1
Array Size : 83883264 (80.00 GiB 85.90 GB)
Used Dev Size : 83883264 (80.00 GiB 85.90 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
 
Update Time : Wed Oct 28 11:12:48 2015
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
 
Rebuild Status : 5% complete
 
UUID : 6c1ffaa0:53fc5fd9:59882ec1:0fc5dd2b
Events : 0.1
 
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
PS:
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值,在系統中是唯一的
8、 建立RAID設定檔
RAID的設定檔為/etc/mdadm.conf,預設是不存在的,需要手工建立。
該設定檔的主要作用是系統啟動的時候能夠自動載入軟RAID,同時也方便日後管理。但不是必須的,推薦對該檔案進行配置。如果沒有這個檔案,則reboot 後,已經建立好的md0 會自動變成md127。

# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf
 
# mdadm –Ds >> /etc/mdadm.conf
9、修改RAID設定檔
當前產生的/etc/mdadm.conf 檔案內容並不符合所規定的格式,所以也是不生效的。要把mdadm.conf檔案修改成如下格式(也就是把metadata的參數去掉):

# cat /etc/mdadm.conf
 
DEVICE /dev/sdb1 /dev/sdc1
 
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=5160ea40:cb2b44f1:c650d2ef:0db09fd0
10、格式化磁碟陣列
1
# mkfs.ext4 /dev/md0
11、建立掛載點並掛載

# mkdir /raid1
 
# mount /dev/md0 /raid1/
12、寫入/etc/fstab
為了下次開機還能正常使用我們的RAID裝置,需要將掛載的資訊寫入/etc/fstab 檔案中。
1
/dev/md0                /raid1                  ext4    defaults        0 0

軟RAID及維護的例子

一、硬碟故障恢複
1、當軟RAID 檢測到某個磁碟有故障時,會自動標籤該磁碟為故障磁碟,並停止對故障磁碟的讀寫操作。

# mdadm /dev/md0 -f /dev/sdb1
 
mdadm: set /dev/sdb1 faulty in /dev/md0
2、查看raid狀態

# cat /proc/mdstat
 
Personalities : [raid1]
 
md0 : active raid1 sdb1[2](F) sdc1[1]
 
16771712 blocks [2/1] [_U]
 
unused devices: <none>
PS:
a、發現sdb1後面多了個(F),表示這塊硬碟已損壞。
b、"[_U]" 表示當前陣列可以正常使用的裝置是/dev/sdc1,如果是裝置 “/dev/sdc1” 出現故障時,則將變成[U_]。
3、移除故障盤

# mdadm /dev/md0 -r /dev/sdb1
 
mdadm: hot removed /dev/sdb1
4、查看md0狀態,可以看到總數變成1,sdb也移除了,但是總容量沒變

# mdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Thu Oct 29 14:32:00 2015
Raid Level : raid1
Array Size : 16771712 (15.99 GiB 17.17 GB)
Used Dev Size : 16771712 (15.99 GiB 17.17 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent
 
Update Time : Thu Oct 29 15:35:16 2015
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
 
UUID : c136a5bf:590fd311:e20a494f:f3c508b2
Events : 0.26
 
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
5、添加新硬碟
如果是實際生產中添加新的硬碟,同樣需要對新硬碟進行建立分區的操作,這裡我們為了方便,將剛才類比損壞的硬碟再次新加到raid1中
1
mdadm /dev/md0 -a /dev/sdb1
再次查看raid,發現raid1正在恢複,等待完成即可

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sdc1[1]
16771712 blocks [2/1] [_U]
[>....................] recovery = 4.0% (672640/16771712) finish=2.7min speed=96091K/sec
unused devices: <none>
二、RAID擴容
如果現在已經做好的RAID空間還是不夠用的話,那麼我們可以向裡面增加新的硬碟,來增加RAID的空間。
1、添加一塊硬碟,然後跟之前步驟一樣分區
2、向raid1中添加一塊硬碟

mdadm /dev/md0 -a /dev/sdd1
3、查看raid狀態

# mdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Thu Oct 29 14:32:00 2015
Raid Level : raid1
Array Size : 16771712 (15.99 GiB 17.17 GB)
Used Dev Size : 16771712 (15.99 GiB 17.17 GB)
Raid Devices : 2
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
 
Update Time : Thu Oct 29 16:13:13 2015
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
 
UUID : c136a5bf:590fd311:e20a494f:f3c508b2
Events : 0.34
 
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
 
2 8 49 - spare /dev/sdd1
預設情況下,我們向RAID中增加的磁碟,會被預設當作熱備盤,我們需要把熱備盤加入到RAID的活動盤中。
4、熱備盤轉換成活動盤
1
# mdadm -G /dev/md0 -n3
PS:-n3表示使用3塊活動盤,系統會自動rebuilding
5、擴容檔案系統
RAID 構建完畢後,陣列容量增加,但是檔案系統還沒有增加,這時我們還需要對檔案系統進行擴容。

# df –TH
 
# resize2fs /dev/md0

6、修改RAID 設定檔

需要在設定檔/etc/mdadm.conf裡添加上新增的硬碟sdd1

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
 
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=c136a5bf:590fd311:e20a494f:f3c508b2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.