Linux LVM邏輯卷管理過程
- 卷組volume group (VG)
- 卷組是LVM中最高抽象層,是由一個(gè)或多個(gè)物理卷所組成的存儲(chǔ)器池。
- 物理卷physical volume (PV)
- 典型的物理卷是硬盤分區(qū),但也可以是整個(gè)硬盤或已創(chuàng)建的Software RAID 卷。
- 物理塊physical extent (PE)
- 物理卷按大小相等的“塊”為單位存儲(chǔ),塊的大小與卷組中邏輯卷塊的大小相同。
- 邏輯塊logical extent (LE)
- 邏輯卷按“塊”為單位存儲(chǔ),在一卷組中的所有邏輯卷的塊大小是相同的。
邏輯卷logical volume (LV)
邏輯卷相當(dāng)于非LVM系統(tǒng)中的分區(qū),它在卷組上建立,是一個(gè)標(biāo)準(zhǔn)的塊設(shè)備,可以在其上建立文件系統(tǒng)
線性映射
線性映射-把一定范圍的物理塊按順序分配給邏輯卷,如LV的LE 1-99映射到PV1,LE 100-347映射到PV2。
交錯(cuò)模式
交錯(cuò)模式-將把邏輯塊交錯(cuò)映射到不同的物理卷中,如 LV的LE 1映射為PV1的PE1,LE 2映射為PV2的PE1,LE 3映射為PV1的PE2.。這種方式可以提高邏輯卷的性能,但是采用這種方式建立的邏輯卷將不能在它們所在的物理卷中擴(kuò)展。
創(chuàng)建LVM卷,從下到上創(chuàng)建,示意圖如下

第一步創(chuàng)建物理文件系統(tǒng)
首先我們要?jiǎng)?chuàng)建文件系統(tǒng)
命令: fdisk /dev/sdb ———— 創(chuàng)建物理卷并修改ID為8e

第二步初始化物理卷為PV
創(chuàng)建PV,添加幾個(gè)文件系統(tǒng),然后再添加一個(gè)RAID文件系統(tǒng)
命令:
- pvcreate /dev/sdb{5,6,7,8,9} ———— 添加文件系統(tǒng)到PV
- pvcreate /dev/md0 ———— 添加raid文件系統(tǒng)到PV
- pvs,pvdisplay ———— 查看系統(tǒng)現(xiàn)有PV

第三步創(chuàng)建卷組VG
添加PV到卷組,創(chuàng)建VG卷組
命令:vgcreate [-s=16m] test_vg /dev/sdk1 /dev/sdl1
指定PE大小 VG卷組名 要添加到VG中的PV
使用man幫助看一下使用方法

看上面的例子,我們添加PV到卷組中創(chuàng)建VG
命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0
vgs,vgdisplay

注釋:[-s=16m] 里面的內(nèi)容可選,修改默認(rèn)的PE單元大小,默認(rèn)為4M,最大一個(gè)卷組是256G,修改默認(rèn)單元為16M,最大的卷組單元是1024G
命令:vgdisplay testvg | grep "Total PE"
看看默認(rèn)的PE大小為4M,PV個(gè)數(shù)為6個(gè),VG的總大小為6.7.G

其他VG卷組的一些操作
激活VG
在被激活之前,VG與LV是無法訪問的
用man幫助看一下

命令:vgchange -a y vg0 ———— 激活vg0卷組

當(dāng)不再使用VG時(shí),休眠了vg0卷組
命令:vgchange -a n vg0 ———— 使之不再可用

移除VG
在移除一卷組前應(yīng)確認(rèn)卷組中不再有邏輯卷
命令:vgchange -a n vg0 ———— 休眠卷組
vgremove vg0 ———— 移除該卷組

為VG增加新PV
當(dāng)卷組空間不足時(shí),可以加入新的物理卷來擴(kuò)大VG卷組容量,這時(shí)可用命令vgextend
- pvcreate /dev/sdb15 ———— 初始化sdb15為PV
- vgextend vg0 /dev/sdb15 ———— 把sdb15加入到卷組vg0中
其中/dev/sdb15是新的PV,當(dāng)然在這之前,它應(yīng)使用pvcreate初始化

