Linux下RAID磁碟陣列的原理與搭建
- 2021 年 6 月 4 日
- 筆記
- Linux RAID
RAID概念
- 磁碟陣列(Redundant Arrays of Independent Disks,RAID),有「獨立磁碟構成的具有冗餘能力的陣列」之意。 磁碟陣列是由很多價格較便宜的磁碟,以硬體(RAID卡)或軟體(MDADM)形式組合成一個容量巨大的磁碟組,利用多個磁碟組合在一起,提升整個磁碟系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬碟上。 磁碟陣列還能利用同位檢查(Parity Check)的觀念,在數組中任意一個硬碟故障時,仍可讀出數據,在數據重構時,將數據經計算後重新置入新硬碟中
為什麼要用RAID
- RAID(Redundant Arrays of Independent Disks,磁碟陣列):把相同的數據存儲在多個硬碟的不同的地方的方法
- 通過RAID可以提高磁碟I/O能力(磁碟並行讀寫)以及提高耐用性(磁碟冗餘)。
- RAID級別:多種磁碟組織在一起的工作方式有所不同
軟體 RAID 和硬體 RAID
- 軟體 RAID 的性能較低,因為其使用主機的資源。 需要載入 RAID 軟體以從軟體 RAID 卷中讀取數據。在載入 RAID 軟體前,作業系統需要引導起來才能載入 RAID 軟體。在軟體 RAID 中無需物理硬體。零成本投資。
- 硬體 RAID 的性能較高。他們採用 PCI Express 卡物理地提供有專用的 RAID 控制器。它不會使用主機資源。他們有 NVRAM 用於快取的讀取和寫入。快取用於 RAID 重建時,即使出現電源故障,它會使用後備的電池電源保持快取。對於大規模使用是非常昂貴的投資。
實現方式:
- 外接式磁碟陣列:通過擴展卡提供適配能力
- 內接式磁碟陣列:主板集成RAID控制器
- Software RAID:在軟體層面實現RAID
RAID級別:
- RAID 0:Data Stripping數據分條技術
- RAID 1:磁碟鏡像
- RAID 2:帶海明碼校驗
- RAID 3:帶奇偶校驗碼的並行傳送
- RAID 4:帶奇偶校驗碼的獨立磁碟結構
- RAID 5:分散式奇偶校驗的獨立磁碟結構
- RAID 10:高可靠性與高效磁碟結構
- RAID 01:RAID0和RAID1技術結合起來
RAID 的兩個關鍵目標是提高數據可靠性和 I/O 性能。
RAID 中主要有三個關鍵概念和技術:鏡像( Mirroring )、數據條帶( Data Stripping )和數據校驗( Data parity )。
- 1.鏡像:
- 鏡像是一種冗餘技術,為磁碟提供保護功能,防止磁碟發生故障而造成數據丟失。
- 2.數據條帶:
- 數據條帶技術將數據以塊的方式分布存儲在多個磁碟中,從而可以對數據進行並發處理。這樣寫入和讀取數據就可以在多個磁碟上同時進行,並發產生非常高的聚合 I/O ,有效提高了整體 I/O 性能,而且具有良好的線性擴展性。
- 3.數據校驗
- 數據校驗是一種冗餘技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,並在能力允許的前提下進行數據重構。
RAID 主要優勢有如下幾點:
- (1) 大容量
- 這是 RAID 的一個顯然優勢,它擴大了磁碟的容量,由多個磁碟組成的 RAID 系統具有海量的存儲空間。現在單個磁碟的容量就可以到 1TB 以上,這樣 RAID 的存儲容量就可以達到 PB 級,大多數的存儲需求都可以滿足。一般來說, RAID 可用容量要小於所有成員磁碟的總容量。不同等級的 RAID 演算法需要一定的冗餘開銷,具體容量開銷與採用演算法相關。如果已知 RAID 演算法和容量,可以計算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之間。
- (2) 高性能
- RAID 的高性能受益於數據條帶化技術。單個磁碟的 I/O 性能受到介面、頻寬等電腦技術的限制,性能往往很有 限,容易成為系統性能的瓶頸。通過數據條帶化, RAID 將數據 I/O 分散到各個成員磁碟上,從而獲得比單個磁碟成倍增長的聚合 I/O 性能。
- (3) 可靠性
- 可用性和可靠性是 RAID 的另一個重要特徵。從理論上講,由多個磁碟組成的 RAID 系統在可靠性方面應該比單個磁碟要差。這裡有個隱含假定:單個磁碟故障將導致整個 RAID 不可用。 RAID 採用鏡像和數據校驗等數據冗餘技術,打破了這個假定。 鏡像是最為原始的冗餘技術,把某組磁碟驅動器上的數據完全複製到另一組磁碟驅動器上,保證總有數據副本可用。 比起鏡像 50% 的冗餘開銷 ,數據校驗要小很多,它利用校驗冗餘資訊對數據進行校驗和糾錯。 RAID 冗餘技術大幅提升數據可用性和可靠性,保證了若干磁碟出錯時,不 會導致數據的丟失,不影響系統的連續運行。
- (4) 可管理性
- 實際上, RAID 是一種虛擬化技術,它對多個物理磁碟驅動器虛擬成一個大容量的邏輯驅動器。對於外部主機系統來說, RAID 是一個單一的、快速可靠的大容量磁碟驅動器。這樣,用戶就可以在這個虛擬驅動器上來組織和存儲應用系統數據。 從用戶應用角度看,可使存儲系統簡單易用,管理也很便利。 由於 RAID 內部完成了大量的存儲管理工作,管理員只需要管理單個虛擬驅動器,可以節省大量的管理工作。 RAID 可以動態增減磁碟驅動器,可自動進行數據校驗和數據重建,這些都可以 大大簡化管理工作。
RAID幾種常見的類型RAID幾種常見的類型
RAID-0 (條帶化)
- 條帶 (strping),也是我們最早出現的RAID模式
- 需磁碟數量:2塊以上(大小最好相同),是組建磁碟陣列中最簡單的一種形式,只需要2塊以上的硬碟即可.
- 特點:成本低,可以提高整個磁碟的性能和吞吐量。RAID 0沒有提供冗餘或錯誤修復能力,速度快.
- 任何一個磁碟的損壞將損壞全部數據;磁碟利用率為100%
RAID-1 (鏡像化)
- mirroring(鏡像卷),需要磁碟兩塊以上
- 原理:是把一個磁碟的數據鏡像到另一個磁碟上,也就是說數據在寫入一塊磁碟的同時,會在另一塊閑置的磁碟上生成鏡像文件,(同步)
- RAID 1 mirroring(鏡像卷),至少需要兩塊硬碟,raid大小等於兩個raid分區中最小的容量(最好將分區大小分為一樣),數據有冗餘,在存儲時同時寫入兩塊硬碟,實現了數據備份;
- 磁碟利用率為50%,即2塊100G的磁碟構成RAID1隻能提供100G的可用空間。
RAID-5 (分散式奇偶校驗)
- 需要三塊或以上硬碟,可以提供熱備盤實現故障的恢復;只損壞一塊,沒有問題。但如果同時損壞兩塊磁碟,則數據將都會損壞。
- 空間利用率: (n-1)/n
RAID-6( 雙分散式奇偶校驗磁碟)
- RAID 6 和 RAID 5 相似但它有兩個分散式奇偶校驗。大多用在大數量的陣列中。我們最少需要4個驅動器,即使有2個驅動器發生故障,我們依然可以更換新的驅動器後重建數據。
RAID-10 (鏡像+條帶)
RAID 10是將鏡像和條帶進行兩級組合的RAID級別,第一級是RAID1鏡像對,第二級為RAID 0。
幾個方案對比下來, RAID5是最適合的,如下圖:
第一步 部署環境準備
[root@wencheng ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@wencheng ~]# rpm -qa | grep mdadm mdadm-4.1-6.el7.x86_64 [root@wencheng ~]# ls -l /dev | grep sd brw-rw----. 1 root disk 8, 0 Apr 15 11:38 sda brw-rw----. 1 root disk 8, 1 Apr 15 11:38 sda1 brw-rw----. 1 root disk 8, 2 Apr 15 11:38 sda2 brw-rw----. 1 root disk 8, 3 Apr 15 11:38 sda3
VMware Workstation添加硬碟
- 在”我的電腦”中選擇該主機–右鍵–設置–添加–硬碟–下一步–下一步–下一步–完成 添加硬碟步驟。
- 命令:echo “- – -” > /sys/class/scsi_host/host0/scan
- 1.新增添磁碟,還不能直接顯示出來,要想出現要對磁碟進行掃描(實際生產環境中不需要,都是熱插拔技術):
- 2.假如 fdisk -l 還是未發現新硬碟,則將上面命令中的host0,替換為host1,host2,….看看;
- 3.我們再查看系統日誌/var/log/messages,發現對SCSI設備進行了一次重新掃描,用fdisk -l也看到了新增加的磁碟了。
第二步 創建RAID分區
[root@wencheng ~]# fdisk /dev/sdb //創建/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. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x50157e3b. Command (m for help): m Command action a toggle a bootable flag //設置可引導標記 b edit bsd disklabel //編輯 bsd 磁碟標籤 c toggle the dos compatibility flag //設置 DOS 作業系統兼容標記 d delete a partition //刪除一個分區 g create a new empty GPT partition table //創建一個新的空GPT分區表 G create an IRIX (SGI) partition table //創建一個IRIX (SGI)分區表 l list known partition types //顯示已知的文件系統類型。82 為 Linux swap 分區,83 為 Linux 分區 m print this menu //顯示幫助菜單 n add a new partition //新建分區 o create a new empty DOS partition table //建立空白 DOS 分區表 p print the partition table //顯示分區列表 q quit without saving changes //不保存退出 s create a new empty Sun disklabel //新建空白 SUN 磁碟標籤 t change a partition's system id //改變一個分區的系統 ID u change display/entry units //改變顯示記錄單位 v verify the partition table //驗證分區表 w write table to disk and exit //保存退出 x extra functionality (experts only) //附加功能(僅專家) Command (m for help): n //新建分區 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p //這裡選主分區 Partition number (1-4, default 1): 1 First sector (2048-20971519, default 2048): //回車(默認大小) Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): //回車(默認整塊硬碟大小);可指定但小於硬碟容量 Using default value 20971519 Partition 1 of type Linux and of size 10 GiB is set Command (m for help): p //顯示分區列表 Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x50157e3b Device Boot Start End Blocks Id System /dev/sdb1 2048 20971519 10484736 83 Linux //分區的狀態 Command (m for help): L //列出所有可用的類型 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 1e Hidden W95 FAT1 80 Old Minix Command (m for help): t //改變一個分區的系統 ID Selected partition 1 Hex code (type L to list all codes): fd //Linux raid auto Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): p //顯示分區列表 Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x50157e3b Device Boot Start End Blocks Id System /dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect //分區狀態 Command (m for help): w //保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@wencheng ~]# [root@wencheng ~]# fdisk -l | grep raid /dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect /dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect /dev/sdd1 2048 20971519 10484736 fd Linux raid autodetect /dev/sde1 2048 20971519 10484736 fd Linux raid autodetect
注: 請使用上述步驟同樣在 sd[c-m] 驅動器上創建分區,不再累贅。
- mdadm命令常見參數解釋:
第三步 現在使用以下命令創建 md 設備(即 /dev/md0),並選擇 RAID級別。
RAID-0
- 1.創建分區後,驗證/dev/sd[b-c]這兩個驅動器是否正確定義 RAID,使用下面的命令。
[root@wencheng ~]# mdadm -E /dev/sd[b-c] //或mdadm --examine /dev/sd[b-c] /dev/sdb: MBR Magic : aa55 Partition[0] : 20969472 sectors at 2048 (type fd) /dev/sdc: MBR Magic : aa55 Partition[0] : 20969472 sectors at 2048 (type fd) [root@wencheng ~]# mdadm -E /dev/sd[b-c]1 //mdadm --examine /dev/sd[b-c]1 mdadm: No md superblock detected on /dev/sdb1. mdadm: No md superblock detected on /dev/sdc1.
- 2.創建RAID0,與其他RAID級別差非同步驟。
[root@wencheng ~]# mdadm -C -v /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1 //這裡是raid0為例 mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@wencheng ~]#
- 3.查看 RAID 級別,設備和陣列的使用狀態。
[root@wencheng ~]# cat /proc/mdstat Personalities : [raid0] md0 : active raid0 sdc1[1] sdb1[0] 20951040 blocks super 1.2 512k chunks unused devices: <none> [root@wencheng ~]# [root@wencheng ~]# mdadm -Ds //或mdadm --detail /dev/md0 或 mdadm -E /dev/sd[b-c]1 ARRAY /dev/md0 metadata=1.2 name=wencheng:0 UUID=17542cfe:0b0649c8:43eecd07:cc58228b [root@wencheng ~]# [root@wencheng ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Apr 15 14:37:47 2021 Raid Level : raid0 Array Size : 20951040 (19.98 GiB 21.45 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Thu Apr 15 14:37:47 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Chunk Size : 512K //chunk是raid中最小的存儲單位 Consistency Policy : none Name : wencheng:0 (local to host wencheng) UUID : 17542cfe:0b0649c8:43eecd07:cc58228b Events : 0 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1
- 4.保存RAID配置到一個”mdadm”文件中,以供將來使用。
[root@wencheng ~]# mdadm -E -s -v > /etc/mdadm.conf [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md/0 level=raid0 metadata=1.2 num-devices=2 UUID=17542cfe:0b0649c8:43eecd07:cc58228b name=wencheng:0 devices=/dev/sdc1,/dev/sdb1 或 [root@wencheng ~]# mdadm -Ds ARRAY /dev/md0 metadata=1.2 name=wencheng:0 UUID=17542cfe:0b0649c8:43eecd07:cc58228b [root@wencheng ~]# [root@wencheng ~]# mdadm -Ds > /etc/mdadm.conf
- 5. 將 RAID 設備 /dev/md0 創建為 xfs 文件系統,並掛載到 /mnt/raid0 下。
[root@wencheng ~]# mkfs.xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=16, agsize=327296 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5236736, imaxpct=25 = sunit=128 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@wencheng ~]# mkdir /mnt/raid0 //創建掛載點 [root@wencheng ~]# [root@wencheng ~]# mount /dev/md0 /mnt/raid0/ [root@wencheng ~]# df -Th /mnt/raid0/ Filesystem Type Size Used Avail Use% Mounted on /dev/md0 xfs 20G 33M 20G 1% /mnt/raid0 驗證/mnt/raid0/是否能正常使用 [root@wencheng ~]# ls -l /mnt/raid0/ total 0 [root@wencheng ~]# echo 123 > /mnt/raid0/a [root@wencheng ~]# echo 456 > /mnt/raid0/b [root@wencheng ~]# [root@wencheng ~]# ls -l /mnt/raid0/ total 8 -rw-r--r--. 1 root root 4 Apr 15 15:39 a -rw-r--r--. 1 root root 4 Apr 15 15:40 b [root@wencheng ~]# [root@wencheng ~]# rm /mnt/raid0/b -f [root@wencheng ~]# [root@wencheng ~]# ls -l /mnt/raid0/ total 4 -rw-r--r--. 1 root root 4 Apr 15 15:39 a
添加開機自動掛載 [root@wencheng ~]# blkid /dev/md0 /dev/md0: UUID="2d2c0f39-3605-4634-bfb1-c8b151936057" TYPE="xfs"
[root@wencheng ~]# echo "UUID=2d2c0f39-3605-4634-bfb1-c8b151936057 /mnt/raid0 xfs defaults 0 0" >> /etc/fstab
[root@wencheng ~]# cat /etc/fstab | grep /mnt/raid0 UUID=2d2c0f39-3605-4634-bfb1-c8b151936057 /mnt/raid0 xfs defaults 0 0 [root@wencheng ~]# mount -av //檢查 fstab 的條目是否有誤 / : ignored /boot : already mounted swap : ignored /mnt/raid0 : already mounted
注:以上步驟創建各RAID級別類似,不再贅述。
RAID1
- 1.創建RAID1
[root@wencheng ~]# mdadm -C -v /dev/md1 -l raid1 -n 2 -x 1 /dev/sd[d-f]1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? (y/n) y mdadm: Fail to create md1 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
- 2.查看 RAID 級別,設備和陣列的使用狀態。
[root@wencheng ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Apr 16 17:33:12 2021 Raid Level : raid1 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Fri Apr 16 17:34:04 2021 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Consistency Policy : resync Name : wencheng:1 (local to host wencheng) UUID : a88125e0:2c4b9029:cfaa3acf:67941e04 Events : 17 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 65 1 active sync /dev/sde1 2 8 81 - spare /dev/sdf1
- 3.保存 RAID1 的配置到文件「mdadm.conf」中。
[root@wencheng ~]# mdadm -Dsv /dev/md1 > /etc/mdadm.conf [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md1 level=raid1 num-devices=2 metadata=1.2 spares=1 name=wencheng:1 UUID=a88125e0:2c4b9029:cfaa3acf:67941e04 devices=/dev/sdd1,/dev/sde1,/dev/sdf1
- 4.在RAID1設備上創建文件系統,並掛載到 /mnt/raid1 下。
[root@wencheng ~]# mkfs.xfs /dev/md1 meta-data=/dev/md1 isize=512 agcount=4, agsize=654720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2618880, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@wencheng ~]# [root@wencheng ~]# mkdir /mnt/raid1 [root@wencheng ~]# mount /dev/md1 /mnt/raid1 [root@wencheng ~]# df -Th /mnt/raid1 Filesystem Type Size Used Avail Use% Mounted on /dev/md1 xfs 10G 33M 10G 1% /mnt/raid1
- 5.模擬RAID1中數據盤/dev/sde出現故障,觀察/dev/sdf備用盤能否自動頂替故障盤。
[root@wencheng ~]# mdadm /dev/md1 -f /dev/sde1 //模擬測試文件損壞 mdadm: set /dev/sde1 faulty in /dev/md1 [root@wencheng ~]# [root@wencheng ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Apr 16 17:33:12 2021 Raid Level : raid1 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Mon Apr 19 09:26:02 2021 State : clean, degraded, recovering Active Devices : 1 Working Devices : 2 Failed Devices : 1 Spare Devices : 1 Consistency Policy : resync Rebuild Status : 7% complete Name : wencheng:1 (local to host wencheng) UUID : a88125e0:2c4b9029:cfaa3acf:67941e04 Events : 23 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 2 8 81 1 spare rebuilding /dev/sdf1 //熱備盤已經在同步數據 1 8 65 - faulty /dev/sde1 ------------------------------------------------------------------------ Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 2 8 81 1 active sync /dev/sdf1 //數據同步完成 1 8 65 - faulty /dev/sde1
- 6.更新配置文件。
[root@wencheng ~]# mdadm -Dsv > /etc/mdadm.conf [root@wencheng ~]# [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md1 level=raid1 num-devices=2 metadata=1.2 name=wencheng:1 UUID=a88125e0:2c4b9029:cfaa3acf:67941e04 devices=/dev/sdd1,/dev/sde1,/dev/sdf1
- 7.查看數據是否丟失。
[root@wencheng ~]# ls -l /mnt/raid1/ total 4 -rw-r--r--. 1 root root 846 Apr 19 09:24 passwd
- 8.移除損壞的設備。
[root@wencheng ~]# mdadm -r /dev/md1 /dev/sde1 mdadm: hot removed /dev/sde1 from /dev/md1 [root@wencheng ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Apr 16 17:33:12 2021 Raid Level : raid1 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Mon Apr 19 09:34:50 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : wencheng:1 (local to host wencheng) UUID : a88125e0:2c4b9029:cfaa3acf:67941e04 Events : 44 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 2 8 81 1 active sync /dev/sdf1
- 9.更換一塊新硬碟。
[root@wencheng ~]# mdadm -a /dev/md1 /dev/sde
mdadm: added /dev/sde
[root@wencheng ~]#
[root@wencheng ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Apr 16 17:33:12 2021
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Apr 19 09:37:30 2021
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : wencheng:1 (local to host wencheng)
UUID : a88125e0:2c4b9029:cfaa3acf:67941e04
Events : 45
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
2 8 81 1 active sync /dev/sdf1
3 8 64 - spare /dev/sde
RAID5
(1)創建RAID5, 添加1個熱備盤,指定chunk大小為32K(默認512K)
-x或–spare-devicds= 指定陣列中備用盤的數量
-c或–chunk= 設定陣列的塊chunk塊大小 ,單位為KB
(2)停止陣列,重新激活陣列
(3)使用熱備盤,擴展陣列容量,從3個磁碟擴展到4個
- 1.創建RAID5
[root@wencheng ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sd{g,h,i,j}1 mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 512K mdadm: size set to 10475520K mdadm: Fail to create md5 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md5 started.
- 2.查看 RAID 級別,設備和陣列的使用狀態。
[root@wencheng ~]# mdadm -D /dev/md5 /dev/md5: Version : 1.2 Creation Time : Mon Apr 19 10:03:42 2021 Raid Level : raid5 Array Size : 20951040 (19.98 GiB 21.45 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 19 10:04:34 2021 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync //數據同步完成 Name : wencheng:5 (local to host wencheng) UUID : 816190d1:6b78e305:49220ba0:6178499b Events : 18 Number Major Minor RaidDevice State 0 8 97 0 active sync /dev/sdg1 1 8 113 1 active sync /dev/sdh1 4 8 129 2 active sync /dev/sdi1 3 8 145 - spare /dev/sdj1 //熱備盤
- 3.保存 RAID5 的配置到文件「mdadm.conf」中。
[root@wencheng ~]# mdadm -Dsv > /etc/mdadm.conf [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md5 level=raid5 num-devices=3 metadata=1.2 spares=1 name=wencheng:5 UUID=816190d1:6b78e305:49220ba0:6178499b devices=/dev/sdg1,/dev/sdh1,/dev/sdi1,/dev/sdj1
- 4.停止/激活md5陣列。
[root@wencheng ~]# mdadm -S /dev/md5 mdadm: stopped /dev/md [root@wencheng ~]# mdadm -AS /dev/md5 mdadm: Fail to create md5 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node mdadm: /dev/md5 has been started with 3 drives and 1 spare.
- 5.擴展md5陣列,將熱備盤增加到md5中,使用md5中可以使用的磁碟數量為4塊,並驗證。
[root@wencheng ~]# mdadm -G /dev/md5 -n 4 //-G或--grow 改變陣列大小或形態 [root@wencheng ~]# [root@wencheng ~]# mdadm -D /dev/md5 /dev/md5: Version : 1.2 Creation Time : Mon Apr 19 10:03:42 2021 Raid Level : raid5 Array Size : 31426560 (29.97 GiB 32.18 GB) //對比初始空間已增大 Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 19 10:27:43 2021 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : wencheng:5 (local to host wencheng) UUID : 816190d1:6b78e305:49220ba0:6178499b Events : 47 Number Major Minor RaidDevice State 0 8 97 0 active sync /dev/sdg1 1 8 113 1 active sync /dev/sdh1 4 8 129 2 active sync /dev/sdi1 3 8 145 3 active sync /dev/sdj1 [root@wencheng ~]# [root@wencheng ~]# mdadm -Dsv > /etc/mdadm.conf [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md5 level=raid5 num-devices=4 metadata=1.2 name=wencheng:5 UUID=816190d1:6b78e305:49220ba0:6178499b devices=/dev/sdg1,/dev/sdh1,/dev/sdi1,/dev/sdj1
RAID10
- 1.創建RAID10
[root@wencheng ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sd[k,l,n,m]1 mdadm: layout defaults to n2 mdadm: layout defaults to n2 mdadm: chunk size defaults to 512K mdadm: size set to 10475520K mdadm: Fail to create md10 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md10 started.
- 2.查看 RAID 級別,設備和陣列的使用狀態。
[root@wencheng ~]# mdadm -D /dev/md10 /dev/md10: Version : 1.2 Creation Time : Mon Apr 19 10:54:33 2021 Raid Level : raid10 Array Size : 20951040 (19.98 GiB 21.45 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Apr 19 10:56:18 2021 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Consistency Policy : resync Name : wencheng:10 (local to host wencheng) UUID : 98ee3164:bc417c61:3e8b29d6:24470192 Events : 17 Number Major Minor RaidDevice State 0 8 161 0 active sync set-A /dev/sdk1 1 8 177 1 active sync set-B /dev/sdl1 2 8 193 2 active sync set-A /dev/sdm1 3 8 209 3 active sync set-B /dev/sdn1
- 3.保存 RAID10 的配置到文件「mdadm.conf」中。
[root@wencheng ~]# mdadm -Dsv /dev/md10 > /etc/mdadm.conf [root@wencheng ~]# [root@wencheng ~]# cat /etc/mdadm.conf ARRAY /dev/md10 level=raid10 num-devices=4 metadata=1.2 name=wencheng:10 UUID=98ee3164:bc417c61:3e8b29d6:24470192 devices=/dev/sdk1,/dev/sdl1,/dev/sdm1,/dev/sdn1
刪除RAID所有資訊及注意事項
- 1.如果你已經掛載raid,就先卸載。
[root@wencheng ~]# df -Th | grep raid1 /dev/md1 xfs 10G 33M 10G 1% /mnt/raid1 [root@wencheng ~]# [root@wencheng ~]# umount /dev/md1 /mnt/raid1 umount: /mnt/raid1: not mounted [root@wencheng ~]# [root@wencheng ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 xfs 30G 1.3G 29G 5% / devtmpfs devtmpfs 981M 0 981M 0% /dev tmpfs tmpfs 992M 0 992M 0% /dev/shm tmpfs tmpfs 992M 9.6M 982M 1% /run tmpfs tmpfs 992M 0 992M 0% /sys/fs/cgroup /dev/sda1 xfs 297M 107M 191M 36% /boot tmpfs tmpfs 199M 0 199M 0% /run/user/0
- 2.停止RAID設備,並刪除配置文件。
[root@wencheng ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Apr 16 17:33:12 2021 Raid Level : raid1 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 10475520 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Mon Apr 19 11:03:51 2021 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Consistency Policy : resync Name : wencheng:1 (local to host wencheng) UUID : a88125e0:2c4b9029:cfaa3acf:67941e04 Events : 45 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 2 8 81 1 active sync /dev/sdf1 3 8 64 - spare /dev/sde [root@wencheng ~]# [root@wencheng ~]# mdadm -S /dev/md1 mdadm: stopped /dev/md1 [root@wencheng ~]# [root@wencheng ~]# mdadm -D /dev/md1 mdadm: cannot open /dev/md1: No such file or directory [root@wencheng ~]# [root@wencheng ~]# rm /etc/mdadm.conf -f
- 3.清除物理磁碟中的raid標識。
[root@wencheng ~]# mdadm --zero-superblock /dev/sdd1 [root@wencheng ~]# mdadm --zero-superblock /dev/sdf1 參數:--zero-superblock : erase the MD superblock from a device. #擦除設備中的MD超級塊