歡迎您光臨本站 註冊首頁

Linux LVM邏輯卷管理

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

製作人: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中刪除


命令: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)

指定擴容后的尺寸: 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邏輯卷管理已經有636次圍觀

http://coctec.com/docs/linux/show-post-48057.html