首頁 > 軟體

LVM邏輯卷管理設定

2020-06-16 17:26:05

前言

Logical Volume Manager (LVM),邏輯卷管理LVM是一個多才多藝的硬碟系統工具,無論在Linux或者其他類似的系統,都是非常的好用。傳統分割區使用固定大小分割區,重新調整大小十分麻煩,但是LVM可以建立和管理“邏輯”捲,而不是直接使用物理硬碟,可以讓管理員彈性的管理邏輯卷的擴大縮小,操作簡單,而不損壞已儲存的資料。可以隨意將新的硬碟新增到LVM,以直接擴充套件已經存在的邏輯卷,LVM並不需要重新啟動就可以讓核心知道分割區的存在。文章詳細記錄在PV/VG/LV中3個階段的建立/新增/擴充套件/減小/刪除等實戰操作步驟,方便自己回顧一些基礎用法,也希望能夠幫助大家更好的理解LVM的原理。

LVM是一個非常給力的工具,用來建立和管理可變大小的分割區

LVM基本組成

LVM利用Linux核心的device-mapper來實現儲存系統的虛擬化(系統分割區獨立於底層硬體)。 通過LVM,你可以實現儲存空間的抽象化並在上面建立虛擬分割區(virtual partitions),可以更簡便地擴大和縮小分割區,可以增刪分割區時無需擔心某個硬碟上沒有足夠的連續空間, without getting caught up in the problems of fdisking a disk that is in use (and wondering whether the kernel is using the old or new partition table) and without having to move other partition out of the way. LVM是用來方便管理的,不會提供額外的安全保證。 However, it sits nicely with the other two technologies we are using.

LVM的基本組成塊(building blocks)如下:

物理卷Physical volume (PV) :可以在上面建立卷組的媒介,可以是硬碟分割區,也可以是硬碟本身或者回環檔案(loopback file)。物理卷包括一個特殊的header,其餘部分被切割為一塊塊物理區域(physical extents)。 Think of physical volumes as big building blocks which can be used to build your hard drive.

捲組Volume group (VG) :將一組物理捲收集為一個管理單元。Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.

邏輯卷Logical volume (LV) :虛擬分割區,由物理區域(physical extents)組成。A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.

物理區域Physical extent (PE) :硬碟可供指派給邏輯卷的最小單位(通常為4MB)。A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.

優點

比起正常的硬碟分割區管理,LVM更富於彈性:

  1. 使用卷組(VG),使眾多硬碟空間看起來像一個大硬碟。

  2. 使用邏輯卷(LV),可以建立跨越眾多硬碟空間的分割區。

  3. 可以建立小的邏輯卷(LV),在空間不足時再動態調整它的大小。

  4. 在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬碟上的位置,不用擔心沒有可用的連續空間。It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.

  5. 可以線上(online)對邏輯卷(LV)和捲組(VG)進行建立、刪除、調整大小等操作。LVM上的檔案系統也需要重新調整大小,某些檔案系統也支援這樣的線上操作。

  6. 無需重新啟動服務,就可以將服務中用到的邏輯卷(LV)線上(online)/動態(live)遷移至別的硬碟上。

  7. 允許建立快照,可以儲存檔案系統的備份,同時使服務的下線時間(downtime)降低到最小。

這些優點使得LVM對伺服器的管理非常有用,對於桌面系統管理的幫助則沒有那麼顯著,你需要根據實際情況進行取捨。

LVM

#新建
fdisk /dev/sdb

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
#主分割區
p
#分割區號
Partition number (1-4): 1
#回車用預設的1
First cylinder (1-1044, default 1): 
#大小
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044):
#改變型別
Command (m for help): t
Selected partition 1
#LVM 的分割區程式碼
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
#儲存
w
#退出
q

#檢視建立完後的分割區
fdisk -l

Disk /dev/sda: 96.6 GB, 96636764160 bytes
255 heads, 63 sectors/track, 11748 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008cbaf

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       11749    93858816   8e  Linux LVM

Disk /dev/sdb: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x16396101

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       26108   209712478+  8e  Linux LVM

#建立物理卷(PV)
pvcreate /dev/sdb1
pvscan

  PV /dev/sdb1   VG vg_data   lvm2 [200.00 GiB / 30.00 GiB free]
  PV /dev/sda2   VG VolGroup   lvm2 [89.51 GiB / 1.51 GiB free]
  Total: 2 [289.50 GiB] / in use: 2 [289.50 GiB] / in no VG: 0 [0   ]

pvdisplay

  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_data
  PV Size               200.00 GiB / not usable 1.34 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              51199
  Free PE               7679
  Allocated PE          43520
  PV UUID               c9js6G-WP93-ug9b-9aXe-unnZ-doWQ-AkzOKf

  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               89.51 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              22914
  Free PE               386
  Allocated PE          22528
  PV UUID               bFne0f-RnL8-vut2-AcKr-fr9k-VfeG-C8OHSR

#刪除物理卷
pvremove /dev/sdb1

#建立卷組(VG)
vgcreate vg_data /dev/sdb1
vgcreate vg_data /dev/hda{6,7,8}
#擴充套件VG
vgextend vg_data /dev/hda9

#檢視VG資訊
vgscan

  Reading all physical volumes.  This may take a while...
  Found volume group "vg_data" using metadata type lvm2
  Found volume group "VolGroup" using metadata type lvm2

