RAID(獨立冗余磁盤陣列)
通過把多個硬盤設(shè)備組合成一個容量更大吗蚌、安全性更好的磁盤陣列笙纤,并把數(shù)據(jù)切割成多個區(qū)段后分別存放在各個不同的物理硬盤設(shè)備上仔沿,然后利用分散讀寫技術(shù)來提升磁盤陣列整體的性能丹诀,同時把多個重要數(shù)據(jù)的副本同步到不同的物理硬盤設(shè)備上
RAID 0
能夠有效的提升硬盤數(shù)據(jù)的吞吐速度走孽,但是不具備數(shù)據(jù)備份和錯誤修復(fù)能力惧辈,數(shù)據(jù)會被分開寫入到不同的硬盤設(shè)備中
RAID 1
在寫入數(shù)據(jù)時,將數(shù)據(jù)同時寫入到多塊硬盤設(shè)備上磕瓷,當(dāng)其中一塊硬盤出錯時盒齿,會自動替換
RAID 5
把硬盤設(shè)備的數(shù)據(jù)奇偶校驗信息保存到其他硬盤設(shè)備中,這樣任何一個設(shè)備損壞后不至于出現(xiàn)致命缺陷
RAID 10
RAID 0和RAID 1的組合體困食,繼承了RAID 0的高讀寫速度和RAID 1的數(shù)據(jù)安全性边翁,在不考慮成本的情況下RAID 10的性能都超過了RAID 5
mdadm
管理Linux 系統(tǒng)中的軟件RAID硬盤陣列
參數(shù) | 作用 |
---|---|
-a | 檢測設(shè)備名稱 |
-n | 指定設(shè)備數(shù)量 |
-l | 指定RAID界別 |
-C | 創(chuàng)建 |
-v | 顯示過程 |
-f | 模擬設(shè)備損壞 |
-r | 移除設(shè)備 |
-Q | 查看摘要信息 |
-D | 查看詳細(xì)信息 |
-S | 停止RAID磁盤陣列 |
-x | 備份盤數(shù)量 |
使用4塊硬盤來部署RAID 10,并掛載硬盤硕盹,最后將掛載信息寫入到配置文件中
# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# mkfs.ext4 /dev/md0
# mkdir /RAID
# mount /dev/md0 /RAID
# df -h
etc...
/dev/md0 40G 49M 38G 1% /RAID
# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
損壞硬盤陣列及修復(fù)
這里模擬一下RAID 磁盤陣列損壞后的處理方法
使用madadm命令將壞掉的硬盤移除符匾,然后查看RAID磁盤陣列的狀態(tài),這時可以發(fā)現(xiàn)狀態(tài)已經(jīng)改變瘩例,再模擬一個新的硬盤啊胶,重啟系統(tǒng),接著把新的硬盤添加到RAID磁盤陣列中
# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
# mdadm -D /dev/md0
etc...
0 8 16 - faulty /dev/sdb
# umount /RAID
# mdadm /dev/md0 -a /dev/sdb
# mdadm -D /dev/md0
etc...
Number Major Minor RaidDevice State
4 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
# mount -a
磁盤陣列+備份盤
RAID 10 最多允許50%的硬盤設(shè)備發(fā)生故障垛贤,但是存在一些極端情況创淡,這時我們需要用到備份盤
這里的例子是RAID 5,一共使用4塊硬盤南吮,其中一個是用來備份琳彩,用 -x 來表示數(shù)量,當(dāng)硬盤出現(xiàn)問題時部凑,備份盤會自動頂替出問題的硬盤露乏,并回復(fù)數(shù)據(jù)
# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
etc...
# mdadm -D /dev/md0
etc...
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
# mkfs.ext4 /dev/md0
etc...
# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
# mkdir /RAID
# mount -a
LVM(邏輯卷管理器)
在硬盤分區(qū)或者部署為RAID磁盤陣列后涂邀,用戶想要調(diào)整硬盤分區(qū)的大小時瘟仿,需要用到LVM技術(shù),該技術(shù)可以允許用戶對硬盤資源進行動態(tài)調(diào)整
部署邏輯卷
功能/命令 | 物理卷管理 | 卷組管理 | 邏輯卷管理 |
---|---|---|---|
掃描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
顯示 | pvdisplay | vgdisplay | lvdisplay |
刪除 | pvremove | vgremove | lvremove |
擴展 | vgextend | lvextend | |
縮小 | vgreduce | lvreduce |
部署:
- 讓添加的設(shè)備支持LVM技術(shù)
- 將兩塊硬盤設(shè)備加入到storage卷組中
- 切割出一個150MB的邏輯卷設(shè)備
- 把生成好的邏輯卷格式化比勉,掛載使用
- 寫入配置文件
# pvcreate /dev/sdb /dev/sdc
etc...
# vgcreate storage /dev/sdb /dev/sdc
etc...
# vgdisplay
etc...
Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB
etc...
# lvcreate -n vo -l 37 storage
etc...
# lvdisplay
etc...
LV Size 148.00MiB
etc...
# mkfs.ext4 /dev/storage/vo
etc...
# mkdir /lvm
# mount /dev/storage/vo /lvm
# df -h
etc...
/dev/mapper/storage-vo 145M 7.6M 138M 6% /lvm
# echo "/dev/storage/vo /lvm ext4 defaults 0 0" >> /etc/fstab
擴容邏輯卷
擴容:
- 把邏輯卷vo擴展至290MB
- 檢查硬盤完整性劳较,并重置硬盤容量
- 重新掛載硬盤設(shè)備并查看掛載狀態(tài)
# umount /lvm
# lvextend -L 290M /dev/storage/vo
etc...
# e2fsck -f /dev/storage/vo
etc...
# resize2fs /dev/storage/vo
# mount -a
# df -h
etc...
/dev/mapper/storage-vo 279M 2.1M 259M 1% /lvm
縮小邏輯卷
縮芯灾埂:
- 檢查文件系統(tǒng)的完整性
- 把邏輯卷的容量減小到120MB
- 重新掛載文件系統(tǒng)并查看系統(tǒng)狀態(tài)
# umount /lvm
# e2fsck -f /dev/storage/vo
etc...
# resize2fs /dev/storage/vo 120M
etc...
# lvreduce -L 120M /dev/storage/vo
etc...
# mount -a
# df -h
etc...
/dev/mapper/storage-vo 113M 1.6M 103M 2% /lvm
邏輯卷快照
快照:
- 使用-s參數(shù)生成一個快照卷,使用-L參數(shù)指定切割的大小
- 在邏輯卷所掛載的目錄中創(chuàng)建一個100MB的垃圾文件观蜗,然后再看快照卷的狀態(tài)可以發(fā)現(xiàn)存儲空間占用的量上升了
- 校驗SNAP快照卷的效果臊恋,需要對邏輯卷進行快照還原操作
- 快照卷會被自動刪除掉
# vgdisplay
etc...
Alloc PE / Size 30 / 120.00 MiB Free PE / Size 10208 / 39.88 GiB
etc..
# lvcreate -L 120M -s -n SNAP /dev/storage/vo
etc...
# lvdisplay
etc...
# dd if=/dev/zero of=/lvm/files count=1 bs=100M
etc..
# lvdisplay
etc...
Allocated to snapshot 83.71%
etc...
# umount /lvm
# lvconvert --merge /dev/storage/SNAP
etc...
# mount -a
# ls /lvm/