從VG移除PV
在移除PV之前,應(yīng)確認(rèn)該P(yáng)V沒用被LV使用
命令:pvdisplay /dev/sdb15 ———— 查看pv有沒有使用

如這個(gè)PV仍在被使用,在確認(rèn)它未被使用后,可用命令vgreduce把它從VG中刪除
命令:vgreduce vg0 /dev/sdb15 ———— 從vg中刪除pv

如果所在PV上有數(shù)據(jù),則應(yīng)把數(shù)據(jù)傳移到其它PV上
注釋:若要把一個(gè)PV從VG中移除,應(yīng)首先把其上所有活動(dòng)PE中的數(shù)據(jù)轉(zhuǎn)移到其它PV上,而新的PV必須是本VG的一部分,有足夠的空間,如要把PV1:/dev/md0上的數(shù)據(jù)移到PV2:/dev/sdb6上可用,建議在轉(zhuǎn)移數(shù)據(jù)之前備份LV中的數(shù)據(jù),如果在該P(yáng)V之上的LV采用交錯(cuò)方式存放,則這個(gè)轉(zhuǎn)移過程不能被打斷。
命令:pvmove /dev/md0 /dev/sdb6

第四步創(chuàng)建LV邏輯卷
lvcreate命令的常用方法和參數(shù):
lvcreate [options] -n 邏輯卷名 卷組名 [PV1...]
- -i Stripes :采用交錯(cuò)(striped)方式創(chuàng)建LV,其中Stripes指卷組中PV的數(shù)量。
- -I Stripe_size :采用交錯(cuò)方式時(shí)采用的塊大小(單位為KB),Stripe_size必須為2的指數(shù):2N ,N=2,3...9
- -l LEs :指定LV的邏輯塊數(shù)。
- -L size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。
- -s :創(chuàng)建一已存在LV的snapshot卷。
- -n name :為LV指定名稱。
看看man幫助如何創(chuàng)建LV

在VG卷組上創(chuàng)建LV邏輯卷
命令:lvcreate -L 500M -n lv0 vg0
指定LV大小 LV名稱 卷組VG名稱

查看整個(gè)卷組VG總大小6.7G,剩余的空間為6.21G
命令:vgs

格式化LV
命令:mkfs.ext3 /dev/vg0/lv0

查看一個(gè)lv0塊設(shè)備

刪除LV
為刪除一個(gè)邏輯卷,必須首先從系統(tǒng)卸載其上的文件系統(tǒng),然后可用lvremove刪除,如:
- umount /lv1 先卸載LV文件系統(tǒng)
- lvremove /dev/vg0/lv1 移除lv1邏輯卷

掛載lv0并創(chuàng)建文件

下面最關(guān)鍵的來了
擴(kuò)大LV

步驟如下:
首先增加邏輯卷容量(lvextend)
在線(脫機(jī))增加ext3文件系統(tǒng)(resize2fs)
查看man幫助

查看lv擴(kuò)展后的VG卷組剩余空間

首先增加邏輯卷容量(lvextend)
指定擴(kuò)容后的尺寸: lvextend -L 2G /dev/vg0/lv0
將擴(kuò)大邏輯卷lv0的容量為2GB。

指定要增加的尺寸: lvextend -L +512M /dev/vg0/lv0
將為LV v0再增大容量1GB至1.5GB。

注釋:為LV擴(kuò)容的一個(gè)前提是,LV所在的VG有足夠的空閑存儲(chǔ)空間可用。
在為LV擴(kuò)容之后,應(yīng)同時(shí)為LV之上的文件系統(tǒng)擴(kuò)容,使二者相匹配。對(duì)不同的文件系統(tǒng)有相對(duì)應(yīng)的擴(kuò)容方法。
擴(kuò)充了LV后,重新掛載,查看大小,看到當(dāng)前的LV大小并沒有增大,那又該怎么辦呢?

注釋:ext2/ext3除非內(nèi)核已有ext2online 補(bǔ)丁,否則在改變ext2/ext3文件系統(tǒng)的大小時(shí)應(yīng)卸載它
在線(脫機(jī))增加ext3文件系統(tǒng)(resize2fs)
再次查看的時(shí)候我們可以看到容量大小已經(jīng)是擴(kuò)展后的大小了

