天天看點

什麼是Linux的LVM:PE, PV, VG, LV 的意義是?

文章目錄

  • ​​前言​​
  • ​​🍁 1.導讀​​
  • ​​🍁2.概念​​
  • ​​⛳️ 2.1 LVM​​
  • ​​⛳️ 2.2 PE​​
  • ​​⛳️ 2.3 PV​​
  • ​​⛳️ 2.4 VG​​
  • ​​⛳️ 2.4 LV​​
  • ​​🍁3.邏輯卷常用指令​​
  • ​​🍁4.實戰案例​​
  • ​​⛳️ 4.1 LVM 全流程操作​​
  • ​​⛳️ 4.2 Linux系統分區大小擴充​​

前言

近期正在給客戶部署幾套新的Linux作業系統,講LVM的基本知識做了下總結

🍁 1.導讀

想像一個情況,你在當初規劃主機的時候将 /home 隻給他 50G ,等到使用者衆多之後導緻這

個 filesystem 不夠大, 此時你能怎麼作?多數的朋友都是這樣:再加一顆新硬碟,然後重新

分區、格式化,将 /home 的資料完整的複制過來, 然後将原本的 partition 解除安裝重新挂載新的

partition 。啊!好忙碌啊!若是第二次分區卻給的容量太多!導緻很多磁盤容量被浪費了!

你想要将這個 partition 縮小時,又該如何作?将上述的流程再搞一遍!唉~煩死了,尤其複

制很花時間ㄟ~有沒有更簡單的方法呢? 有的!那就是我們這個小節要介紹的 LVM 這玩意

兒!

🍁2.概念

LVM使用分層結構,如下圖所示

什麼是Linux的LVM:PE, PV, VG, LV 的意義是?

PE(Physical Extend) 實體拓展

PV(Physical Volume) 實體卷

VG(Volume Group) 卷組

LV(Logical Volume) 邏輯卷

什麼是Linux的LVM:PE, PV, VG, LV 的意義是?

⛳️ 2.1 LVM

LVM 的全名是 Logical Volume Manager,中文可以翻譯作邏輯卷軸管理者。之是以稱為“卷

軸”可能是因為可以将 filesystem 像卷軸一樣伸長或縮短之故吧!LVM 的作法是将幾個實體的

partitions (或 disk) 通過軟體組合成為一塊看起來是獨立的大磁盤 (VG) ,然後将這塊大

磁盤再經過分區成為可使用分區 (LV), 最終就能夠挂載使用了。但是為什麼這樣的系統可

以進行 filesystem 的擴充或縮小呢?其實與一個稱為 PE 的項目有關!

⛳️ 2.2 PE

Physical Extent, PE, 實體範圍區塊

LVM 預設使用 4MB 的 PE 區塊,而 LVM 的 LV 在 32 位系統上最多僅能含有 65534 個 PE

(lvm1 的格式),是以預設的 LVM 的 LV 會有 4M*65534/(1024M/G)=256G。這個 PE 很

有趣喔!他是整個 LVM 最小的儲存區塊,也就是說,其實我們的檔案資料都是借由寫入 PE

來處理的。簡單的說,這個 PE 就有點像檔案系統裡面的 block 大小啦。 這樣說應該就比較

好了解了吧?是以調整 PE 會影響到 LVM 的最大容量喔!不過,在 CentOS 6.x 以後,由于

直接使用 lvm2 的各項格式功能,以及系統轉為 64 位,是以這個限制已經不存在了。

⛳️ 2.3 PV

Physical Volume, PV, 實體卷軸

我們實際的 partition (或 Disk) 需要調整系統識别碼 (system ID) 成為 8e (LVM 的識别

碼),然後再經過 pvcreate 的指令将他轉成 LVM 最底層的實體卷軸 (PV) ,之後才能夠将

這些 PV 加以利用!

⛳️ 2.4 VG

Volume Group, VG, 卷軸群組

所謂的 LVM 大磁盤就是将許多 PV 整合成這個 VG 的東西就是啦!是以 VG 就是 LVM 組合

