1. 程式人生 > >RAID技術——raid5模擬一塊硬碟損壞

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

儘管 RAID 0 技術提升了硬碟裝置的讀寫速度,但是它是將資料依次寫入到各個物理硬碟中,也就是說,它的資料是分開存的,其中任何一塊硬碟發生故障都會損壞整個系統的資料。因此,如果生產環境對硬碟裝置的讀寫速度沒有要求,而是希望增加資料的安全性時,就需要用到 RAID 1 技術了。在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% 在這裡插入圖片描述