縮小LV(這個(gè)比較麻煩)

步驟如下:
- 卸載文件系統(tǒng),使其脫機(jī)進(jìn)行操作(umount)
- 檢查文件系統(tǒng)(e2fsck)
- 縮小文件系統(tǒng)(resize2fs),指定縮小后的容量
- 縮小LV,減少卷容量(lvreduce),指定縮小后的容量
- 使用man 幫助看一看lvreduce的用法

注釋:邏輯卷可擴(kuò)展同樣也可縮小,但應(yīng)在縮小LV之前首先減小文件系統(tǒng),否則將可能導(dǎo)致數(shù)據(jù)丟失。
下面來縮小lv0的容量,現(xiàn)容量為800M容量,我要縮小到500M

卸載文件系統(tǒng),使其脫機(jī)進(jìn)行操作(umount)
命令:umount /lv0

檢查文件系統(tǒng)(e2fsck)
命令:e2fsck -f /dev/vg0/lv0

縮小文件系統(tǒng)(resize2fs)
命令:resize2fs /dev/vg0/lv0 500M

縮小LV,減少卷容量(lvreduce)
命令:lvreduce -L 500M /dev/vg0/lv0

掛載lv0文件系統(tǒng)并查看其大小

系統(tǒng)啟動(dòng)激活
在RHEL 5以后都會(huì)自動(dòng)激活LVM,如下,在系統(tǒng)啟動(dòng)的時(shí)候會(huì)自動(dòng)激活的

如果沒有激活的話請(qǐng)做如下操作:
系統(tǒng)啟動(dòng)/關(guān)閉
"為使系統(tǒng)啟動(dòng)時(shí)可自動(dòng)激活并使用LVM,可將以下幾行添加到啟動(dòng) rc 腳本中:
- /sbin/vgscan
- /sbin/vgchange -a y
這些行將瀏覽所有可用的卷組并激活它們。要注意的是,它們應(yīng)在安裝卷組上的文件系統(tǒng)操作之前被執(zhí)行,否則將無法正常安裝文件系統(tǒng)。
"在系統(tǒng)關(guān)機(jī)時(shí),要關(guān)閉LVM,這可將以下這行添加到關(guān)機(jī) rc 腳本中,并確保它在卸裝了所有文件系統(tǒng)后執(zhí)行:/sbin/vgchange -a n
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何測(cè)試Linux下tcp最大連接數(shù)限制詳解
這篇文章主要給大家介紹了關(guān)于如何測(cè)試Linux下tcp最大連接數(shù)限制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
使用 Linux seq 命令生成數(shù)字序列(推薦)
seq命令用于以指定增量從首數(shù)開始打印數(shù)字到尾數(shù),即產(chǎn)生從某個(gè)數(shù)到另外一個(gè)數(shù)之間的所有整數(shù),并且可以對(duì)整數(shù)的格式、寬度、分割符號(hào)進(jìn)行控制。這篇文章主要介紹了使用 Linux seq 命令生成數(shù)字序列,需要的朋友可以參考下2020-01-01
在Linux系統(tǒng)上創(chuàng)建軟連接和硬連接的方法
這篇文章主要介紹了在Linux系統(tǒng)上創(chuàng)建軟連接和硬連接的方法,通過執(zhí)行 man ln 命令,可以看到這是在文件之間建立鏈接,而沒有提及是軟鏈接或硬鏈接,文中通過代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Linux系統(tǒng)下的重啟,關(guān)機(jī)命令以及reboot掛死問題解決方案
本文介紹了Linux系統(tǒng)中關(guān)機(jī)和重啟的命令及其作用,以及系統(tǒng)運(yùn)行等級(jí)的差別,此外,還分享了一個(gè)解決reboot關(guān)機(jī)卡死問題的方法2024-11-11
Linux 6 下編譯安裝 PHP 5.6實(shí)例詳解
這篇文章主要介紹了Linux 6 下編譯安裝 PHP 5.6實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04