起來的大磁盤!這麼想就好了。 那麼這個大磁盤最大可以到多少容量呢?這與下面要說明的

PE 以及 LVM 的格式版本有關喔~在預設的情況下, 使用 32位的 Linux 系統時,基本上 LV

最大僅能支援到 65534 個 PE 而已,若使用預設的 PE 為 4MB 的情況下, 最大容量則僅能

達到約 256GB 而已~不過,這個問題在 64位的 Linux 系統上面已經不存在了!LV 幾乎沒有

啥容量限制了!

⛳️ 2.4 LV

Logical Volume, LV, 邏輯卷軸

最終的 VG 還會被切成 LV,這個 LV 就是最後可以被格式化使用的類似分區的咚咚了!那麼

LV 是否可以随意指定大小呢? 當然不可以!既然 PE 是整個 LVM 的最小儲存機關,那麼 LV

的大小就與在此 LV 内的 PE 總數有關。 為了友善使用者利用 LVM 來管理其系統,是以 LV

的裝置檔案名通常指定為“ /dev/vgname/lvname ”的樣式!

什麼是Linux的LVM:PE, PV, VG, LV 的意義是?

通過 PV, VG, LV 的規劃之後,再利用 mkfs 就可以将你的 LV 格式化成為可以利用的檔案系統

了!而且這個檔案系統的容量在未來還能夠進行擴充或減少, 而且裡面的資料還不會被影

響!實在是很“福氣啦!

🍁3.邏輯卷常用指令

pvcreate /dev/sda4

pvdisplay

pvs

vgcreate vg_orasoft /dev/sda4

vgdisplay

vgs

lvcreate -n lv_orasoft_u01 -L 1G vg_orasoft

lvdisplay

lvs

mkfs.ext4 /dev/vg_orasoft/lv_orasoft_u01

mkdir /u11

mount /dev/vg_orasoft/lv_orasoft_u01 /u11

