LVM邏輯卷管理

LVM

定義

LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,,它是Linux環境下對磁盤分區進行管理的一種機制。node

做用

Linux用戶安裝Linux操做系統時遇到的一個常見的難以決定的問題就是如何正確地評估各分區大小,以分配合適的硬盤空間。普通的磁盤分區管理方式在邏輯分區劃分好以後就沒法改變其大小,當一個邏輯分區存放不下某個文件時,這個文件由於受上層文件系統的限制,也不能跨越多個分區來存放,因此也不能同時放到別的磁盤上。而遇到出現某個分區空間耗盡時,解決的方法一般是使用符號連接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨着Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的狀況下能夠方便地調整各個分區大小。vim

基本術語

物理存儲介質(PhysicalStorageMedia
指系統的物理存儲設備:磁盤,如:/dev/hda、/dev/sda等,是 存儲系統最底層的 存儲單元
物理卷(Physical Volume,PV)
指磁盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group,VG)
相似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。能夠在卷組上建立一個或多個LV(邏輯卷)。
邏輯卷(Logical Volume,LV)
相似於非LVM系統中的磁盤分區,邏輯卷創建在卷組VG之上。在邏輯卷LV之上能夠創建文件系統(好比/home或者/usr等)。
物理塊(Physical Extent,PE)
每個物理卷PV被劃分爲稱爲PE(Physical Extents)的 基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。因此物理卷(PV)由大小等同的基本單元PE組成。
邏輯塊(Logical Extent,LE)
邏輯卷LV也被劃分爲可被 尋址的基本單位,稱爲LE。在同一個卷組中,LE的大小和PE是相同的,而且一一對應。

            LVM模型bash

建立管理

這裏用了三個案例:案例1新建邏輯卷,案例2用PE個數來創建邏輯卷,案例3是擴展卷組與邏輯卷,案例4是增長交換分區。

案例1:新建一個邏輯卷

使用分區 /dev/vdb1 構建 LVM 存儲,相關要求以下:app

  1. 新建一個名爲 systemvg 的卷組
  2. 在此卷組中建立一個名爲 vo 的邏輯卷,大小爲180MiB
  3. 將邏輯卷 vo 格式化爲 EXT4 文件系統
  4. 將邏輯卷 vo 掛載到 /vo 目錄,並在此目錄下創建一個測試文件 votest.txt,內容爲「I AM KING.」

LVN基本用法:ide

    vgcreate  卷組名  物理設備.. ..
    lvcreate  -L  大小  -n  邏輯卷名  卷組名

步驟:工具

 步驟一:建立卷組測試

 1)新建名爲systemvg的卷組ui

[root@1 ~]# vgcreate systemvg /dev/vdb1
  Physical volume "/dev/vdb1" successfully created
  Volume group "systemvg" successfully created

 2)確認結果spa

[root@1 ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "rhel" using metadata type lvm2
  Found volume group "systemvg" using metadata type lvm2

步驟二:建立邏輯卷操作系統

1)新建名爲vo的邏輯卷

[root@1 ~]# lvcreate -L 52M -n vo systemvg
  Logical volume "vo" created.

 2)確認結果

[root@1 ~]# lvscan 
  ACTIVE            '/dev/systemvg/vo' [52.00 MiB] inherit

步驟三:格式化及掛載使用

1)格式化邏輯卷/dev/systemvg/vo

[root@1 ~]# mkfs.ext4 /dev/systemvg/vo 
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
第一個數據塊=1
Maximum filesystem blocks=33685504
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

 2)掛載邏輯卷/dev/systemvg/vo

[root@1 ~]# mkdir /vo                            //建立掛載點      
[root@1 ~]# mount /dev/systemvg/vo /vo           //掛載
[root@1 ~]# df -hT /vo                           //檢查結果
文件系統                類型  容量  已用  可用 已用% 掛載點
/dev/mapper/systemvg-vo ext4   47M  1.1M   42M    3% /vo

 3)訪問邏輯卷/dev/systemvg/vo

[root@1 ~]# echo "I AM KING.">  /vo/votest.txt
[root@1 ~]# cat /vo/votest.txt
I AM KING.

 案例2:根據PE來建立邏輯卷

在硬盤vdc建立三個分區,大小依次爲:500MiB、2000MiB、512MiB

而後再基於剛創建的 2000MiB 分區構建新的 LVM 存儲:

  1. 新的邏輯卷命名爲 database,大小爲50個物理擴展單元(Physical Extent),屬於 datastore 卷組
  2. 在 datastore 卷組中的全部邏輯卷,其物理擴展單元(Physical Extent)的大小爲16MiB
  3. 使用 EXT3 文件系統對邏輯卷 database 格式化,此邏輯卷應該在開機時自動掛載到 /mnt/database 目錄

基本用法:

 vgcreate  -s PE大小  卷組名  磁盤分區
 lvcreate -l PE個數 -n 邏輯卷名 卷組名

查看磁盤分區

[root@1 ~]# fdisk -l
磁盤 /dev/vdc:8589 MB, 8589934592 字節,16777216 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0xf842e899

   設備 Boot      Start         End      Blocks   Id  System
/dev/vdc1            2048     1026047      512000   83  Linux
/dev/vdc2         1026048     5122047     2048000   83  Linux
/dev/vdc3         5122048     6170623      524288   83  Linux

步驟一:新建卷組、邏輯卷

 1)新建卷組datastore,指定PE大小爲16MiB

[root@1 ~]# vgcreate -s 16M  datastore /dev/vdc2
  Physical volume "/dev/vdc2" successfully created
  Volume group "datastore" successfully created

2)新建邏輯卷database,大小設置爲50個PE

