LVM邏輯盤卷管理
LVM是邏輯盤卷管理的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。它的機制就是將多個塊設備連接爲一個整塊的卷組(volumegroup),形成一個存儲池。然後,在這個卷組上創建邏輯卷(logicalvolumes),並進一步在邏輯捲上創建文件系統。
當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性。
物理卷(physicalvolume):指磁盤分區或與磁盤分區有同樣功能的設備(如RAID)。創建物理卷時磁盤類型需要是8e。如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。創建物理卷的時候不可以直接格式化!
卷組(volumegroup):就是將多個物理卷組合起來,邏輯上成爲一塊硬盤。它的大小有物理卷大小和多少決定,且至少要有一個物理卷。
邏輯卷(logicalvolume):在卷組上創建,可以在創建的邏輯捲上建立文件系統。類似與磁盤分區。不同的是邏輯卷的邊界可以隨意擴展或縮小。
PE(PhysicalExtents):在創建卷組時底層指定的一個存儲單位,借鑑Oracle的表述方式就叫做物理盤區(物理擴展),所以我們在劃分一個邏輯卷時就是分配多少個PE來決定的,PE的大小是由卷組決定的,PE的大小也是可配置的(下面會闡述),默認爲4MB。
LE(LogicalExtents):當PE被分配到一個邏輯卷之後就被稱作是LE,也就是說,把邏輯卷劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
快照(Snapshot):邏輯卷也支持快照,LVM快照通過把文件系統的改變記錄到一個快照分區,而不是對這個分區做鏡像(也就是保留過去某一刻的狀態)。因此當你創建一個快照分區時,你不需要使用和你正創建快照的分區一樣大小的分區,而是在做快照過程中需要改變的大小。這取決於有多少數據正在寫入分區和你希望保留LVM快照多長時間。你保留的時間越長,在文件系統的的改變越多,更多的快照分區就會被填充改變的信息。在分區上的改變率越高,快照的平均生命期越短。如果一個LVM分區的改變量超過了快照的大小,那麼快照就會被釋放。簡單說就是:快照中什麼都沒有它只是一個訪問原文件的通路。(如圖所示)有了快照之後我們對數據的備份就會非常的簡單方便。
其創建過程是:先將物理設備做成物理卷,然後將物理卷組合起來形成卷組,最後在卷組上創建邏輯卷。而我們使用的就是邏輯卷。
硬盤分區類型
硬盤有4種分區形式,分別是主分區、擴展分區、邏輯分區和活動分區。下面分別對它們進行介紹。
主分區
主分區是用於安裝操作系統的分區,其中包含操作系統啓動時所必需的文件和數據,系統啓動
時必須通過它才能啓動。要在硬盤上安裝操作系統,該硬盤上至少要有一個主分區,並且設爲
活動分區來引導啓動系統。一個硬盤最多隻能劃分4個主分區。
擴展分區
擴展分區是用戶在創建4個以上的分區時使用的分區類型,擴展分區是不能直接用來存儲數據
的,而只是用於劃分邏輯分區。擴展分區下可以包含多個邏輯分區,可以爲其邏輯分區進行高
級格式化,併爲其分配驅動器號。例如,當用戶想爲硬盤創建5個分區時,如果都將其創建爲主
分區,系統只能認出4個,這不能滿足我們的需求。此時,就可以創建3個主分區,再創建一個
擴展分區,然後在擴展分區下創建2個邏輯分區。
邏輯分區
邏輯分區是從擴展分區劃分出來的,主要用於存儲數據。在擴展分區中最多可以創建23個邏輯
分區,各邏輯分區可以獲得唯一的由D到Z的盤符。
活動分區
活動分區是用於加載系統啓動信息的分區。主分區需要激活爲活動分區後,才能正常地啓動操
作系統。如果硬盤中沒有一個主分區被設置爲活動分區,則該硬盤將無法正常啓動。
硬盤分區格式
硬盤分區格式也就是文件系統格式。文件系統格式是操作系統用於明確磁盤或分區上文件
的方法和數據結構,不同的分區格式採用不同的文件管理機制來存儲和讀取文件數據,而
不同的操作系統則需要不同的文件系統格式的支持。
目前常用的分區格式主要有3種,即FAT16格式、FAT32格式和NTFS格式,下面分別對
它們進行介紹。
FAT16格式
FAT16格式是MS-DOS和早期的Windows 95操作系統中使用的磁盤分區格式,它採用16位的文件分
配表,也稱爲FAT格式。FAT16對現在的操作系統已經不再適用。
FAT32格式
FAT32格式採用32位的文件分配表,對磁盤的管理能力較強,支持Windows XP和其之前的部分
Windows 操作系統。
NTFS格式
NTFS是一種特別爲磁盤配額、文件加密和網絡應用等管理安全特性而設計的硬盤分區格式。其
優點是安全性和穩定性方面非常好,在使用過程中不易產生文件碎片,並能對用戶的操作進行
記錄,通過對用戶權限進行非常嚴格的限制,使每個用戶只能按照系統賦予的權限進行操作,
充分保護了系統和數據的安全,如果要安裝Windows 7或Windows 8必須採用NTFS格式。
簡單的實現一個LVM邏輯卷實現過程:
1、創建分區
首先創建磁盤分區,這裏使用SCSI硬盤,並且系統已經有了三個主分區,那麼我們只能創建擴展分區,並在擴展分區上創建邏輯分區了。我使用fdisk工具進行分區。
#fdisk /dev/sda
注意的是分區類型必須是8e,否則無法支持LVM邏輯卷的使用。分區完最好輸入p查看下創建好的分區以及類型,最後保存退出。這裏我創建了/dev/sda5和/dev/sda6兩個邏輯分區,大小分別是7G和3G。
2、創建物理卷
命令是pvcreate,我們可以將上面所創建的兩個分區創建爲物理卷,也可以先只將一個分區創建爲物理卷。
#pvcreate /dev/sda5 /dev/sda6
3、創建卷組
命令是vgcreate,將上面創建的兩個物理卷創建爲一個卷組
#vgcreate myvg /dev/sda5 /dev/sda6
注意:
myvg是指定創建的卷組的邏輯名,可以隨意的設定。後面就是將創建的物理卷添加到卷組中,這裏我們也可以只將一個物理卷添加到卷組中,等想再添加另一個物理卷的時候再添加。需要注意PE(默認是4M)這個概念,它表示卷組上創建的所有邏輯卷都以4MB爲增量單位來進行擴充或縮減。PE大小決定了邏輯卷的最大大小,4MB的PE決定了單個邏輯卷最大容量爲256GB,若希望使用大於256G的邏輯卷則創建卷組時指定更大的PE。PE大小範圍爲8KB到512MB,並且必須總是2的倍數。如果想指定PE大小只需要添加-s選項,指定PE大小就行了,列:
#vgcreate -s 16M myvg /dev/sda5 /dev/sda6。這裏指定PE大小爲16M。
4、激活卷組
爲了立即使用卷組而不用重啓系統,可以使用vgchange命令來激活卷組
#vgchage -ay myvg
5、創建邏輯卷
創建邏輯卷的命令是lvcreate,我們在myvg卷組上創建一個6G大小的邏輯卷,
-L來指定邏輯卷的大小;-n指定邏輯卷的名稱
#lvcreate -L 6G -n mylv myvg
6、格式化邏輯卷分區
這裏我使用的是ext3格式的文件系統
#mke2fs -j /dev/myvg/mylv
創建掛載點來掛在創建好的邏輯卷分區
#mkdir /mylv
#mount /dev/myvg/mylv /mylv
擴展一下內容
1、爲卷組添加新的物理卷
當我們又創建了新的物理卷的時候,想要添加到myvg卷組中時,需要使用vgextend這個命令了。
#vgextend -t myvg /dev/sda7 #先測試是否可以添加物理卷
#vgextend myvg /dev/sda7
這裏/dev/sda7表示我們創建的新的物理卷
2、從卷組中刪除物理卷
要從一個卷組中刪除一個物理卷,首先要確認要刪除的物理卷沒有被任何邏輯卷使用,這時我們就要使用pvdisplay命令察看一個物理卷信息:
如果某個物理卷正在被邏輯卷所使用,就需要將該物理卷的數據備份到其他地方,然後再刪除。刪除物理卷的命令爲vgreduce:
#vgreduce myvg /dev/sda7 這裏爲了簡單說明,就將新添加的/dev/sda7從卷組中刪除
附註:
如果我們創建的卷組包含兩個物理卷,一個7G(/dev/sda5),一個3G(/dev/sda6),而我們LV上面已經有6G的數據了,這樣我們就不能將/dev/sda5給移除了,因爲移除/dev/sda5必然會損壞數據。而且我們不能確定數據是不是都在/dev/sda5上面,也不能貿然移除/dev/sda6。如果需要移除/dev/sda6的話,應該先將/dev/sda6上面的數據移到同卷組的其他物理捲上,然後再移除/dev/sda6。這就需要使用pvmove這個命令了,步驟如下
#pvmove /dev/sda6 #不需要指定將數據移動到那兒個磁盤上,它會自動將數據移動到同組的物理捲上
#vgreduce myvg /dev/sda6 將物理卷6刪除
3、刪除邏輯卷
刪除邏輯卷時,要先將其卸載,然後才能刪除,這裏我們爲了簡單說明就將上面新建的邏輯卷作爲例子
#umount /dev/myvg/mylv
#lvremove /dev/myvg/mylv
Do you really want to remove active logical volume mydata? [y/n]:y
4、擴展邏輯卷大小
擴展邏輯卷大小的命令是lvextend,上面我們創建邏輯卷的時候還剩4G容量,那麼我們就爲其再添加2G容量的步驟如下
#lvextend –L 8G /dev/myvg/mylv
或者這樣增加這1G容量
#lvextend –L +2G /dev/myvg/mylv
增加邏輯卷的容量以後,我們的物理邊界擴展了,此時查看邏輯卷的大小並沒有改變,因爲邏輯邊界沒有擴展。所以我們就需要擴展邏輯卷的邏輯邊界了,命令如下
#resize2fs /dev/myvg/mylv #這裏不用跟調整的大小,會自動擴展到擴展的物理邊界
5、減小邏輯卷的大小
需要先將文件系統卸載了。需要注意的是,在縮減的時候我們的數據文件可能會受到影響,所以一般不建議縮減邏輯卷大小。這裏我們使用的大小是添加過1G後的邏輯卷的大小,我們將其縮減爲5G的大小。步驟如下
#umount /dev/myvg/mylv
#e2fsck –f /dev/myvg/mylv #強行檢測邏輯卷
#resize2fs /dev/myvg/mylv 5G #調整邏輯卷的大小
#lvreduce –L 5G /dev/myvg/mylv #縮減邏輯卷的大小
或者
(#lvreduce –L -2G /dev/myvg/mylv)
#mount /dev/myvg/mylv /mylv
#df –lh #查看各個磁盤的大小
說明:在我們縮減的時候需要先用e2fsck命令強行檢測下邏輯卷,然後用resize2fs命令調整邏輯卷的大小,最後用lvreduce來減小邏輯卷大小。
常用命令的簡單介紹:
1、物理卷相關命令
pvcreate #創建物理卷
pvremove #移除物理卷
pvmove #移動物理卷的數據
pvscan #掃描物理卷
pvdisplay #查看物理卷的信息
例如:
#pvdisply #查看所有的物理卷信息
#pvdisply /dev/sda5 #只查看特定的物理卷的信息
pvs #簡單查看物理卷的信息
2、卷組相關命令
vgcreate #創建卷組
-s :指定PE大小,默認PE大小是4M
vgdisplay #查看卷組的信息
vgextend #擴展卷組大小
-t :檢測制定物理卷是否可以添加進來
vgreduce #縮減卷組大小
-t :檢測指定物理卷是否可以移除出去
vgscan #掃描卷組
vgs #查看卷組的簡單信息
3、邏輯卷相關命令
lvcreate #創建邏輯卷
-L :指定創建邏輯卷的大小
-n :指定邏輯卷的名稱
lvdisplay #查看邏輯卷的信息
lvremove #移除邏輯卷
lvreduce #縮減邏輯卷大小
lvextend #擴展邏輯卷大小
lvs #簡單查看邏輯卷的信息
二、創建學習篇
首先創建PV,然後將PV組合成VG,最後將VG劃分爲LV。
1、創建分區
使用分區工具(如:fdisk等)創建LVM分區,注意LVM的分區類型爲8e。
使用fdisk創建分區,根據設備文件的絕對路徑(/dev/sda)進入分區管理
注:一定要指定分區的格式爲8e,這是LVM的分區格式
2、創建物理卷(PV)
格式:pvcreate 設備名稱
查看結果:
格式:pvdisplay 設備名稱
格式:pvs
3、創建卷組(VG)
格式:vgcreate VGNAME PV名稱 …
vgcreate –s PE 可以指定PE大小
查看結果:
格式:vgdisplay 設備名稱
格式:vgs
4、創建邏輯卷(LV)
格式:lvcreate –L SIZE –n LV_NAME VG_NAME
(說明:-L指定邏輯卷的大小,-n指定邏輯卷名稱卷組名稱 –l指定PE的個數)
查看結果:
格式:lvdisplay
格式:lvs
5、LV格式化及掛載
下一步需要對LV進行格式化(使用mke2fs進行格式化操作),然後LV才能存儲資料
注:邏輯卷的設備文件路徑:/dev/VG_NAME/LV_NAME
/dev/mapper/VG_NAME-LV_NAME
三、管理學習篇
1、擴展VG
首先準備好一個PV,然後使用vgextend命令即可完成擴展;
命令格式:vgextend VG_NAME /PATH/TO/PV
2、縮減VG
首先確定要移除的PV,然後將此PV上的數據轉移至其他PV,最後從卷組中將此PV移除;
命令格式:
移動數據:pvmore 盤區到盤區
移除VG:vgreduce VG_NAME /PATH/TO/PV
注:在移除物理卷之前一定要把數據轉移到其他盤區上。
3、刪除PV
命令格式:pvremove
4、擴展邏輯卷
首先確定擴展多大?然後確定當前邏輯卷所在的卷組有足夠的空間可用,最後進行擴展:方法:
一:擴展物理邊界:lvextend-L [+]SIZE /path/to/lv
(注:“+”可省的,其中有“+”表示擴展了,無“+”表示擴展了)
二:擴展邏輯邊界:resize2fs/path/to/device
5、縮減邏輯卷
由於邏輯卷的縮減有風險,所以第一步要確定縮減爲多大?也就是說至少能容納原有的數據,第二步進行縮減;縮減需要三步:
a)、卸載並強行檢測文件系統
命令:e2fsck –f
b)、邏輯邊界
命令:resize2fs/path/to/device SIZE
c)、物理邊界
命令:lvextend -L [+/-]SIZE /path/to/lv
d)、查看結果
6、快照卷(只是做原件的通路,不能修改,不能寫入)
lvcreate
-s :指定快照卷;
-p r:限定快照卷爲只讀訪問的;
格式: lvcreate -L SIZE-s -p r -n LV_NAME /path/to/lv
7、利用LV的快照功能還原系統
#lvcreate -L 50M -s -p r -n mylv-snap /dev/myvg/mylv【創建快照mylv-snap】
#mount -o ro /dev/myvg/mylv-snap /media【掛載快照】
#tar -jcv -f /backup/lvm.tar.bz2 /media/* 【備份快照數據】
#umount /media
#lvremove /dev/myvg/mylv-snap
對/dev/myvg/mylv裏面的數據進行隨意修改.......
還原:
#tar -jxv -f /backup/lvm.tar.bz2 -C /mnt【將快照備份的數據還原到lvm當中】
8、移除邏輯卷和快照卷
首先要確定已經卸載過了邏輯卷
格式:lvremove /path/to/lv
9、移除卷組
格式: vgremove/path/to/lv
總結:LVM邏輯卷是Linux裏面一個很棒的空間使用機制,因爲分區在沒有格式化的情況下是沒有辦法加大或者放小的。通過LVM可以將你的磁盤空間做到靈活自如。