磁盤陣列
軟件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
使用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
準備四塊磁盤,分別是,sdc1、sdd1、sde1、和sdb1 大小為20G
1.在sdb1上創建分區,大小為20G,
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc18b8bc
Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sdb1?????????????? 1??????? 2612??? 20980858+? 83? Linux
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc18b8bc
Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sdb1?????????????? 1??????? 2612??? 20980858+? fd? Linux raid autodetect
Command (m for help): w
partx -a
2.根據sdb1的分區表設置,分別復制分區和標志位
dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sdd bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sde bs=1 count=66 skip=446 seek=446
3.創建raid5
[root@centos6 ~]#mdadm -C /dev/md5 -a yes -l5 -c 32 -n 3 -x1 /dev/sd{c1,d1,e1,b1}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
4.創建文件系統
[root@centos6 ~]#mkfs.ext4 /dev/md5
5.掛載
[root@centos6 ~]#mkdir /data/raid5
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
6.生成配置文件
[root@centos6 ~]#mdadm -Ds /dev/md5 >/etc/mdadm.conf
[root@centos6 ~]#cat /etc/mdadm.conf
ARRAY /dev/md5 metadata=1.2 spares=1 name=centos6.9:5 UUID=e7cc89fe:0c6ebcf8:5f2d1869:da58575f
注:如果磁盤損壞,需要更換新磁盤,先把磁盤假如raid,然后再統一指定同一文件系統
mdadm–G /dev/md0 –n4 -a /dev/sdf1
resize2fs /dev/md5?? 此命令只適合ext系列文件系統,不適合xfs系列
xfs 系列則使用xfs_growfs /data/raid5?? /data/raid5是掛載點
創建raid10
準備4個硬盤,sdc,sdd,sde,sdf。
1.先創建raid0
[root@centos6 ~]#mdadm -C /dev/md0 -a yes -l0 -c 32 -n 2 /dev/sd{c,d}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@centos6 ~]#mdadm -C /dev/md1 -a yes -l0 -c 32 -n 2 /dev/sd{e,f}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
2.再用兩個raid0創建raid1
[root@centos6 ~]#mdadm -C /dev/md10 -a yes -l1 -c 32 -n 2 /dev/{md0,md1}
3.格式化
[root@centos6 ~]#mkfs.ext4 /dev/md10
4.自動掛載
[root@centos6 ~]#mkdir /data/md10
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
5.生成配置文件
[root@centos6 ~]#mdadm -Ds /dev/md1 >/etc/mdadm.conf
[root@centos6 ~]#mdadm -Ds /dev/md0 >>/etc/mdadm.conf
[root@centos6 ~]#mdadm -Ds /dev/md10 >>/etc/mdadm.conf
卸載raid10
1.卸載掛載
[root@centos6 ~]#umount /dev/md10
2.停止md10設備
[root@centos6 ~]#mdadm -S /dev/md10
mdadm: stopped /dev/md10
[root@centos6 ~]#mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@centos6 ~]#mdadm -S /dev/md1
mdadm: stopped /dev/md1
Number?? Major?? Minor?? RaidDevice
3.刪除配置文件,修改/etc/fstab
[root@centos6 ~]#\rm -rf /etc/mdadm.conf
[root@centos6 ~]#vim /etc/fstab
4.刪除raid信息
刪除raid信息:mdadm –zero-superblock /dev/sdb1
[root@centos6 ~]#mdadm –zero-superblock /dev/sdc
[root@centos6 ~]#mdadm –zero-superblock /dev/sdd
[root@centos6 ~]#mdadm –zero-superblock /dev/sde
[root@centos6 ~]#mdadm –zero-superblock /dev/sdf
邏輯卷管理
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 #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
跨主機遷移卷組
源計算機上
1 在舊系統中,umount所有卷組上的邏輯卷
vgrename vg0 centos6vg0
lvrename vg0 centos6lv0
2 vgchange–a n vg0
lvdisplay
3 vgexportvg0
pvscan
vgdisplay
拆下舊硬盤
在目標計算機上
4 在新系統中安裝舊硬盤,并vgimportvg0.
5 vgchange–ay vg0
?6 mount所有卷組上的邏輯卷
刪除所有邏輯卷
1.取消所有掛載,包括配置文件里的設置
2.刪除邏輯卷
lvremove /dev/vg1/lv1
3.刪除vg卷組
vgremove vg1
4.將pv物理設備刪除
pvremov /dev/sdx
實驗一、創建邏輯卷
準備2個磁盤sdc,sdd,大小20G
1.創建物理卷
[root@centos6 ~]#pvcreate /dev/sd{c,d}
Physical volume “/dev/sdc” successfully created
Physical volume “/dev/sdd” successfully created
2.創建vg卷組
[root@centos6 ~]#vgcreate -s 8M vg1 /dev/sd{c,d}
Volume group “vg1” successfully created
3.創建lv1和lv2
[root@centos6 ~]#lvcreate -n lv1 -L 10G vg1
Logical volume “lv1” created.
[root@centos6 ~]#lvcreate -n lv2 -l 100%FREE vg1
Logical volume “lv2” created.
[root@centos6 ~]#lvs
LV?? VG?? Attr?????? LSize? Pool Origin Data%? Meta%? Move Log Cpy%Sync Convert
lv1? vg1? -wi-a—– 10.00g
lv2? vg1? -wi-a—– 29.98g
4.創建文件系統
[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv1
[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv2
5.自動掛載
[root@centos6 ~]#mkdir /data/lv1
[root@centos6 ~]#vim /etc/fstab
[root@centos6 ~]#mount -a
在試驗一基礎上擴容,增加一塊新硬盤sde
- [root@centos6 ~]#pvcreate /dev/sde
Physical volume “/dev/sde” successfully created
2.擴展vg卷組
[root@centos6 ~]#vgextend vg1 /dev/sde
Volume group “vg1” successfully extended
[root@centos6 ~]#vgs
VG ??#PV #LV #SN Attr?? VSize? VFree
vg1??? 3?? 2?? 0 wz–n- 59.98g 19.99g
3.擴展lv1
[root@centos6 ~]#lvextend -l +100%FREE? /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 10.00 GiB (1280 extents) to 19.99 GiB (2559 extents).
Logical volume lv1 successfully resized.
4.新假如vg,重新指定文件系統
resize2fs /dev/vg1/lv1
也可以在步驟3時指定,加上-r選項,即:
lvextend -r -l +100%FREE? /dev/vg1/lv1
縮減邏輯卷,在xfs文件系統中不支持縮減功能
1.將邏輯卷里面的數據備份
用tar 或者cp
2.卸載掛載
umount MOUNTPOINT
3.檢查文件系統
fsck -f /dev/vg1/lv1
4.縮減文件系統
resize2fs /dev/vg1/lv1 20G
5.縮減lv大小
lvreduce -L 20G /dev/vg1/lv1
6.縮減完成后重新掛載
mount -a
刪除vg中pv,刪減其中一塊硬盤,但是硬盤中還有數據
1.pvdisplay 查看pv情況
2.把需要移除的硬盤里的數據轉移到別的硬盤
pvmove /dev/sde
3.把pv從vg卷組刪除
vgreduce vg1 /dev/sde
4.把pv變成普通硬盤
pvremove /dev/sde
邏輯卷跨主機遷移
1.把能空出來的硬盤都清理出來,
pvdisplay
pvmove
vgreduce vg0 /dev/sdx
pvremove /dev/sdx
2.把卷組都改名,以防和新設備邏輯卷名產生沖突
vgrename vg0 centos6vg0
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centoslv0
3.取消掛載,然后禁用
[root@centos6 ~]#umount /data/lv0
[root@centos6 ~]#vgchange -an centos6vg0
0 logical volume(s) in volume group “centos6vg0” now active
lvdisplay查看此時狀態,顯示LV Status????????????? NOT available
4.讓vg卷組處于導出狀態,
[root@centos6 ~]#vgexport centos6vg0
Volume group “centos6vg0” successfully exported
5.然后把帶有數據的邏輯卷硬盤拆出,添加到新主機
6.在新主機上,把vg卷從導出狀態變成導入狀態
vgimport centos6vg0
7.啟用vg卷
vgchange -ay centos6vg0
邏輯卷管理器快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
對于需要備份或者復制的現有數據臨時拷貝以及其它操作來說,快照是最合適的選擇
快照只有在它們和原來的邏輯卷不同時才會消耗空間
在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間
當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。
快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快照中更改的數據
建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了,也可以使用lvextend放大快照
使用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
創建快照
1.復制3個文件到邏輯卷掛載的目錄下
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f1
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f2
[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f3
2.創建快照
[root@centos7 ~]#lvcreate -n centos6lv0-snapshot -s -L 2G -p r /dev/centos6vg0/centoslv0
Using default stripesize 64.00 KiB.
Logical volume “centos6lv0-snapshot” created.
-p r 只讀屬性,防止誤刪除快照中的內容
-n 名字
在/dev/centos6vg0/centoslv0這個邏輯卷下創建一個centos6lv0-snapshot的快照
3.掛載創建的快照邏輯卷
[root@centos7 ~]#mkdir /data/snapshot
[root@centos7 ~]#mount? /dev/centos6vg0/centos6lv0-snapshot /data/snapshot
[root@centos7 ~]#cd /data/snapshot
[root@centos7 snapshot]#ll
total 28
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f1
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
此時看到的數據并不是真實的數據,真實的數據不在這,還在邏輯卷
4.修改邏輯卷文件中的內容,然后對比
[root@centos7 snapshot]#ll /data/centos6lv0/ /data/snapshot/
/data/centos6lv0/:
total 28
-rw-r–r– 1 root root?? 176 Apr 27 04:34 f1
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
/data/snapshot/:
total 28
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f1
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f2
-rw-r–r– 1 root root? 2901 Apr 27 04:17 f3
drwx—— 2 root root 16384 Apr 26 14:47 lost+found
這時體現除快照的備份效果
在xfs文件系統上創建快照
已經創建了一個邏輯卷lv0大小為20G并且剩余20Gvg卷組
1.在剩余的vg卷組創建快照
[root@centos7 ~]#lvcreate -n lv0-snapshot -L 5G -p r -s /dev/vg0/lv0
-s 表示這不是一般邏輯卷,是快照邏輯卷
-p r 指定只讀屬性
2.查看他們的uuid,結果相同,在xfs文件系統中,相同uuid不能掛載不同目錄
[root@centos7 ~]#blkid
/dev/mapper/vg0-lv0: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”
/dev/sdc1: UUID=”nvuDcD-TEAe-xbGQ-az3V-emG0-aasY-bCImkO” TYPE=”LVM2_member”
/dev/mapper/vg0-lv0–snapshot: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”
3.創建目錄給快照邏輯卷掛載,掛載時指定nouuid
[root@centos7 ~]#mkdir /data/snap
[root@centos7 ~]#mount -o nouuid /dev/vg0/lv0-snapshot /data/snap
mount: /dev/mapper/vg0-lv0–snapshot is write-protected, mounting read-only
mount: cannot mount /dev/mapper/vg0-lv0–snapshot read-only
4.在目錄中修改文件,或者刪除文件,然后恢復快照
[root@centos7 ~]#umount /data/lv0/
[root@centos7 ~]#umount /data/snap
umount: /data/snap: not mounted
[root@centos7 ~]#lvconvert –merge /dev/vg0/lv0-snapshot
Merging of volume vg0/lv0-snapshot started.
lv0: Merged: 100.00%
5.重新掛載邏輯卷,看有沒有恢復到原來狀態
mount /dev/vg0/lv0 /data/lv0
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97259