卷組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中删除
指令:vgreduce vg0 /dev/sdb15 ———— 從vg中删除pv
如果所在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 -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檔案系統的大小時應解除安裝它
再次檢視的時候我們可以看到容量大小已經是擴充後的大小了
縮小LV(這個比較麻煩)
解除安裝檔案系統,使其脫機進行操作(umount)
檢查檔案系統(e2fsck)
縮小檔案系統(resize2fs),指定縮小後的容量
縮小LV,減少卷容量(lvreduce),指定縮小後的容量
使用man 幫助看一看lvreduce的用法
注釋:邏輯卷可擴充同樣也可縮小,但應在縮小LV之前首先減小檔案系統,否則将可能導緻資料丢失。
下面來縮小lv0的容量,現容量為800M容量,我要縮小到500M
指令:umount /lv0
指令: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
本文轉自 wqmsl 51CTO部落格,原文連結:http://blog.51cto.com/wqmsl/471784,如需轉載請自行聯系原作者