[root@1 ~]# lvcreate -l 50 -n database datastore
  Logical volume "database" created.

3 ) 確認新建的邏輯卷

[root@1 ~]# lvscan 
  ACTIVE            '/dev/datastore/database' [800.00 MiB] inherit

 步驟二:格式化及使用邏輯卷

1)格式化邏輯卷/dev/datastore/database

[root@1 ~]# mkfs.ext3 /dev/datastore/database 
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
51296 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=209715200
7 block groups
32768 blocks per group, 32768 fragments per group
7328 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

2)配置開機掛載

[root@1 ~]# mkdir /database
[root@1 ~]# vim /etc/fstab
[root@1 ~]# mount -a
[root@1 ~]# df -hT /database/
文件系統                       類型  容量  已用  可用 已用% 掛載點
/dev/mapper/datastore-database ext3  772M  828K  731M    1% /database

 案例3:擴展卷組及邏輯卷的大小

本例要求沿用練習一,將已有的邏輯卷 vo 的大小調整爲 300MiB,要求以下:

  1. 原文件系統中的內容必須保持完整
  2. 必要時可以使用以前準備的分區 /dev/vdb3 來補充空間
  3. 注意:分區大小不多能徹底符合要求的大小,因此大小在270MiB和300MiB之間都是能夠接受的

步驟一:確認邏輯卷vo的信息

1)找出邏輯卷所在卷組

[root@1 ~]# lvscan 
ACTIVE '/dev/systemvg/vo' [52.00 MiB] inherit

 2)查看該卷組的剩餘空間是否可知足擴展須要

[root@1 ~]# vgdisplay systemvg 
  --- Volume group ---
  VG Name               systemvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               196.00 MiB    //卷組總大小
  PE Size               4.00 MiB
  Total PE              49
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       36 / 144.00 MiB  //剩餘空間大小
  VG UUID               Ab9Mi4-y163-RAVc-82dQ-JYpe-GrEg-9DkxDa
   

 此卷組systemvg的總大小不夠300M,剩餘空間才144M,必須先擴展卷組。

步驟二:擴展卷組

 1)將提早準備的分區/dev/vdb3添加到卷組systemvg

[root@1 ~]# vgextend systemvg /dev/vdb3
  Physical volume "/dev/vdb3" successfully created
  Volume group "systemvg" successfully extended

 2)確認卷組新的大小

[root@1 ~]# vgdisplay systemvg 
  --- Volume group ---
  VG Name               systemvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               5.19 GiB
  PE Size               4.00 MiB
  Total PE              1328
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       1315 / 5.14 GiB      //剩餘空間大小
  VG UUID               Ab9Mi4-y163-RAVc-82dQ-JYpe-GrEg-9DkxDa
   

 步驟三:擴展邏輯卷大小

 1)將邏輯卷/dev/systemvg/vo的大小調整爲300MiB

[root@1 ~]# lvextend -L 300M /dev/systemvg/vo 
  Size of logical volume systemvg/vo changed from 52.00 MiB (13 extents) to 300.00 MiB (75 extents).
  Logical volume vo successfully resized.

#上面的命令就實現將邏輯卷systemvg的大小增長248M,原先大小爲52,從而變爲300:lvextend -L +248M /dev/systemvg/vo

 2)確認調整結果

[root@1 ~]# lvscan
[root@1 ~]# lvscan 
  ACTIVE            '/dev/systemvg/vo' [300.00 MiB] inherit

3)刷新文件系統大小 

 確認邏輯卷vo上的文件系統類型:

[root@1 ~]# blkid /dev/systemvg/vo
/dev/systemvg/vo: UUID="b6626f8d-a15b-4314-b0b1-2503a1e83e09" TYPE="ext4" 

 選擇合適的工具刷新大小:resize2fs

[root@1 ~]# resize2fs /dev/systemvg/vo
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/systemvg/vo is mounted on /vo; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/systemvg/vo is now 307200 blocks long.

確認新大小(約等於300MiB):

[root@1 ~]# df -hT /dev/systemvg/vo 
文件系統                類型  容量  已用  可用 已用% 掛載點
/dev/mapper/systemvg-vo ext4  288M  2.0M  272M    1% /vo

 案例4:添加一個swap分區

本例要求爲虛擬機 添加一個交換分區,相關要求以下:

  1. 此交換分區的大小爲 512MiB
  2. 當系統啓動時,swap分區應該能夠自動掛載
  3. 不要移除或更改其餘已經存在於你係統中的交換分區

步驟一:格式化交換分區

1)將提早準備的分區/dev/vdb5格式化爲swap文件系統

[root@1 ~]# mkswap /dev/vdb5
正在設置交換空間版本 1,大小 = 524284 KiB
無標籤,UUID=f88b5629-610a-4c19-b721-48578d2b2b12

2)確認格式化結果

[root@1 ~]# blkid /dev/vdb5
/dev/vdb5: UUID="f88b5629-610a-4c19-b721-48578d2b2b12" TYPE="swap" 

步驟二:配置交換分區的開機啓用

修改/etc/fstab文件,添加交換分區記錄:

[root@1 ~]# cat /etc/fstab
............. /dev/vdb5 swap swap defaults 0 0

步驟三:確認掛載配置可用

1)檢查啓用新交換分區以前

[root@1 ~]# swapon -s
文件名				類型		大小	已用	權限
/dev/dm-1                              	partition	2097148	0	-1

 2)啓用新交換分區

[root@1 ~]# swapon -a

 3)檢查啓用新交換分區以後

[root@1 ~]# swapon -s
文件名				類型		大小	已用	權限
/dev/dm-1                              	partition	2097148	0	-1
/dev/vdb5                              	partition	524284	0	-2
相關文章
相關標籤/搜索