邏輯卷的原理

邏輯卷的組成上包括物理卷,邏輯組,邏輯卷
物理卷即是磁盤分區或者塊設備經過轉換以后形成的抽象的邏輯設備
邏輯組即是將物理卷進行統一打包,合成一個更大的邏輯上的分區
邏輯卷是在邏輯組的基礎上細分的課動態調節的虛擬磁盤分
其工作原理是通過某種機制將物理上的塊設備或者分區抽象的進行封裝,然后以邏輯卷的方式統一呈現給
上層的應用
邏輯卷的操作
一:創建邏輯卷
步驟一:首先需要將塊設備轉換為邏輯卷
使用的命令為 pvcreate
在創建之前可以使用 pv 或者 pvdisplay 命令來查看當前系統上的物理卷,如果沒有則不予顯示
pvcreate /dev/sdb /dev/sdc 將/dev/sdb 和 /dev/sdc 兩個設備文件轉換為物理卷設備
步驟二:創建邏輯組
邏輯組里面有一個PE的概念,這個是指定一次分配邏輯卷時的最小單位,相當于文件系統里面塊的概念
創建邏輯組之前可以先查看是否有邏輯卷,使用命令 vgs 或者 vgdisplay
創建邏輯組的命令為 vgcreat 命令
-s :指定PE的大小
vgcreate -s 16 /dev/sd{b,c} 創建 一個邏輯組,其中PE的大小為16M,
步驟三:創建邏輯卷
邏輯卷的創建必須是在邏輯組的基礎上來創建,且最大的邏輯卷的大小是不能超過邏輯組的大小
創建邏輯卷之前可以查看是否邏輯卷,命令為 lvs 或者 lvdisplay
-n : 指定邏輯卷的名字
-L:指定邏輯卷的大小,數值單位,+50G
-l:指令邏輯卷的大小,以PE為單位,PE的個數 后面還可以這樣寫 %60VG 代表分出VG的%60的空間
%100FREE 代表分配出全部的內存
lvcreat -n lv0 -l 1000 vg0 創建一個邏輯卷,名字為lv0 ,大小為1000個PE ,從vg0分配
需要注意的是分配的名字并不不是設備的真正的名字,實際上它是一個軟鏈接,
設備名 /dev/vg0/lv0 或者 /dev/mapper/vg0-lv0
真正的名字一般為:
/dev/dm-0
查看邏輯卷的狀態
步驟四:格式化創建文件系統,掛載文件系統
二:擴展邏輯卷
擴展邏輯卷的前提是,邏輯組里面還有空間,否則報錯
擴展邏輯卷一般情況下有兩種需要:
-
擴充容量
-
擴充文件系統,容量擴充后,沒有擴充的文件系統,系統是無法識別的,容量就不會發生改變
lvextend
-L:指定擴展的大小,100G 擴展到100G +100G 額外增加100G
+100%FREE 將剩余的空間100%的分配給邏輯卷
lvextend -L 100G /dev/vg0/lv0 將/dev/vg0/lv0 擴容到100G
擴充文件系統:擴充文件系統的過程中不會取消掛載狀態
resize2fs /dev/vg0/lv0
三:擴充邏輯組
當邏輯組的容量用完以后,此時邏輯卷不能再進行擴容,如果需要擴容,則需要新添加硬盤
方法是執行步驟一之后開始擴展邏輯組的容量
使用命令 vgextend
vgextend vg0 /dev/sdd 將/dev/sdd硬盤加入邏輯組,實現邏輯組的擴容
四:邏輯卷的替換
邏輯卷一般情況下是不會替換的,不過某些情況下卻要進行替換,
比如硬盤提示有故障了,但是還沒當掉,此時需要將這塊硬盤拆下來,但是不能直接拆,不然會導致邏輯卷錯誤
其基本思想是,先將要替換的磁盤上面的東西(PE)移動到邏輯組上的任意空間(邏輯組空間要足夠,否則添加硬盤)
然后移除該硬盤,最后拔掉故障的硬盤
pvmove /dev/sdc 將/dev/sdc上面的所欲PE全部遷移到邏輯組上有空余的空間上去
然后將/dev/sdc從邏輯組里面移除
vgreduce vg0 /dev/sdc
然后查看 vgdisplay
最后在物理卷上面移除該邏輯卷即可
pvremove /dev/sdc
然后可以拔掉硬盤
首先觀察到/dev/sdc硬盤上面已經分好了PE
然后執行移動操作
報錯,提示邏輯組的空間不夠,現在添加一塊磁盤之后再來,先擴充vg0
從vg0里面移除/dev/sdc
執行最后一步,在物理卷上移除/dev/sdc
五:邏輯卷的縮減
邏輯卷的縮減不像邏輯卷的增加一樣可以在線的增加,邏輯卷的縮減需要先停止業務之后才能進行縮減
umount /dev/sdc
縮減文件系統到指定的值,不過這里需要特備強調的是,縮減一定要非常的注意當前狀態下的邏輯卷
設備已經利用了多少,否則會因為縮減而導致數據的丟失
resize2fs /dev/vg0/lv0 50G 縮減lv0到50G ,一定要查看lv0里面所存的數據是否大于50G,故建議先備份然后再縮減
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 50G
lvreduce -L 50G /dev/vg0/lv0
實際操作:
六:邏輯卷的整體遷移
需要將整個邏輯卷遷移到另外的機器上的時候
邏輯卷的遷移之前需要檢查要遷移到的主機上是否存在同名的邏輯卷組,否則需要改名
源主機:
-
改名的指令:vgrename vg0 vg1 將邏輯組vg0的名字改為vg1
-
將卷組卸載
umount /dev/vg1/lv0
-
將卷組設為禁用,防止遷移的過程中有人使用導致數據丟失
vgchang -a n vg1 將卷組設置為no
vgexport vg1
目標主機:
vgimport vg1
vgchang -a y
實際操作:
目的主機上:
原創文章,作者:Double f,如若轉載,請注明出處:http://www.www58058.com/74565