製作人:wqmsl
博客地址:http://wqmsl.blog.51cto.com
卷組volume group (VG)
卷組是LVM中最高抽象層,是由一個或多個物理卷所組成的存儲器池.
物理卷physical volume (PV)
典型的物理卷是硬碟分區,但也可以是整個硬碟或已創建的Software RAID 卷.
物理塊physical extent (PE)
物理卷按大小相等的「塊」為單位存儲,塊的大小與卷組中邏輯卷塊的大小相同.
邏輯塊logical extent (LE)
邏輯卷按「塊」為單位存儲,在一卷組中的所有邏輯卷的塊大小是相同的.
邏輯卷logical volume (LV)
邏輯卷相當於非LVM系統中的分區,它在卷組上建立,是一個標準的塊設備,可以在其上建立文件系統
線性映射
線性映射-把一定範圍的物理塊按順序分配給邏輯卷,如LV的LE 1-99映射到PV1,LE 100-347映射到PV2.
交錯模式
交錯模式-將把邏輯塊交錯映射到不同的物理卷中,如 LV的LE 1映射為PV1的PE1,LE 2映射為PV2的PE1,LE 3映射為PV1的PE2..這種方式可以提高邏輯卷的性能,但是採用這種方式建立的邏輯卷將不能在它們所在的物理卷中擴展.
創建LVM卷,從下到上創建,示意圖如下
第一步創建物理文件系統
首先我們要創建文件系統
命令: fdisk /dev/sdb ———— 創建物理卷並修改ID為8e
第二步初始化物理卷為PV
創建PV,添加幾個文件系統,然後再添加一個RAID文件系統
命令:pvcreate /dev/sdb{5,6,7,8,9} ———— 添加文件系統到PV
pvcreate /dev/md0 ———— 添加raid文件系統到PV
pvs,pvdisplay ———— 查看系統現有PV
第三步創建卷組VG
添加PV到卷組,創建VG卷組
命令:vgcreate [-s=16m] test_vg /dev/sdk1 /dev/sdl1
指定PE大小 VG卷組名 要添加到VG中的PV
使用man幫助看一下使用方法
看上面的例子,我們添加PV到卷組中創建VG
命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0
vgs,vgdisplay
註釋:[-s=16m] 裡面的內容可選,修改默認的PE單元大小,默認為4M,最大一個卷組是256G,修改默認單元為16M,最大的卷組單元是1024G
命令:vgdisplay testvg | grep "Total PE"
看看默認的PE大小為4M,PV個數為6個,VG的總大小為6.7.G
其他VG卷組的一些操作
激活VG
在被激活之前,VG與LV是無法訪問的
用man幫助看一下
命令:vgchange -a y vg0 ———— 激活vg0卷組
當不再使用VG時,休眠了vg0卷組
命令:vgchange -a n vg0 ———— 使之不再可用
移除VG
在移除一卷組前應確認卷組中不再有邏輯卷
命令:vgchange -a n vg0 ———— 休眠卷組
vgremove vg0 ———— 移除該卷組
為VG增加新PV
當卷組空間不足時,可以加入新的物理捲來擴大VG卷組容量,這時可用命令vgextend
pvcreate /dev/sdb15 ———— 初始化sdb15為PV
vgextend vg0 /dev/sdb15 ———— 把sdb15加入到卷組vg0中
其中/dev/sdb15是新的PV,當然在這之前,它應使用pvcreate初始化
從VG移除PV
在移除PV之前,應確認該PV沒用被LV使用
命令:pvdisplay /dev/sdb15 ———— 查看pv有沒有使用
如這個PV仍在被使用,在確認它未被使用后,可用命令vgreduce把它從VG中刪除
如果所在PV上有數據,則應把數據傳移到其它PV上
註釋:若要把一個PV從VG中移除,應首先把其上所有活動PE中的數據轉移到其它PV上,而新的PV必須是本VG的一部分,有足夠的空間,如要把PV1:/dev/md0上的數據移到PV2:/dev/sdb6上可用,建議在轉移數據之前備份LV中的數據,如果在該PV之上的LV採用交錯方式存放,則這個轉移過程不能被打斷.
命令:pvmove /dev/md0 /dev/sdb6
第四步創建LV邏輯卷
lvcreate命令的常用方法和參數:
lvcreate [options] -n 邏輯卷名 卷組名 [PV1...]
-i Stripes :採用交錯(striped)方式創建LV,其中Stripes指卷組中PV的數量.
-I Stripe_size :採用交錯方式時採用的塊大小(單位為KB),Stripe_size必須為2的指數:2N ,N=2,3...9
-l LEs :指定LV的邏輯塊數.
-L size :指定LV的大小,其後可以用K、M、G表示KB、MB、GB.
-s :創建一已存在LV的snapshot卷.
-n name :為LV指定名稱.
看看man幫助如何創建LV
在VG卷組上創建LV邏輯卷
命令:lvcreate -L 500M -n lv0 vg0
指定LV大小 LV名稱 卷組VG名稱
查看整個卷組VG總大小6.7G,剩餘的空間為6.21G
命令:vgs
格式化LV
命令:mkfs.ext3 /dev/vg0/lv0
查看一個lv0塊設備
刪除LV
為刪除一個邏輯卷,必須首先從系統卸載其上的文件系統,然後可用lvremove刪除,如:
umount /lv1 先卸載LV文件系統
lvremove /dev/vg0/lv1 移除lv1邏輯卷
掛載lv0並創建文件
下面最關鍵的來了
擴大LV
步驟如下:
首先增加邏輯卷容量(lvextend)
在線(離線)增加ext3文件系統(resize2fs)
查看man幫助
查看lv擴展后的VG卷組剩餘空間
首先增加邏輯卷容量(lvextend)
指定擴容后的尺寸: lvextend -L 2G /dev/vg0/lv0
將擴大邏輯卷lv0的容量為2GB.
指定要增加的尺寸: lvextend -L 512M /dev/vg0/lv0
將為LV v0再增大容量1GB至1.5GB.
註釋:為LV擴容的一個前提是,LV所在的VG有足夠的空閑存儲空間可用.
在為LV擴容之後,應同時為LV之上的文件系統擴容,使二者相匹配.對不同的文件系統有相對應的擴容方法.
擴充了LV后,重新掛載,查看大小,看到當前的LV大小並沒有增大,那又該怎麼辦呢?
註釋:ext2/ext3除非內核已有ext2online 補丁,否則在改變ext2/ext3文件系統的大小時應卸載它
在線(離線)增加ext3文件系統(resize2fs)
再次查看的時候我們可以看到容量大小已經是擴展后的大小了
縮小LV(這個比較麻煩)
步驟如下:
卸載文件系統,使其離線進行操作(umount)
檢查文件系統(e2fsck)
縮小文件系統(resize2fs),指定縮小后的容量
縮小LV,減少卷容量(lvreduce),指定縮小后的容量
使用man 幫助看一看lvreduce的用法
註釋:邏輯卷可擴展同樣也可縮小,但應在縮小LV之前首先減小文件系統,否則將可能導致數據丟失.
下面來縮小lv0的容量,現容量為800M容量,我要縮小到500M
卸載文件系統,使其離線進行操作(umount)
命令:umount /lv0
檢查文件系統(e2fsck)
命令:e2fsck -f /dev/vg0/lv0
縮小文件系統(resize2fs)
命令:resize2fs /dev/vg0/lv0 500M
縮小LV,減少卷容量(lvreduce)
命令:lvreduce -L 500M /dev/vg0/lv0
掛載lv0文件系統並查看其大小
系統啟動激活
在RHEL 5以後都會自動激活LVM,如下,在系統啟動的時候會自動激活的
如果沒有激活的話請做如下操作:
系統啟動/關閉
"為使系統啟動時可自動激活並使用LVM,可將以下幾行添加到啟動 rc 腳本中:
/sbin/vgscan
/sbin/vgchange -a y
這些行將瀏覽所有可用的卷組並激活它們.要注意的是,它們應在安裝卷組上的文件系統操作之前被執行,否則將無法正常安裝文件系統.
"在系統關機時,要關閉LVM,這可將以下這行添加到關機 rc 腳本中,並確保它在卸裝了所有文件系統后執行:/sbin/vgchange -a n
[火星人 ] Linux LVM邏輯卷管理已經有638次圍觀