–mv /u01/* /u11/

–擴充邏輯卷

vgextend vg_orasoft /dev/sdb3

–lvextend -L +9G /dev/vg_orasoft/lv_orasoft_u01

lvextend -L 20G /dev/vg_orasoft/lv_orasoft_u01

resize2fs /dev/vg_orasoft/lv_orasoft_u01 #更新檔案系統

–收縮邏輯卷

lvreduce -L -4G /dev/vg_orasoft/lv_orasoft_u01

–重命名邏輯卷

lvrename /dev/vg_orasoft/lv_ora_soft_u01 /dev/vg_orasoft/lv_orasoft_u01

— /etc/fstab

/dev/vg_orasoft/lv_orasoft_u01 /u01 ext4 defaults 0 0

/dev/vg_orasoft/lv_orasoft_u02 /u02 ext4 defaults 0 0

/dev/vg_orasoft/lv_orasoft_u03 /u03 ext4 defaults 0 0

/dev/vg_orasoft/lv_oradata_u04 /u04 ext4 defaults 0 0

—找邏輯卷

lvmdiskscan

vgchange -ay

—删除邏輯卷

①首先将正在使用的邏輯卷解除安裝掉,通過 umount 指令

②将邏輯卷先删除,通過 lvremove 指令

③删除卷組,通過 vgremove 指令

④最後再删除的實體卷,通過 pvremove 指令

🍁4.實戰案例

⛳️ 4.1 LVM 全流程操作

對/dev/sdb 進行分區

50G磁盤大約分 5個 PE,每個 PE 大約 10G

什麼是Linux的LVM:PE, PV, VG, LV 的意義是?
[root@rac1 ~]#  fdisk -l
[root@rac1 ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +10G
Command (m for help): d   #删除分區
Partition number (1-4): 4  #選擇要删除分區的分區号,我們選第四個
Disk identifier: 0x000b7170
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux
Command (m for help): P
Disk identifier: 0x000b7170
Device Boot        Start           End      Blocks   Id  System
/dev/sdb1               1           1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux
/dev/sdb4            3919        6527    20956792+   5  Extended
/dev/sdb5            3919        5224    10490413+  83  Linux
/dev/sdb6            5225        6527    10466316   83  Linux

Command (m for help): t
Partition number (1-6): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w

[root@rac1 ~]# fdisk -l | grep dev
Disk /dev/sda: 53.7 GB, 53687091200 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26        2637    20971520   8e  Linux LVM
/dev/sda3            2637        6528    31251456   8e  Linux LVM
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307        2612    10490445   8e  Linux LVM
/dev/sdb3            2613        3918    10490445   8e  Linux LVM
/dev/sdb4            3919        6527    20956792+   5  Extended
/dev/sdb5            3919        5224    10490413+  8e  Linux LVM
/dev/sdb6            5225        6527    10466316   8e  Linux LVM
Disk /dev/mapper/vg_root-Vol03: 2147 MB, 2147483648 bytes
Disk /dev/mapper/vg_root-Vol00: 21.5 GB, 21474836480 bytes
Disk /dev/mapper/vg_root-Vol02: 10.7 GB, 10737418240 bytes
Disk /dev/mapper/vg_root-Vol01: 10.7 GB, 10737418240 bytes

(1)建立 PV
  [root@rac1 ~]# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  vg_root lvm2 a--  20.00g 7.80g
  /dev/sda3  vg_root lvm2 a--  29.80g    0

[root@rac1 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@rac1 ~]#  pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
root@rac1 ~]#  pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created
root@rac1 ~]#  pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created
[root@rac1 ~]# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  vg_root lvm2 a--  20.00g  7.80g
  /dev/sda3  vg_root lvm2 a--  29.80g     0
  /dev/sdb1          lvm2 a--  10.00g 10.00g
  /dev/sdb2          lvm2 a--  10.00g 10.00g
  /dev/sdb3          lvm2 a--  10.00g 10.00g
  /dev/sdb5          lvm2 a--  10.00g 10.00g

(2)建立 VG
[root@rac1 ~]#  vgcreate vg_orasoft /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
  Volume group "vg_orasoft" successfully created
[root@rac1 ~]# vgs
  VG         #PV #LV #SN Attr   VSize  VFree
  vg_orasoft   4   0   0 wz--n- 40.00g 40.00g
  vg_root      2   4   0 wz--n- 49.80g  7.80g
(3)建立 LV
[root@rac1 ~]# lvcreate -n lv_orasoft_u01 -L 40G vg_orasoft
  Logical volume "lv_orasoft_u01" created
[root@rac1 ~]# lvs
  LV             VG         Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_orasoft_u01 vg_orasoft -wi-a----- 40.00g                                             
  Vol00          vg_root    -wi-ao---- 20.00g                                             
  Vol01          vg_root    -wi-ao---- 10.00g                                             
  Vol02          vg_root    -wi-ao---- 10.00g                                             
  Vol03          vg_root    -wi-ao----  2.00g   

(4)建立檔案系統:
[root@rac1 ~]# mkfs.ext4 /dev/vg_orasoft/lv_orasoft_u01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@rac1 ~]#  mkdir /u01
[root@rac1 ~]# mount /dev/vg_orasoft/lv_orasoft_u01 /u01
[root@rac1 ~]# df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-Vol00               20G  5.6G   14G  30% /
tmpfs                                  996M   76K  996M   1% /dev/shm
/dev/sda1                              194M   35M  150M  19% /boot
/dev/mapper/vg_root-Vol01              9.9G  151M  9.2G   2% /home
/dev/mapper/vg_root-Vol02              9.9G  151M  9.2G   2% /tmp
/dev/sr0                               3.6G  3.6G     0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/sr0                               3.6G  3.6G     0 100% /media/cdrom
/dev/mapper/vg_orasoft-lv_orasoft_u01   40G  176M   38G   1% /u01

(5)加入/etc/fstab 檔案
/dev/vg_orasoft/lv_orasoft_u01 /u01 ext4 defaults 0 0      

⛳️ 4.2 Linux系統分區大小擴充

擴充前
什麼是Linux的LVM:PE, PV, VG, LV 的意義是?
擴充後
什麼是Linux的LVM:PE, PV, VG, LV 的意義是?