vgdisplay

  --- Volume group ---
  VG Name               vg_data
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               200.00 GiB
  PE Size               4.00 MiB
  Total PE              51199
  Alloc PE / Size       43520 / 170.00 GiB
  Free  PE / Size       7679 / 30.00 GiB
  VG UUID               EQhiUt-Waj1-F3V2-cwej-2joz-oC3P-JMSFui

  --- Volume group ---
  VG Name               VolGroup
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               5
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               89.51 GiB
  PE Size               4.00 MiB
  Total PE              22914
  Alloc PE / Size       22528 / 88.00 GiB
  Free  PE / Size       386 / 1.51 GiB
  VG UUID               i0qDld-uOz4-P1BS-2gN8-2vhj-5gdc-DnHfa4

#刪除VG
vgremove vg_data

#建立邏輯卷(LV)
lvcreate -L 20g -n lv_Oracle vg_data
lvcreate -l 100%FREE -n lv_oracle vg_data

#檢視LV
lvscan

  ACTIVE            '/dev/vg_data/lv_oracle' [20.00 GiB] inherit
  ACTIVE            '/dev/VolGroup/lv_root' [50.00 GiB] inherit
  ACTIVE            '/dev/VolGroup/lv_home' [10.00 GiB] inherit

lvdisplay

  --- Logical volume ---
  LV Path                /dev/vg_data/lv_oracle
  LV Name                lv_oracle
  VG Name                vg_data
  LV UUID                P3jVXt-92Lp-QElD-ddl8-lW4r-okz7-n8fdXD
  LV Write Access        read/write
  LV Creation host, time capdb, 2016-03-17 17:12:43 +0800
  LV Status              available
  # open                 1
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:5

#格式化邏輯卷
mkfs -t ext4 /dev/vg_data/lv_oracle
mkfs.ext4 /dev/vg_data/lv_oracle

#掛載邏輯卷
mkdir /oracle
#修改fstab
vi /etc/fstab
/dev/vg_data/lv_oracle /oracle ext4 dafualts 0 0
#測試lv是否可以掛載
mount -a
mount /dev/vg_data/lv_oracle /oracle
df -h

#刪除邏輯卷
fuser -m /oracle
umount /oracle
lvremove /dev/vg_data/lv_oracle

LVM擴充套件

LVM特點就是支援線上動態擴容,如果為了穩妥也可以先umount

#檢視Free  PE / Size可用空間
vgdisplay

  --- Volume group ---
  VG Name               vg_data
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               200.00 GiB
  PE Size               4.00 MiB
  Total PE              51199
  Alloc PE / Size       43520 / 170.00 GiB
  Free  PE / Size       7679 / 30.00 GiB
  VG UUID               EQhiUt-Waj1-F3V2-cwej-2joz-oC3P-JMSFui

#設定邏輯卷的大小
lvresize -L 40g /dev/vg_data/lv_oracle
lvresize -L +20g /dev/vg_data/lv_oracle

#檢查磁碟錯誤,等待時間較長可以考慮跳過
e2fsck -f /dev/vg_data/lv_oracle

#更新檔案系統資訊
resize2fs /dev/vg_data/lv_oracle

#檢查邏輯卷狀態
lvdisplay vg_data

LVM縮減

注意減少的大小,實施前umount邏輯卷

#解除安裝LV
umout /oracle

#檢查磁碟錯誤
e2fsck -f /dev/vg_data/lv_oracle

#縮小檔案系統,更新檔案系統資訊
resize2fs /dev/vg_data/lv_oracle 10g

#減少LV大小
lvresize -L 10g /dev/vg_data/lv_oracle
lvresize -L -30g /dev/vg_data/lv_oracle

#檢查邏輯卷大小
lvdisplay
df -h

擴充套件卷組

步驟和建立VG類似

#建立一個2GB分割區sdc1,型別為LVM(8e)
fdisk /dev/sdc

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +2G

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

Command (m for help): w
The partition table has been altered!

#建立一個物理卷 /dev/sdc1
pvcreate /dev/sdc1

#增加到已存在的捲組
vgextend vg_data /dev/sdc1

#驗證卷組大小
vgdisplay

刪除捲組

#解除安裝邏輯卷
umount /oracle
#刪除邏輯卷
lvremove /dev/vg_data/lv_oracle
#取消啟用卷組
vgchange -a n vg_data
#刪除捲組
vgremove vg_data
#刪除物理卷
pvremove /dev/sdb1
pvremove /dev/hda{6,7,8}
#普通磁碟型別是83
fdisk /dev/sdb
t 83

lvchange

在做HA共用儲存時需要配合lvchange啟用lv

lvscan
lvchange -a y /dev/vg_data/lv_oradata

命令總結

任務PV 階段VG 階段LV 階段
搜尋 (scan) pvscan vgscan lvscan
建立 (create) pvcreate vgcreate lvcreate
列出 (display) pvdisplay vgdisplay lvdisplay
擴充套件 (extend)   vgextend lvextend (lvresize)
減少 (reduce)   vgreduce lvreduce (lvresize)
刪除 (remove) pvremove vgremove lvremove
改變容量 (resize)     lvresize
改變屬性 (attribute) pvchange vgchange lvchange

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-12/138373.htm


IT145.com E-mail:sddin#qq.com