歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 磁盤管理之軟RAID

磁盤管理之軟RAID

日期:2017/2/28 13:49:00   编辑:Linux教程

1、RAID概述

RAID,Redundant Arrays of Inexpensive(Independent)Disks的簡稱,獨立磁盤冗余陣列,簡稱磁盤陣列。簡單來說,RAID是把多個硬盤組合成為一個邏輯扇區,因此,操作系統只會把它當作一個硬盤,經常被用在服務器電腦上。不同的RAID實現的功能也是不盡相同的,或增強處理速度,或增強容錯能力,當然,更有甚者,是可以兼備這個特性的。
2、RAID分類

<1>RAID0

<2>RAID1

<3>RAID4

<4>RAID5

<5>RAID01

<6>RAID10

3、經典RAID5的實現
如果只是用作測試的話,軟RAID可以在一塊硬盤的不同分區上實現,此處用不同的硬盤實現
<1>添加五塊硬盤,四塊做成RAID陣列,一塊做spare硬盤
<2>創建文件系統,並調整分區類型為fd
[root@CentOS7~]#fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): t # 調整分區類型
Selected partition 1
Hex code (type L to list all codes): fd # 選擇fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): w # 存盤退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

<3>創建RAID設備
[root@centos7~]#mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/sd{b,c,d,e,f}1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=2097152K mtime=Thu Jan 1 08:00:00 1970
mdadm: /dev/sde1 appears to contain an ext2fs file system
size=2097152K mtime=Mon Aug 29 21:32:01 2016
Continue creating array? y # 確定創建
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. # 創建完成並啟動

<4>查看創建進度
[root@centos7/mnt]#cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[5] sdf1[4](S) sdd1[2] sdc1[1] sdb1[0]
6285312 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
# RAID5創建完成,正式啟動
unused devices: <none>

<5>查看RAID配置
[root@centos7~]#mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 30 15:38:04 2016
Raid Level : raid5 # RAID級別
Array Size : 6285312 (5.99 GiB 6.44 GB) # 陣列大小,使用率為n-1/n
Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB) # 備用的磁盤空間大小
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent

Update Time : Tue Aug 30 15:38:14 2016
State : clean
Active Devices : 4 # RAID工作狀況
Working Devices : 5
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K # Chunk默認大小

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fe6313e4:bc14f451:01602e5e:13820d53
Events : 18

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
5 8 65 3 active sync /dev/sde1

4 8 81 - spare /dev/sdf1 # 備用盤

<6>為RAID5創建文件系統
[root@centos7/mnt]#mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=384 blocks
393216 inodes, 1571328 blocks
... # 文件系統創建成功

<7>掛載RAID
# 創建掛載點
[root@centos7~]#mkdir /mnt/raid
# 編輯/etc/fstab
[root@centos7~]#vim /etc/fstab
...
UUID="24adec89-2933-47e3-b824-11e25ef679cf" /mnt/raid ext4 defaults 0 0
...
# 掛載
[root@centos7~]#mount -a
# 查看掛載
[root@centos7~]#mount
...
/dev/md0 on /mnt/raid type ext4 (rw,relatime,seclabel,stripe=384,data=ordered)

<8>創建RAID配置文件
[root@centos7~]#mdadm -Ds /dev/md0 > /etc/mdadm.conf
[root@centos7~]#cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 spares=1 name=localhost.localdomain:0 UUID=fe6313e4:bc14f451:01602e5e:13820d53

<9>測試
[root@centos7~]#cp /etc/* /mnt/raid/ -r # 數據已通過掛載點存儲在RAID5上
[root@centos7~]#cat /mnt/raid/issue
\S
Kernel \r on an \m

<9>模擬損壞一塊磁盤

# 模擬損壞
[root@centos7~]#mdadm /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0 # 已損壞
# 查看RAID運行狀況
[root@centos7~]#mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 30 15:38:04 2016
Raid Level : raid5
Array Size : 6285312 (5.99 GiB 6.44 GB)
Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent

Update Time : Tue Aug 30 16:25:52 2016
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K

Rebuild Status : 57% complete # 進度

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fe6313e4:bc14f451:01602e5e:13820d53
Events : 29

Number Major Minor RaidDevice State
4 8 81 0 spare rebuilding /dev/sdf1 # 正在修復中
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
5 8 65 3 active sync /dev/sde1

0 8 17 - faulty /dev/sdb1 # faulty狀態
# 查看數據
[root@centos7~]#cat /etc/issue
\S
Kernel \r on an \m
# 數據無損壞

<10>不修復faulty硬盤,再次模擬損壞一塊硬盤
# 損壞硬盤
[root@centos7~]#mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
# 查看狀態
[root@centos7~]#mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 30 15:38:04 2016
Raid Level : raid5
Array Size : 6285312 (5.99 GiB 6.44 GB)
Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent

Update Time : Tue Aug 30 16:33:01 2016
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 2
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K
# 也沒有修復的進度
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fe6313e4:bc14f451:01602e5e:13820d53
Events : 39

Number Major Minor RaidDevice State
4 8 81 0 active sync /dev/sdf1
2 0 0 2 removed # 沒有硬盤頂替,顯示remove狀態
2 8 49 2 active sync /dev/sdd1
5 8 65 3 active sync /dev/sde1

0 8 17 - faulty /dev/sdb1 # 已損壞
1 8 33 - faulty /dev/sdc1 # 已損壞
# 再次查看數據
[root@centos7~]#cat /mnt/raid/issue
\S
Kernel \r on an \m
# 數據無損

<11>依然不修復,再次損壞
# 損壞硬盤
[root@centos7~]#mdadm /dev/md0 -f /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0
[root@centos7~]#mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 30 15:38:04 2016
Raid Level : raid5
Array Size : 6285312 (5.99 GiB 6.44 GB)
Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superbloc
k is persistent

Update Time : Tue Aug 30 16:39:41 2016
State : clean, FAILED
Active Devices : 2
Working Devices : 2
Failed Devices : 3
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fe6313e4:bc14f451:01602e5e:13820d53
Events : 41

Number Major Minor RaidDevice State
4 8 81 0 active sync /dev/sdf1
2 0 0 2 removed # 移除
4 0 0 4 removed # 移除
5 8 65 3 active sync /dev/sde1

0 8 17 - faulty /dev/sdb1 # 已損壞
1 8 33 - faulty /dev/sdc1 # 已損壞
2 8 49 - faulty /dev/sdd1 # 已損壞
# RAID5中,已損壞倆塊硬盤,校驗數據失效,數據全部損壞。
[root@centos7~]#cat /mnt/raid/fstab
cat: /mnt/raid/fstab: Input/output error

此時數據已經損壞,不可恢復

RAID支持熱插拔技術
<12>在RAID 不損壞之前也是可以增加RAID的磁盤的
[root@centos7~]#mdadm -G /dev/md0 -a -n 5 /dev/sdg1

RAID損壞後,移除RAID
[root@centos7~]#mdadm /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

標准的卸載RAID的步驟
<13>取消掛載、停止RAID、刪除配置文件
[root@centos7~]#umount /mnt/raid/
[root@centos7~]#mdadm -S /dev/md0 備注----->啟用RAID:mdadm -A -s /dev/md5
mdadm: stopped /dev/md0
[root@centos7~]#rm -f /etc/mdadm.conf

<14>移除RAID中的磁盤
<15>刪除磁盤上的RAID信息
[root@centos7~]#mdadm --zero-superblock /dev/sdf1 # 一定要先停止,否則報錯

Copyright © Linux教程網 All Rights Reserved