天天看點

LVM邏輯卷

對于一塊硬碟有三個分區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

繼續閱讀