什麼是RAID
RAID:RedundantArrays of Inexpensive(Independent)Disks 廉價的獨立磁盤
1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”
多個磁盤合成一個“陣列”來提供更好的性能、備援,或者兩者都提供
RAID
提高IO能力
磁盤并行讀寫
提高耐用性
磁盤備援來實作
級别:多塊磁盤組織在一起的工作方式有所不同
RAID實作的方式:
外接式磁盤陣列:通過擴充卡提供适配能力
内接式RAID:主機闆內建RAID控制器
安裝OS前在BIOS裡配置
軟體RAID:通過OS實作
RAID級别
RAID-0:條帶卷,strip
RAID-1: 鏡像卷,mirror
RAID-2
...
RAID-5
RAID-6
RAID-10
RAID-01
RAID-0:
讀、寫性能提升;
可用空間:N*min(S1,S2,...)
無容錯能力
最少磁盤數:2, 2+
RAID-1:
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,...)
有備援能力
最少磁盤數:2, 2N
RAID-4:
多塊資料盤異或運算值存于專用校驗盤
RAID-5:
讀、寫性能提升
可用空間:6力:允許最多1塊磁盤損壞
最少磁盤數:3, 3+
RAID-6:
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,...)
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+
RAID-10:
讀、寫性能提升
可用空間:N*min(S1,S2,...)/2
有容錯能力:每組鏡像最多隻能壞一塊
最少磁盤數:4, 4+
組合RAID
RAID-01
多塊磁盤先實作RAID0,再組合成RAID1
RAID-50
多塊磁盤先實作RAID5,再組合成RAID0
JBOD:Just a Bunch Of Disks
功能:将多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,...)
RAID7
可以了解為一個獨立存儲計算機,自身帶有作業系統和管理工具,可以獨立運作,理論上性能最高的RAID模式
常用級别:
RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
軟RAID
mdadm:為軟RAID提供管理界面
為空餘磁盤添加備援
結合核心中的md(multi devices)
RAID裝置可命名為/dev/md0、/dev/md1、/dev/md2、/dev/md3等
軟體RAID的實作
mdadm:模式化的工具
指令的文法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支援的RAID級别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
建立:-C
裝配: -A
監控: -F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意塊裝置
-C: 建立模式
-n #: 使用#個塊裝置來建立此RAID
-l #:指明要建立的RAID的級别
-a {yes|no}:自動建立目标RAID裝置的裝置檔案
-c CHUNK_SIZE: 指明塊大小,機關k
-x #: 指明空閑盤的個數 簡稱備用
-D:顯示raid的詳細資訊
mdadm-D /dev/md#
管理模式:
-f: 标記指定磁盤為損壞
-a: 添加磁盤
-r: 移除磁盤
觀察md的狀态:
cat /proc/mdstat
軟RAID配置示例
使用mdadm建立并定義RAID裝置
mdadm-C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用檔案系統對每個RAID裝置進行格式化
mke2fs -j /dev/md0
測試RAID裝置
使用mdadm檢查RAID裝置的狀況
mdadm--detail|D/dev/md0
增加新的成員
mdadm–G /dev/md0 –n4 -a /dev/sdf1
軟RAID測試和修複
模拟磁盤故障
mdadm /dev/md0 -f /dev/sda1
移除磁盤
mdadm /dev/md0 –r /dev/sda1
從軟體RAID磁盤修複磁盤故障
替換出故障的磁盤然後開機
在備用驅動器上重建分區
mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系統日志資訊
軟RAID管理
生成配置檔案:mdadm –D –s >> /etc/mdadm.conf
停止裝置:mdadm –S /dev/md0
激活裝置:mdadm –A –s /dev/md0 激活
強制啟動:mdadm –R /dev/md0
删除raid資訊:mdadm --zero-superblock /dev/sdb1
問題:如何建立一個軟RAID5 添加一個硬碟備用????????
機器可使用的硬碟:
sdb 8:16 0 50G 0 disk
sde 8:64 0 30G 0 disk
sdc 8:32 0 40G 0 disk
sdd 8:48 0 30G 0 disk
将磁盤分區好:
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 30G 0 part
sde 8:64 0 30G 0 disk
└─sde1 8:65 0 30G 0 part
sdc 8:32 0 40G 0 disk
└─sdc1 8:33 0 30G 0 part
sdd 8:48 0 30G 0 disk
└─sdd1 8:49 0 30G 0 part
partx -a /dev/sdb sde sdc sdd 同步
建立RAID:
mdadm -C /dev/md0 -a yes -l5 -n3 -x1 /dev/sd{b,c,d,e}1
用于檢視建立的RAID裝置:
mdadm -D /dev/md0
建立檔案格式類型:
mkfs.ext4 /dev/md0 -L raid5 -L:添加卷标
建立與挂載出:
vim /etc/fstab
UUID=6f246919-9fc5-4854-9982-8e7f11c16318 /mnt/raid ext4 defaults 0 0
mkdir /mnt/raid
mount -a 啟用
注意:在使用RAID的時候建議最好生成一個RAID的配置檔案以防下次停止使用時無法讀取RAID裝置
如果要停止RAID裝置時要先取消挂載才可操作
測試一下RAID5的性能:本人使用的都是固态硬碟是以........
寫入的速度測試:
[[email protected] ~]# dd if=/dev/zero of=/data/f1 bs=1M count=1024 本機的普通硬碟寫入的性能
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.46875 s, 240 MB/s
[[email protected] ~]# dd if=/dev/zero of=/mnt/raid/f1 bs=1M count=1024 RAID5寫入的性能
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.47991 s, 433 MB/s
讀的速度測試:
[ro[email protected] ~]# dd if=/data/f1 of=/dev/null 本機的普通硬碟的讀取性能
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 4.17335 s, 257 MB/s
[[email protected] ~]# dd if=/mnt/raid/f1 of=/dev/null RAID5讀取的性能
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 2.14119 s, 501 MB/s
那麼如何停用和啟用RAID呢????
umount /mnt/raid/
mdadm -S /dev/md0 停用RAID
mdadm -A /dev/md0 啟用RAID
mount -a
檢視RAID狀态:
mdadm -D /dev/md0
模拟一塊硬碟損壞另外一個自動頂替
mdadm /dev/md0 -f /dev/sdc1 模拟/dev/sdc1的磁盤損壞
mdadm -D /dev/md0 檢視狀态
Rebuild Status : 18% complete 備用硬碟自動啟動填上去
即便是壞了一硬碟資料還是可通路的有容錯性
如何将損壞/dev/sdc1的硬碟移走呢????
mdadm /dev/md0 -r /dev/sdc1
還是可以添加回來的 不過成為備用的
mdadm /dev/md0 -a /dev/sdc1
新加的硬碟一般都沒有檔案系統硬碟空間無法使用該如何解決呢???
centos6:resize2fs /dev/md0 同步檔案系統,隻支援ext檔案格式
centos7:xfs_growfs /mnt/raid 同步檔案系統,支援xfs檔案格式 注意路徑要寫挂載的路徑
LVM:邏輯卷管理
允許對卷進行友善操作的抽象層,包括重新設定檔案系統的大小
允許在多個實體裝置間重新組織檔案系統
将裝置指定為實體卷
用一個或者多個實體卷來建立一個卷組
實體卷是用固定大小的實體區域(Physical Extent,PE)來定義的
在實體卷上建立的邏輯卷
是由實體區域(PE)組成
可以在邏輯卷上建立檔案系統
LVM介紹
LVM: Logical Volume Manager,Version: 2
dm: device mapper:将一個或多個底層塊裝置組織成一個邏輯裝置的子產品
裝置名:/dev/dm-#
軟連結:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM更改檔案系統的容量
LVM可以彈性的更改LVM的容量
通過交換PE來進行資料的轉換,将原來LV内的PE轉移到其他的裝置中以降低LV的容量,或将其他裝置中的PE加到LV中以加大容量
pv管理工具
顯示pv資訊
pvs:簡要pv資訊顯示
pvdisplay
建立pv
pvcreate /dev/DEVICE
vg管理工具
顯示卷組
vgs:顯示卷組的空間
vgdisplay:顯示詳細的卷組資訊
建立卷組
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
管理卷組
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
删除卷組
先做pvmove,再做vgremove
lv管理工具
顯示邏輯卷
lvs
Lvdisplay
建立邏輯卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvcreate -l 60%VG -n mylvtestvg
lvcreate -l 100%FREE -n yourlvtestvg
删除邏輯卷
lvremove/dev/VG_NAME/LV_NAME
重設檔案系統大小
fsadm[options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size
擴充和縮減邏輯卷
擴充邏輯卷:
lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
縮減邏輯卷:
umount/dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGt]
lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
跨主機遷移卷組
源計算機上
1 在舊系統中,umount所有卷組上的邏輯卷
2 vgchange–a n vg0
lvdisplay
3 vgexportvg0
pvscan
vgdisplay
拆下舊硬碟
在目标計算機上
4 在新系統中安裝舊硬碟,并vgimportvg0.
5 vgchange–ay vg0
6 mount所有卷組上的邏輯卷
建立邏輯卷示例
建立實體卷
pvcreate /dev/sda3
為卷組配置設定實體卷
vgcreate vg0 /dev/sda3
從卷組建立邏輯卷
lvcreate -L 256M -n data vg0
mke2fs -j /dev/vg0/data
mount /dev/vg0/data /mnt/data
邏輯卷管理器快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準确拷貝
對于需要備份或者複制的現有資料臨時拷貝以及其它操作來說,快照是最合适的選擇
快照隻有在它們和原來的邏輯卷不同時才會消耗空間
在生成快照時會配置設定給它一定的空間,但隻有在原來的邏輯卷或者快照有所改變才會使用這些空間
當原來的邏輯卷中有所改變時,會将舊的資料複制到快照中。
快照中隻含有原來的邏輯卷中更改的資料或者自生成快照後的快照中更改的資料
建立快照的卷大小隻需要原始邏輯卷的15%~20%就夠了,也可以使用lvextend放大快照
快照就是将當時的系統資訊記錄下來,就好像照相一般,若将來有任何資料改動了,則原始資料會被移動到快照區,沒有改動的區域則由快照區和檔案系統共享
由于快照區與原本的LV共用很多PE的區塊,是以快照與被快照的LV必須在同一個VG中.系統恢複的時候的檔案數量不能高于快照區的實際容量
使用LVM快照
為現有邏輯卷建立快照
lvcreate-l 64 -s -n data-snapshot -p r /dev/vg0/data
挂載快照
mkdir-p /mnt/snap
mount -o ro/dev/vg0/data-snapshot /mnt/snap
恢複快照
umount/dev/vg0/data-snapshot
umount/dev/vg0/data
lvconvert--merge /dev/vg0/data-snapshot
删除快照
umount/mnt/databackup
lvremove/dev/vg0/databackup
小執行個體:
在硬碟上做兩個LVM的分區/dev/sdb1、/dev/sdc1大小各2G
将普通的硬碟分區變成實體卷呢:
pvcreate:用于建立實體卷
pvdisplay:檢視實體卷看比較詳細
pvs 用于檢視實體卷
pvcreate /dev/sdb1 建立實體卷
pvcreate /dev/sdc1 建立實體卷
建立卷組:
vgs:檢視現有的卷組
vgdisplay:檢視更詳細的卷組
vgcreate -s 18M vg1 /dev/sdb1
vgcreate -s 18M vg2 /dev/sdc1
建立邏輯卷:
lvcreate -n lv1 -l 100 vg1
lvdisplay:檢視建立的邏輯卷
将剩餘的邏輯卷全部用完:
lvcreate -n lv2 -l 100%FREE vg1
100%FREE:将分區裡的剩餘空間全部用完
建立檔案格式:
mkfs.ext4 /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
挂載裝置:
UUID=d60bf3e2-dede-4507-9e58-c16a46c45a63 /mnt/lv1 ext4 defaults 0 0
UUID=3894bb11-c5e7-4be5-b4c3-ef4ce4461b27 /mnt/lv2 ext4 defaults 0 0
mkdir /mnt/lv1
mkdir /mnt/lv2
mount -a 啟用挂載
測試性能:
[[email protected] ~]# dd if=/dev/zero of=/mnt/lv1/f1 bs=1M count=10241024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.09417 s, 118 MB/s
如遇到邏輯卷空間不足如何增加空間:
首先加一塊新的硬碟:
在添加硬碟之後須執行:我加了一個20G的新硬碟名稱:/dev/sdd
echo '- - -' > /sys/class/scsi_host/host2/scan 掃描識别新添加的硬碟
直接用整塊硬碟做,可直接做成實體卷:
pvcreate /dev/sdd
添加進之前的vg1卷組:
[[email protected] ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended
[[email protected] ~]# pvs 或vgdisplay 用于查詢
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a--u 2.00g 0
/dev/sdc1 vg1 lvm2 a--u 2.00g 0
/dev/sdd vg1 lvm2 a--u 19.99g 19.99g
将剛添加的新硬碟添加進/mnt/lv1:
lvextend -L +10G /dev/vg1/lv1
注意:添加完之後df中的添加的10G空間釋放必須要同步一下即可:
resize2fs /dev/vg1/lv1
其實也可以直接帶參數選項:
lvextend -r -l +100%FREE /dev/vg1/lv1
-r:同步
-l +100%FREE:硬碟下的剩餘空間
當遇到邏輯卷空間比較大時可以縮減的centos7是不行的用于centos6:
縮減5G:
e2fsck -f /dev/vg1/lv1 先檢查完整性才可執行縮減
resize2fs /dev/vg1/lv1 5G
縮減邏輯卷:注意可能會損壞資料
lvreduce -L 5G /dev/vg1/lv1
mount -a 将/mnt/lv1挂載回去
轉載于:https://blog.51cto.com/001230/2120575