歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

LVM邏輯卷管理配置

前言

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
Copyright © Linux教程網 All Rights Reserved