你們好,我是高勝寒,本文是Linux運維-按部就班學運維-基礎篇的第51篇文章。node
本文咱們來聊聊磁盤陣列raid磁盤陣列。windows
如下爲引用:數組
磁盤陣列(Redundant Arrays of Independent Disks,RAID),有「獨立磁盤構成的具備冗餘能力的陣列」之意。 磁盤陣列是由不少價格較便宜的磁盤,以硬件(RAID卡)或軟件(MDADM)形式組合成一個容量巨大的磁盤組,利用多個磁盤組合在一塊兒,提高整個磁盤系統效能。app
利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。 磁盤陣列還能利用同位檢查(Parity
Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算後從新置入新硬盤中less
總結成一句話: RAID是磁盤榮譽陣列,做用是提高讀寫速率,而且能夠有容錯功能。運維
RAID的基本思想: 把幾塊硬盤經過必定的組合方式把它組合起來,造成一個新的硬盤陣列組,從而讓新的磁盤陣列組可以達到高性能硬盤的要求。ide
實驗步驟:
1) 建立4塊硬盤
2) 建立RAID
3)格式化,掛載
4) 查看RAID信息
5) 模擬其中一塊硬盤壞掉的狀況
6) 將修好的磁盤從新加入到已經存在的陣列中性能
對新增長的硬盤分區成5個,來模擬五塊硬盤。spa
[root@xinsz08-15 ~]# ll /dev/sd* #目前現有的分區brw-rw---- 1 root disk 8, 0 6月 29 05:45 /dev/sda brw-rw---- 1 root disk 8, 1 6月 29 05:45 /dev/sda1 brw-rw---- 1 root disk 8, 2 6月 29 05:45 /dev/sda2 brw-rw---- 1 root disk 8, 3 6月 29 05:45 /dev/sda3 brw-rw---- 1 root disk 8, 16 6月 29 05:45 /dev/sdb
[root@xinsz08-15 ~]# fdisk /dev/sdbCommand (m for help): n Command action e extended p primary partition (1-4)p Partition number (1-4): Value out of range. Partition number (1-4): 1 First cylinder (1-3263, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-3263, default 3263): +5G Command (m for help):
按照上面的分區方法,一共分了四個區,分別都是5G操作系統
注意: 邏輯分區沒法作磁盤陣列
[root@xinsz08-15 ~]# ll /dev/sdb*brw-rw---- 1 root disk 8, 16 6月 29 06:02 /dev/sdb brw-rw---- 1 root disk 8, 17 6月 29 06:02 /dev/sdb1 brw-rw---- 1 root disk 8, 18 6月 29 06:02 /dev/sdb2 brw-rw---- 1 root disk 8, 19 6月 29 06:02 /dev/sdb3 brw-rw---- 1 root disk 8, 20 6月 29 06:02 /dev/sdb4
[root@xinsz08-15 ~]# yum install mdadm
mdadm 的基本參數:
參數 | 做用 |
---|---|
C | 建立RAID |
/dev/m0 | 第一個RAID設備 |
-L5 | RAID5 |
-n | RAID成員的數量 |
-x | 熱備磁盤的數量 |
-a | 添加熱備 |
-G | 熱備轉變爲成員身份 |
接下來咱們建立第一個RAID設備,作一個raid 5, 用3塊盤作陣列,在加上一塊作熱備。
[root@xinsz08-15 ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sdb{1,2,3,4}mdadm: /dev/sdb4 appears to be part of a raid array: level=raid0 devices=0 ctime=Thu Jan 1 08:00:00 1970 mdadm: partition table exists on /dev/sdb4 but will be lost or meaningless after creating array mdadm: largest drive (/dev/sdb4) exceeds size (5249024K) by more than 1% Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
[root@xinsz08-15 ~]# mdadm -D -s > /etc/mdadm.conf #設置開機生效
查詢現有的陣列
[root@xinsz08-15 ~]# mdadm -D -sARRAY /dev/md0 metadata=1.2 spares=1 name=xinsz08-15:0 UUID=85d2c0f0:d2e390b4:6f91164c:c7e3f691[root@xinsz08-15 ~]# mdadm -D -s /dev/md0 # 直接指定磁盤陣列的名字MD0ARRAY /dev/md0 metadata=1.2 spares=1 name=xinsz08-15:0 UUID=85d2c0f0:d2e390b4:6f91164c:c7e3f691
[root@xinsz08-15 ~]# mkfs.ext4 /dev/md0 # 把磁盤陣列格式化爲ext4系統mke2fs 1.41.12 (17-May-2010)文件系統標籤=操做系統:Linux 塊大小=4096 (log=2)分塊大小=4096 (log=2)Stride=128 blocks, Stripe width=256 blocks 657072 inodes, 2624512 blocks 131225 blocks (5.00%) reserved for the super user 第一個數據塊=0 Maximum filesystem blocks=2688548864 81 block groups32768 blocks per group, 32768 fragments per group 8112 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.[root@xinsz08-15 ~]#
建立掛載目錄並掛載
[root@xinsz08-15 ~]# mkdir /mnt/raid5[root@xinsz08-15 ~]# mount /dev/md0 /mnt/raid5[root@xinsz08-15 ~]# df -h/dev/md0 9.8G 23M 9.3G 1% /mnt/raid5[root@xinsz08-15 ~]#
[root@xinsz08-15 ~]# mdadm -D /dev/md0 #查看磁盤信息/dev/md0: #磁盤名字 Version : 1.2 #磁盤版本 Creation Time : Mon Jun 29 06:03:43 2020 #建立磁盤陣列的時間 Raid Level : raid5 #磁盤陣列爲riad5 Array Size : 10498048 (10.01 GiB 10.75 GB) Used Dev Size : 5249024 (5.01 GiB 5.38 GB) Raid Devices : 3 #三塊盤組成的RAID陣列 Total Devices : 4 #總共四快盤,由於還有個備用盤Persistence : Superblock is persistent Update Time : Mon Jun 29 06:09:43 2020 State : clean Active Devices : 3 #活動磁盤3個Working Devices : 4 #總共四個 Failed Devices : 0 #壞掉的0個 Spare Devices : 1 #共享備用盤1塊 Layout : left-symmetric Chunk Size : 512K Name : xinsz08-15:0 (local to host xinsz08-15) UUID : 85d2c0f0:d2e390b4:6f91164c:c7e3f691 Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 3 8 20 - spare /dev/sdb4[root@xinsz08-15 ~]#
終端一:模擬壞掉一塊磁盤並移除
-f 模擬壞掉,-r 移除
[root@xinsz08-15 ~]# mdadm /dev/md0 -f /dev/sdb2 -r /dev/sdb2mdadm: set /dev/sdb2 faulty in /dev/md0 mdadm: hot removed /dev/sdb2 from /dev/md0
終端二: 查看變化
[root@xinsz08-15 ~]# watch -n 0.5 ‘mdadm -D /dev/md0’
最後會看到 spare Devices的備用盤,變成了知working盤。 總盤數變成了3個。
[root@xinsz08-15 ~]# mdadm /dev/md0 -a /dev/sdb2mdadm: added /dev/sdb2
查看:
能夠看到sdb2變成了熱備盤
[root@xinsz08-15 ~]# mdadm -D /dev/md0/dev/md0: Version : 1.2 Creation Time : Mon Jun 29 06:03:43 2020 Raid Level : raid5 Array Size : 10498048 (10.01 GiB 10.75 GB) Used Dev Size : 5249024 (5.01 GiB 5.38 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Jun 29 06:29:52 2020 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Name : xinsz08-15:0 (local to host xinsz08-15) UUID : 85d2c0f0:d2e390b4:6f91164c:c7e3f691 Events : 39 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 3 8 20 1 active sync /dev/sdb4 4 8 19 2 active sync /dev/sdb3 5 8 18 - spare /dev/sdb2
實驗出真知,若是你只看文字弄不明白是什麼意思,建議照着操做一遍,按部就班學運維繫列全部文章都在機器上驗證過,若是你在作的過程當中遇到問題,也歡迎留言與我一塊兒探討。
我是高勝寒,一個在教培行業不忘初心的人,歡迎點贊收藏,咱們下篇文章見!