找網(wǎng)站建設(shè)公司百度seo插件
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,是Linux環(huán)境下對磁盤分區(qū)進行管理的一種機制,由Heinz Mauelshagen在Linux 2.4內(nèi)核上實現(xiàn)。LVM可以實現(xiàn)用戶在無需停機的情況下動態(tài)調(diào)整各個分區(qū)大小。
1.簡介
? LVM本質(zhì)上是一個虛擬設(shè)備驅(qū)動,是在內(nèi)核中塊設(shè)備和物理設(shè)備之間添加的一個新的抽象層次。它將幾塊磁盤(物理卷,PhysicalVolume)組合起來形成一個卷組(VolumeGroup)。LVM可以每次從卷組中劃分出不同大小的邏輯卷(LogicalVolume)創(chuàng)建新的邏輯設(shè)備。底層的原始的磁盤不再由內(nèi)核直接控制,而由LVM層來控制。對于上層應(yīng)用來說卷組替代了磁盤塊成為數(shù)據(jù)存儲的基本單元。LVM管理著所有物理卷的物理盤區(qū),維持著邏輯盤區(qū)和物理盤區(qū)之間的映射。LVM邏輯設(shè)備向上層應(yīng)用提供了和物理磁盤相同的功能,如文件系統(tǒng)的創(chuàng)建和數(shù)據(jù)的訪問等。但LVM邏輯設(shè)備不受物理約束的限制,邏輯卷不必是連續(xù)的空間,它可以跨越許多物理卷,并且可以在任何時候任意的調(diào)整大小。相比物理磁盤來說,更易于磁盤空間的管理。
? 從用戶態(tài)應(yīng)用來看,LVM邏輯卷相當于一個普通的塊設(shè)備,對其的讀寫操作和普通的塊設(shè)備完全相同。而從物理設(shè)備層來看,LVM相對獨立于底層的物理設(shè)備,并且屏蔽了不同物理設(shè)備之間的差異。因而在LVM層上實現(xiàn)數(shù)據(jù)的連續(xù)保護問題,可以不需要單獨考慮每一種具體的物理設(shè)備,避免了在數(shù)據(jù)復(fù)制過程中因物理設(shè)備之間的差異而產(chǎn)生的問題。從LVM的內(nèi)核實現(xiàn)原理上看,LVM是在內(nèi)核通用塊設(shè)備層到磁盤設(shè)備驅(qū)動層的請求提交流之間開辟的另外一條路徑,即在通用塊設(shè)備層到磁盤設(shè)備驅(qū)動層之間插入了LVM管理映射層用于截獲一定的請求進行處理。
? 用戶通過lvm提供接口,依靠內(nèi)核創(chuàng)建一系列LVM邏輯卷,所有對lvm邏輯卷的讀寫操作最終都會由LVM在通用塊設(shè)備層下方截獲下來,進行更進一步的處理。這里的進一步處理主要指的是完成寫請求的映射,是將請求的數(shù)據(jù)根據(jù)實際情況進行一些拆分和重定位操作,從而可以將請求和數(shù)據(jù)分發(fā)到實際的物理設(shè)備中去。
1.1.基本術(shù)語
? LVM是在磁盤分區(qū)和文件系統(tǒng)之間添加的一個邏輯層,來為文件系統(tǒng)屏蔽下層磁盤分區(qū)布局,提供一個抽象的存儲卷,在存儲卷上建立文件系統(tǒng)。首先我們討論以下幾個LVM術(shù)語:
物理存儲介質(zhì)(PhysicalStorageMedia)
? 物理存儲設(shè)備,如:/dev/hda、/dev/sda等,是存儲系統(tǒng)最底層的存儲單元。
物理卷(Physical Volume,PV)
? 磁盤分區(qū)或從邏輯上與磁盤分區(qū)具有同樣功能的設(shè)備(如RAID),是LVM的基本存儲邏輯塊。但和基本的物理存儲介質(zhì)(如分區(qū)、磁盤等)比較,卻包含有與LVM相關(guān)的管理參數(shù)。
卷組(Volume Group,VG)
? 類似于非LVM系統(tǒng)中的物理磁盤,其由一個或多個物理卷組成。可以在卷組上創(chuàng)建一個或多個邏輯卷。
邏輯卷(Logical Volume,LV)
? 類似于非LVM系統(tǒng)中的磁盤分區(qū),邏輯卷建立在卷組之上。在邏輯卷之上可以建立文件系統(tǒng)(比如/home或者/usr等)。
物理塊(Physical Extent,PE)
? PE是物理卷的基本劃分單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。所以物理卷(PV)由大小等同的基本單元PE組成。
邏輯塊(Logical Extent,LE)
? 邏輯卷也被劃分為可被尋址的基本單位,稱為LE。在同一個卷組中,LE的大小和PE是相同的,并且一一對應(yīng)。
? 和非LVM系統(tǒng)將包含分區(qū)信息的元數(shù)據(jù)保存在位于分區(qū)的起始位置的分區(qū)表中一樣,邏輯卷及卷組相關(guān)的元數(shù)據(jù)也是保存在位于物理卷起始處的VGDA(卷組描述符區(qū)域)中。VGDA包括:PV描述符、VG描述符、LV描述符、和一些PE描述符。
? 系統(tǒng)啟動LVM時激活VG,并將VGDA加載至內(nèi)存,來識別LV的實際物理存儲位置。當系統(tǒng)進行I/O操作時,就會根據(jù)VGDA建立的映射機制來訪問實際的物理位置。
1.2.優(yōu)點
? LVM通常用于裝備大量磁盤的系統(tǒng),但它同樣適于僅有一、兩塊硬盤的小系統(tǒng)。
- 小系統(tǒng)使用LVM的益處
? 傳統(tǒng)的文件系統(tǒng)是基于分區(qū)的,一個文件系統(tǒng)對應(yīng)一個分區(qū)。這種方式比較直觀,但不易改變:
- 不同的分區(qū)相對獨立,無相互聯(lián)系,各分區(qū)空間很易利用不平衡,空間不能充分利用;
- 當一個文件系統(tǒng)/分區(qū)已滿時,無法對其擴充,只能采用重新分區(qū)/建立文件系統(tǒng),非常麻煩;或把分區(qū)中的數(shù)據(jù)移到另一個更大的分區(qū)中;或采用符號連接的方式使用其它分區(qū)的空間。
- 如果要把硬盤上的多個分區(qū)合并在一起使用,只能采用再分區(qū)的方式,這個過程需要數(shù)據(jù)的備份與恢復(fù)。
? 當采用LVM時:
- 硬盤的多個分區(qū)由LVM統(tǒng)一為卷組管理,可以方便的加入或移走分區(qū)以擴大或減小卷組的可用容量,充分利用硬盤空間;
- 文件系統(tǒng)建立在邏輯卷上,而邏輯卷可根據(jù)需要改變大小(在卷組容量范圍內(nèi))以滿足要求;
- 文件系統(tǒng)建立在LVM上,可以跨分區(qū),方便使用;
- 大系統(tǒng)使用LVM的益處
? 在使用很多硬盤的大系統(tǒng)中,使用LVM主要是方便管理、增加了系統(tǒng)的擴展性。
? 在一個有很多不同容量硬盤的大型系統(tǒng)中,對不同的用戶的空間分配是一個技巧性的工作,要在用戶需求與實際可用空間中尋求平衡。
? 用戶/用戶組的空間建立在LVM上,可以隨時按要求增大,或根據(jù)使用情況對各邏輯卷進行調(diào)整。當系統(tǒng)空間不足而加入新的硬盤時,不必把用戶的數(shù)據(jù)從原硬盤遷移到新硬盤,而只須把新的分區(qū)加入卷組并擴充邏輯卷即可。同樣,使用LVM可以在不停服務(wù)的情況下。把用戶數(shù)據(jù)從舊硬盤轉(zhuǎn)移到新硬盤空間中去。
2.指令操作
2.1.創(chuàng)建新的LVM
? (1) 對磁盤分區(qū)和格式化
? (2) 創(chuàng)建PV
? pvcreate 分區(qū)名
?
? (3) 創(chuàng)建VG 組
? vgcreate 卷組名 關(guān)聯(lián)的分區(qū)
? (4) 創(chuàng)建和格式化LV邏輯卷
? lvcreate -L 大小 -n 邏輯卷名
? (5) mount到需要的掛載點
?
示例
(1) 對磁盤分區(qū)和格式化
root@pc2:~# fdisk /dev/sdb
Command (m for help): n [新建分區(qū)]
Partition number (1-4, default 2): [默認]
First sector (10487808-41943039, default 10487808): [默認 (起始扇區(qū))]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039): [+5G/默認/或根據(jù)大小 (結(jié)束扇區(qū))]
Command (m for help): t [ 轉(zhuǎn)換分區(qū)格式 ]
Partition number (1,2, default 2): 2 [選擇要轉(zhuǎn)換的分區(qū)]
Hex code (type L to list all codes): 8e [ 8e Linux LVM ]
Command (m for help): w [保存]
root@pc2:~# fdisk -l
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 8e Linux LVM
/dev/sdb2 10487808 41943039 31455232 15G 8e Linux LVM
mkfs.ext4 /dev/sdb1 [格式化]
mkfs.ext4 /dev/sdb2 [格式化](2) 創(chuàng)建PV
root@pc2:pvcreate /dev/sdb1
root@pc2:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5.00g 5.00g(3) 創(chuàng)建VG 組
root@pc2:~# vgcreate vg_0 /dev/sdb1
root@pc2:~# vgs
VG #PV #LV #SN Attr VSize VFree
vg_0 1 0 0 wz--n- <5.00g <5.00g(4) 創(chuàng)建和格式化LV邏輯卷
root@pc2:lvcreate -L 2G -n lv_0
root@pc2:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_0 vg_0 -wi-a----- 2.00g
root@pc2:~# mkfs.ext4 /dev/vg_0/lv_0(5) mount到需要的掛載點
root@pc2:~# mount /dev/vg_0/lv_0 /usr/lvm_tt/
2.2.擴展現(xiàn)有LVM
? (1) 對磁盤分區(qū)和格式化
? (2) 創(chuàng)建PV
? pvcreate 分區(qū)名
? (3) 擴展PV
? vgextend 卷組名 新增PV
? (4) 擴展邏輯卷
? 方法1:lvextend -L 擴展容量 lv設(shè)備路徑
? 方法2:lvextend -l +百分比FREE lv設(shè)備路徑 0
? (5) 刷新文件系統(tǒng)
? resize2fs lv完整路徑 (或者上一步,加上選項[ -r ])
示例
fdisk -l 或 lvs 查看lv大小變化
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
df -h 查看擴展后大小 (1)擴展PV
root@pc2:vgextend vg_0 /dev/sdb2(2)擴展邏輯卷并刷新文件系統(tǒng)
方法1:lvextend -L +10G /dev/vg_0/lv_0 /dev/sdb2
方法2:lvextend -l +100%FREE /dev/vg_0/lv_0 -r (3)查看擴展后大小
root@pc2:~# vgs
VG #PV #LV #SN Attr VSize VFree
vg_0 2 1 0 wz--n- 19.99g 0
3.指令說明
3.1.查看
查看PE pes、pedisplay
查看PV pvs、pvdisplay
查看VG vgs、vgdisplay
查看LV lvs、lvdisplay
查看分區(qū) fdisk -L
3.2.創(chuàng)建
創(chuàng)建PV pvcreate 設(shè)備路徑
創(chuàng)建VG vgcreate VG名 pv
創(chuàng)建LV lvcreate -n 名字 -L 大小 vg名
格式化LV mkfs.ext4 lv完整路徑 (mkfs.文件系統(tǒng)格式或-t 文件系統(tǒng)格式)
掛載 mount lv完整路徑 掛載點 (也可以使用/etc/fstab或autofs)
3.3.刪除邏輯卷
卸載 umount
刪lv lvremove lv完整路徑
刪vg vgremove vg名
刪PV pvremove 設(shè)備完整路徑 去硬盤
3.4.邏輯卷擴展
lvextend
3.5.邏輯卷的縮小
-
首先進行卸載 umount 檢查文件系統(tǒng):e2fsck -f lv完整路徑
-
減少文件系統(tǒng):resize2fs lv完整路徑 減少到的大小
-
減少lv卷大小:lvreduce -L -減少量的大小 lv的完整路徑
-
掛載使用
**注意:**減小需謹慎,文件系統(tǒng)的減小后大小一定要和lv卷最終大小相等