對于一塊硬碟有三個分區100M,100M,200M,如果有一天100M裝不下了怎麼辦?能不能把新添加硬碟的一些空間劃分到這100M的空間裡呢?
邏輯卷就可以實作,這樣就表示我們可以動态的增大或減少卷(分區)的大小了。
LVM(logical volume manager),是建立在硬碟和分區之上的一個邏輯層,來提高磁盤分區的靈活性。lvm是在磁盤分區和檔案系統之間添加的一個邏輯層,他提供了一個抽象的盤卷,之後在這個盤卷上建立檔案系統。
相關知識:
1、實體存儲媒體:指硬碟(/dev/sda1, /dev/sdb ...)
2、實體卷(physical volume):指硬碟分區,是LVM的基本存儲邏輯塊,包含相與LVM相關的參數。
3、卷組(volume group):類似于非LVM系統中的實體硬碟,由實體卷組成。可以在卷組上建立一個或多個LVM分區(邏輯卷),LVM卷組由一個或多個實體卷組成。
4、邏輯卷(logical volume):類似于非LVM系統中的硬碟分區,在邏輯卷上可以建立檔案系統。
5、PE:實體區域塊,是實體卷中最小的可配置設定的存儲單元。
6、LE:邏輯區域塊,是邏輯卷中可用于配置設定的最小儲存單元。
建立邏輯卷的過程:實體卷-->卷組-->邏輯卷
1、建立LVM分區,可以用系統帶的fdisk來建立,建立方法與正常分區一樣,差別就是把分區類型改成LINUX LVM,即:8E
2、建立實體卷
用pvcreate來建立,把希望添加到卷組的分區或磁盤建立成實體卷,供LVM管理。
如:pvcreate /dev/sdb1 #把這個分區建立成實體卷
3、建立卷組
用vgcreate來建立,vgcreate 卷組名 實體卷 ...
如:vgcreate vg0 /dev/sdb1
在建立卷組時,系統會使用大小為4MB的塊作為PE的大小。塊的大小決定了單個邏輯卷最大容量,PE的大小範圍是8KB-512MB,并且總是2的倍數。
邏輯卷的大小由PE的大小為機關進行擴充或縮減,如果想使單個邏輯卷擁有更大的空間,則需要手動指定,如:
vgcreate -s 8M vg0 /dev/sdb1
4、激活卷組
vgchange -ay 卷組名
-ay表示active yes,即激活。如果-an則表示關閉激活。
5、建立邏輯卷
lvcreate -L 邏輯卷的大小 -n 邏輯卷的名稱 卷組名
表示在某個卷組裡建立一個邏輯卷,大小由-L指定,注意大小應該是PE的倍數,也可以用-l 塊的個數來表示大小。
如:lvcreate -n boot -L 256M
建立完邏輯卷之後,需要格式化才可以使用。mkfs.ext3 /dev/vg0/boot
6、添加新的實體卷到卷組中。
vgextend 卷組名 實體卷
如:vgextend vg0 /dev/sdb2
7、擴充邏輯卷的容量
lvextend -l +PE塊的個數 邏輯卷名。
-l 後面跟上塊數,可以用vgdisplay檢視卷組還有多少塊空間,之後配置設定到指定的邏輯卷中.當然也可以指定-L +容量大小的方式添加空間。
如:lvextend -l +5 /dev/vg0/boot #由于PE大小為8M,是以添加了40M的空間
8、減少邏輯卷的容量
lvreduce -L -容量 邏輯卷名
-容量表示從目前邏輯卷中減少的容量。
如:
lvreduce -L -10G /dev/vg0/boot #給boot分區減少10G空間.
如果不指定減号,就變成10G大小了,而不是減少10G
9、删除邏輯卷
lvremove 邏輯卷名
如:lvremove /dev/vg0/boot
10、删除卷組
vgremove 卷組名
如:vgremove /dev/vg0/boot
11、删除實體卷
pvremove 實體卷名
如:pvremove /dev/sda1
删除的時候,要從邏輯卷->卷組->實體卷的順序進行,而添加時正好相反。
虛拟機中測試:
有兩塊硬碟都是500G, /dev/sda, /dev/sdb
一、建立/dev/sda分區(用fdisk完成)
Device Boot Start End Blocks Id System
/dev/sda1 2048 419432447 209715200 8e Linux LVM
/dev/sda2 419432448 838862847 209715200 8e Linux LVM
/dev/sda3 838862848 1048575999 104856576 8e Linux LVM
注意 :id是8e,其它的無所謂了。
二、建立PV實體卷
root@ubuntu:/dev# pvcreate /dev/sda1 /dev/sda2 /dev/sda3
Physical volume "/dev/sda1" successfully created
Physical volume "/dev/sda2" successfully created
Physical volume "/dev/sda3" successfully created
三、建立卷組
root@ubuntu:/dev# vgcreate -s 8M vg0 /dev/sda1 /dev/sda2
Volume group "vg0" successfully created
這裡面建立的卷組PE塊大小為8M,卷組的名稱為vg0,把實體卷sdad1,sda2放到卷組裡,sda3并沒有放入。
四、建立邏輯卷
root@ubuntu:~# lvcreate -n boot -L 256M vg0
The link /dev/vg0/boot should had been created by udev but it was not found. Falling back to direct link creation.
Logical volume "boot" created
root@ubuntu:~# mkfs.ext4 /dev/vg #格式化邏輯卷(分區)
按照這種方法,建立其它邏輯卷
lvcreate -n root -L 100G vg0
lvcreate -n home -L 299G vg0
關于卷組還有多少空間可以用vgdisplay進行檢視。
root@ubuntu:~# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 399.98 GiB #可用的VG總大小。
PE Size 8.00 MiB #塊大小為8M
Total PE 51198 #PE總塊數
Alloc PE / Size 51198 / 399.98 GiB #51198表示配置設定的塊
Free PE / Size 0 / 0 #自由空間剩于0塊,表示已經全分完了
VG UUID jnxPsp-74TB-u7Wu-XRLA-1xD4-iuf4-mJrp2l
五、添加/dev/sda3到卷組vg0中
root@ubuntu:~# vgextend vg0 /dev/sda3
Volume group "vg0" successfully extended
再次顯示卷組資訊,發現free空間有了99G,這表示可以随時添加進來的。
六、擴充邏輯卷大小
root@ubuntu:~# lvextend -l +12799 /dev/vg0/boot
Extending logical volume boot to 99.99 GiB
Logical volume boot successfully resized