一、前言:
對Linux運維而言,在安裝系統的時候,遇到的問題之一就是如何分區以及如何給分區劃分合理的空間。如果不慎空間劃分的少了,到時可能就會遇到分區空間不足,需要通過符號鏈接或者調整分區大小的工具來處理,但是這終究不是辦法,不久后,你還會遇到同樣的問題。
而LVM(邏輯卷管理程序)可以很好的幫助我們解決這些問題。
二、LVM簡介:
歡迎LVM隆重登場,LVM是Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,目前穩定版為1.0.5,開發版LVM2,現在使用的基本都是LVM2
三、LVM原理:
LVM是建立在硬盤和分區之上的一個邏輯層,它會為文件系統屏蔽下層磁盤布局,提供一個抽象的盤卷,在該盤卷上建立文件系統。由此,LVM可以將多個物理磁盤組合成一個非常大的抽象的盤卷,然后再該盤卷上建立文件系統,并且當硬盤空間不夠使用的時候,可以繼續將其他的硬盤的分區加入其中,這樣就可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。當然,它的好處不止如此!
四、LVM相關術語:
物理存儲介質(Physical Media):系統的存儲設備;比如:硬盤。是存儲系統最底層的存儲單元
物理卷(Physical Volume):硬盤分區或者從邏輯上與磁盤分區具有相同功能的設備;比如:RAID,是LVM的基本存儲邏輯塊。
卷組(Volume Group):一個或者多個物理卷組成一個卷組,對LVM而言,卷組類似于非LVM系統中的物理硬盤。可以在卷組上創建一個或多個邏輯卷
邏輯卷(Logical Volume):LVM的邏輯卷相當于非LVM系統中的分區,可以在LVM的邏輯卷上創建文件系統
PE (Physical Extent):每一個物理卷被劃分為稱為PE(physical extent)的基本單位,具有唯一編號的PE是可以被LVM尋址的最小單位。PE的大小是可以設置的,默認為4MB
LE(Logical Extent):邏輯卷也被劃分為被稱為LE(Logical Extent)的可被尋址的基本單位。在同一個卷組中,LE和PE的大小是相同的,并且一一對應。
五、LVM模型:
六、前期準備工作
1、系統環境:
宿主主機:Windows 7 X64 8G內存
虛擬機:Vmware 10
Linux系統:Centos 6.4 X86_64 2G內存 雙核CPU
SSh工具:xshell
2、添加硬盤
我是在虛擬機上操作的,所有首先添加3塊硬盤到我的虛擬機中。
3、查看添加的硬盤信息
fdisk –l,硬盤添加成功
4、有了硬盤,那就需要規劃LVM了,可以將三個硬盤全部做成LVM,也可以將三個硬盤中的某些空間做成LVM,這里,我使用每個硬盤的某些空間做成LVM,以便后邊的實驗能順利進行。
規劃:sdb1 5G sdc1 5G sdd1 5G
使用fdisk /dev/sdb 、fdisk /dev/sdc 、fdisk /dev/sdd來進行硬盤分區
全部分區完成之后,使用fdisk –l /dev/sd[bcd]查看著三個分區的信息是否正確
查看內核是否已經識別該分區,如果已經識別則無需重啟虛擬機,如果無法識別則要重啟虛擬機
七、創建LVM
1、創建物理卷—>命令pvcreat
使用格式pvcreate DEVICE,將sdb1、sdc1和sdd1都創建為物理卷
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/sdd1
2、使用pvdisplay可以查看我們的物理卷
3、創建卷組(VG)—>命令vgcreate
使用格式 vgcreate 卷組名 DEVICE1 DEVICE2 DEVICE3
vgcreate Datalvm /dev/sdb1 /dev/sdc1 /dev/sdd1
4、使用vgdisplay查看剛才創建的卷組
Note1:
1、當多個物理卷組合成一個卷組后,LVM會在所有的物理卷上做類似格式化的工作,將每個物理卷切成一塊一塊的空間,這一塊一塊的空間就成為PE,默認大小為4M。
2、由于受內核限制,一個邏輯卷最多只能包含65536個PE,所以一個PE的大小就決定了邏輯卷的最大容量。4MB的PE決定了單個邏輯卷最大容量為256G
3、創建邏輯卷時,使用vgcreate – 64MB Datalvm /dev/sdb1 /dev/sdc1 /dev/sdd1來指定PE大小
5、創建邏輯卷LV—>命令lvcreate
使用格式:lvcreate –L SIZE –n LV_NAME VG_NAME ,也可以使用lvcreate –l # 指定PE的個數
lvcreate –L 8G –n Mydata Datalvm
6、使用lvdisplay查看創建的邏輯卷
Note2:
1、這里看到LV_Path的路徑為/dev/Datalvm/Mydata,我們ls -l一下這個設備文件,發現這是一個鏈接文件,其路徑為/dev/dm-2,所以我們通過這兩種方式可以找到這個邏輯卷,其實還有一個路徑可以幫助我們找到這個設備文件,路徑為/dev/mapper/Datalvm-Mydata
7、創建文件系統
在邏輯卷上創建ext4文件系統
1234567891011
[root@myb362 mapper]# mkfs -t ext4 /dev/Datalvm/Mydata
[root@myb362 mapper]# mkdir /data #創建掛載點
[root@myb362 mapper]# mount /dev/mapper/Datalvm-Mydata /data #掛載
[root@myb362 mapper]# ls /data #查看掛載點內容,掛載成功,邏輯卷創建成功
lost+found
[root@myb362 mapper]# touch /data/test #創建一個文件
[root@myb362 mapper]# ls /data #再次查看
lost+found test
[root@myb362 mapper]# umount /dev/dm-2 #卸載邏輯卷
[root@myb362 mapper]# ls /data #再次查看
[root@myb362 mapper]#
上邊我使用了LV的三種設備文件表示方法,希望你沒有搞暈。
八、管理LVM
1、邏輯卷和卷組擴容
前面已經說過,LVM可以實現動態調整分區空間大小,而無需重啟機器,那假如我們剛才創建的邏輯卷/dev/Datalvm/Mydata空間不足,需要增加空間。那我們需要分卷組中有剩余空間和卷組中沒有剩余空間兩種情況來考慮。
①卷組中有剩余空間
使用vgdisplay查看卷組信息
卷組剩余空間7.02GB,剩余PE數量1798個。我們把所有的剩余空間全部增加給邏輯卷/dev/Datalvm/Mydata
再進行這步操作之前,為了完全模擬真實環境,我們最好先將/dev/Datalvm/Mydata掛載到/data目錄下,說明此邏輯卷正在被使用
mount /dev/Datalvm/Mydata /data
接著擴展邏輯卷
lvextend -l +1798 /dev/Datalvm/Mydata
前面說過增加PE的個數可以使用-l,當然也可以使用 –L 7.02G ,你喜歡就好。
好了,擴展完成,讓我們查看一下文件系統的當前狀態
很遺憾,還是8G,沒有擴展成功。這是為什么呢?還少一步,使用resize2fs命令來調整分區的大小
resize2fs /dev/Datalvm/Mydata
再次使用df -h查看
擴容已經成功。
②卷組中沒有剩余空間
當卷組中沒有剩余空間或者剩余空間不足夠用于擴展邏輯卷的大小時,就需要增加卷組的容量,增加卷組容量的唯一方法當然就是向卷組中添加新的物理卷。
還記得剛才我們并沒有劃分完的硬盤嗎?是時候讓他們上場了。
首先創建一個分區/dev/sdb2,大小為10G,然后創建成物理卷。接下來就要把這個物理卷加入到我們那的卷組了。
在創建/dev/sdb2分區的時候,我的系統內核無論如何都無法識別他,只有重啟系統才解決問題。不知道你是否也遇到這個問題了,如果遇到了,那就重啟系統吧
擴展卷組—>命令vgextend
使用格式:vgextend VG_NAME DEVICE
完成卷組的擴容之后,那么擴展邏輯卷的操作就和第一種情況是一樣一樣的了。
總結:LVM是linux系統中非常好用的磁盤分區管理機制,配合RAID能讓我們的系統更加的安全和穩定,并且有很強的擴展性。接下來會就LVM的卷組、邏輯卷縮減以及如何制作快照卷寫一篇博文,歡迎各位關注,如博客中有錯誤之處,還望大家指出。
下一篇:sort命令詳解