RAID技術——raid5模擬一塊硬碟損壞
RAID磁碟整列方案至少有幾十種,一下講當今最流行的幾種 raid 0,raid 1 ,raid 5 ,raid 10 1.raid 0 RAID 0 技術把多塊物理硬碟裝置(至少兩塊)通過硬體或軟體的方式串聯在一起,組成一個大的卷組,並將資料依次寫入到各個物理硬碟中。這樣一來,在最理想的狀態下,硬碟裝置的讀寫效能會提升數倍,但是若任意一塊硬碟發生故障將導致整個系統的資料都受到破壞。通俗來說,RAID 0 技術能夠有效地提升硬碟資料的吞吐速度,但是不具備資料備份和錯誤修復能力。資料被分別寫入到不同的硬碟裝置中,即 disk1 disk2 硬碟裝置會分別儲存資料資料,最終實現提升讀取、寫入速度的效果。 簡單的說就是(1+1=2) 兩塊硬碟和到一塊 2.raid 1
一塊存資料一塊備份,利用率只有50% 3.raid 5 RAID5 技術是把硬碟裝置的資料奇偶校驗資訊儲存到其他硬碟中。RAID 5 磁碟陣列組中資料的奇偶校驗資訊並不是單獨保到某一塊硬碟裝置中,而是儲存到除自身以外的其他每一塊硬碟裝置上,這樣的好處是其中任何一裝置損壞後不至於出現致命缺陷;parity 部分存放的就是資料的奇偶校驗資訊,換句話說,就是 RAID 5 技術實際上沒有備份硬碟中的真實資料資訊,而是當硬碟裝置出現問題後通過奇偶校驗資訊來嘗試重建損壞的資料。RAID 這樣的技術特性“妥協”地兼顧了硬碟裝置的讀寫速度、資料安全性與儲存成本問題。
4.raid 10 鑑於 RAID 5 技術是因為硬碟裝置的成本問題對讀寫速度和資料的安全效能而有了一定 的妥協,但是大部分企業更在乎的是資料本身的價值而非硬碟價格,因此生產環境中主要使 用 RAID 10 技術。 顧名思義,RAID 10 技術是 RAID 1+RAID 0 技術的一個“組合體”。RAID 10 技術需要至少 4 塊硬碟來組建,其中先分別兩兩製作成 RAID 1 磁碟陣列,以保證資料的安全性;然後再對兩個 RAID 1 磁碟陣列實施 RAID 0 技術,進一步提高硬碟裝置的讀寫速度。這樣從理論上來講,只要壞的不是同一組中的所有硬碟,那麼最多可以損壞 50%的硬碟裝置而不丟失資料。由於 RAID 10 技術繼承了 RAID 0 的高讀寫速度和 RAID1 的資料安全性,在不考慮成本的情況下 RAID 10 的效能都超過了 RAID 5,因此當前成為廣泛使用的一種儲存技術。
最少硬碟 最大容量 可用容量 讀取效能 寫入效能 安全性 目的 應用產業 | |
---|---|
raid0 | 2 0 n n n 一個硬碟異常,全部硬碟都會異常 追求最大容量、速度視訊剪接快取用途 |
raid1 | 2 n-1 1 n 1 最高,一個正常即可 追求最大安全性個人、企業備份 |
raid5 | 3 1 n-1 n-1 n-1 高 追求最大容量、最小預算個人、企業備份 |
raid10 | 4 n/2 n/2 n/2 n/2 安全性高,但在同一個子組群中不能出現兩顆毀損硬碟 綜合RAID 0/1優點,理論速度較快大型資料庫、伺服器 |
n:代表硬碟總數 2部署磁碟陣列 mdadm命令的常用引數和作用
引數 | 作用 |
---|---|
-a | 檢測裝置名稱 |
-n | 指定裝置數量 |
-l | 指定 RAID 級別 |
-C | 建立 |
-v | 顯示過程 |
-f | 模擬裝置損壞 |
-r | 移除裝置 |
-Q | 檢視摘要資訊 |
-D | 檢視詳細資訊 |
-S | 停止 RAID 磁碟陣列 |
接下來使用mdadm命令建立RAID 5 命名 “/dev/md0” 先新增三塊硬碟 sdb sdc sdd 大小為10G 開機 檢視新新增的硬碟
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 20G 0 part /
└─sda3 8:3 0 4G 0 part [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sdd 8:48 0 10G 0 disk
sr0 11:0 1 4.2G 0 rom /mnt
將三塊硬碟合併成一塊md0
[[email protected] ~]# mdadm -Cv /dev/md0 -a yes -n 3 -l 5 /dev/sdb /dev/sdc /dev/sdd
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10477568K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
將製作好的RAID磁碟陣列格式化為ext4格式
[[email protected] ~]# 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=256 blocks
1310720 inodes, 5238784 blocks
261939 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
建立掛載點然後把硬碟裝置進行掛載操作 ,掛載之後檢視磁碟空間
[[email protected] ~]# mkdir /RAID
[[email protected] ~]# mount /dev/md0 /RAID/
[[email protected] ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 20G 980M 18G 6% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.7M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
/dev/sda1 ext4 190M 88M 89M 50% /boot
tmpfs tmpfs 394M 0 394M 0% /run/user/0
/dev/md0 ext4 20G 45M 19G 1% /RAID
可以看到md0可用空間是20G,也就是50%的利用率 檢視/dev/md0 磁碟陣列的詳細資訊,並把掛載資訊寫入到配置檔案中,使其永久 生效。
[[email protected] ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 24 15:53:49 2018
Raid Level : raid5
Array Size : 20955136 (19.98 GiB 21.46 GB)
Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
[[email protected] ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
下面我們模擬sdb硬碟損壞,看一看資料能否恢復 明顯可以看到sdb硬碟已經不能使用了 然後給虛擬機器加一塊新的硬碟看資料能否恢復 資料恢復97% 資料恢復99%