CentOS 6中建立及管理LVM邏輯卷

LVM簡介:

LVM是邏輯管理卷的簡寫,其可以將多塊物理磁碟的分割槽組成一個大的卷組(可以把他想象成是一個大的資源池),再在卷組上劃分出邏輯卷並在其上建立檔案系統最終供使用者使用。

LVM的好處是可以動態的增加邏輯卷的大小,這樣就不用面臨隨著業務發展,原本的分割槽空間不足的尷尬啦!

下面是LVM的結構圖,最下面是物理磁碟分割槽,其上是物理卷(一個物理磁碟分割槽對應一個物理卷),再往上是我稱之為“資源池”的卷組,這個“資源池”的容量是由組成其的物理卷的總容量決定的,而最上面則是可以被當成“普通分割槽”來使用的邏輯卷,邏輯卷可以劃分很多個(預設一個卷組可以劃分256個邏輯卷),只要其加起來的容量不超過“資源池”的容量就好!

建立LVM:

一、安裝LVM軟體包

通常情況下,CentOS中都有自帶LVM軟體包,但為了以防萬一,我還是把安裝命令貼出來吧~

[root@localhost ~]# yum install -y lvm

二、建立物理磁碟的分割槽

記得要先新增一塊空磁碟吶,本實驗中我新增了一塊8GB大小的SCSI磁碟。

檢視新新增的磁碟。

[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.2G 0 rom /media/cdrom
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 7.5G 0 part
 ├─VolGroup-lv_root (dm-0) 253:0 0 6.7G 0 lvm /
 └─VolGroup-lv_swap (dm-1) 253:1 0 816M 0 lvm [SWAP]
sdb 8:16 0 8G 0 disk

如果新加的磁碟不能被系統立即識別請參考此篇文章。

https://www.ibadboy.net/archives/1895.html

使用fdisk工具對新加磁碟進行分割槽。

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x028d3c84.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
     switch off the mode (command 'c') and change display units to
     sectors (command 'u').
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):   s           //設定起始扇區
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044):522           //設定結束扇區,這裡我結束扇區設定為總扇區數的一半,相當於把分割槽容量設定為總容量的一半
Command (m for help): n          //新建第二塊磁碟分割槽
Command action
   e   extended
   p   primary partition (1-4)
p           //新建為主分割槽
Partition number (1-4): 2            //設定分割槽編號
First cylinder (523-1044, default 523):          //設定起始扇區
Using default value 523
Last cylinder, +cylinders or +size{K,M,G} (523-1044, default 1044):             //設定結束扇區
Using default value 1044
Command (m for help): t             //更改分割槽的標識
Partition number (1-4): 1           //選擇編號為1的分割槽進行操作
Hex code (type L to list codes): 8e //將分割槽標識更改為“Linux LVM”,其對應的程式碼是8e,這裡可以輸入list來檢視所有標識對應的程式碼
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t             //更改分割槽的標識
Partition number (1-4): 2           //選擇編號為2的分割槽進行操作
Hex code (type L to list codes): 8e //將分割槽標識更改為“Linux LVM”
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p             //檢視剛剛新建的分割槽
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 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: 0x028d3c84
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         522     4192933+  8e  Linux LVM
/dev/sdb2             523        1044     4192965   8e  Linux LVM
Command (m for help): w             //儲存並退出fdisk工具
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

三、建立物理卷

使用新建立的/dev/sdb1和/dev/sdb2這兩個分割槽分別組建物理卷。

[root@localhost ~]# pvcreate /dev/sdb[12]
  Physical volume "/dev/sdb1" successfully created          //提示說物理卷建立成功
  Physical volume "/dev/sdb2" successfully created

檢視物理卷。

[root@localhost ~]# pvdisplay
  "/dev/sdb1" is a new physical volume of "4.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1            //物理卷名稱
  VG Name                                    //所屬的卷組名稱,這裡還未加入任何卷組
  PV Size               4.00 GiB             //物理卷大小
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               pTps5V-4vKA-em0G-XR8Y-ltJu-4CeL-KEOMn3
  "/dev/sdb2" is a new physical volume of "4.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2            //物理卷名稱
  VG Name                                    //所屬的卷組名稱
  PV Size               4.00 GiB             //物理卷大小
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               uzW0YS-fl5a-4Qae-6vcG-iXce-a8iB-QYMvf4

四、建立卷組

將剛剛新建的物理卷/dev/sdb1和/dev/sdb2組成一個卷組——vg1

[root@localhost ~]# vgcreate vg1 /dev/sdb[12]
 Volume group "vg1" successfully created          //提示說卷組建立成功卷

檢視卷組

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               vg1             //卷組名稱
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write      //卷組的訪問許可權
  VG Status             resizable       //卷組狀態
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7.99 GiB        //卷組容量
  PE Size               4.00 MiB
  Total PE              2046
  Alloc PE / Size       0 / 0
  Free  PE / Size       2046 / 7.99 GiB
  VG UUID               dY8zDo-vD43-DQB8-CpRs-Shla-kWfJ-OuDjhp

五、劃分邏輯卷

從總容量為8G(其實不足8G)的卷組vg1中劃分四個邏輯卷,分別為lv1、lv2、lv3、lv4,每個大小為2000MB。

[root@localhost ~]# lvcreate -L 2000MB -n lv1 vg1       //-L引數後面接邏輯卷大小,單位可以是KB、MB、GB。
 Logical volume "lv1" created
[root@localhost ~]# lvcreate -L 2000MB -n lv2 vg1
 Logical volume "lv2" created
[root@localhost ~]# lvcreate -L 2000MB -n lv3 vg1
 Logical volume "lv3" created
[root@localhost ~]# lvcreate -L 2000MB -n lv4 vg1
 Logical volume "lv4" created

檢視邏輯卷,因為這裡的輸出資訊比較多,我只擷取lv1這個邏輯卷的資訊做簡要說明。

[root@localhost ~]# lvdisplay
 --- Logical volume ---
 LV Path /dev/vg1/lv1          //邏輯卷路徑
 LV Name lv1                   //邏輯卷名稱
 VG Name vg1                   //邏輯卷所屬的卷組的名稱
 LV UUID qhypYJ-jPOW-KDDy-NXtO-aWQO-ryHI-Tf04hS
 LV Write Access read/write
 LV Creation host, time localhost.localdomain, 2017-10-11 13:13:54 +0800
 LV Status available
 # open 0
 LV Size 1.95 GiB              //邏輯卷容量
 Current LE 500
 Segments 1
 Allocation inherit
 Read ahead sectors auto
 - currently set to 256
 Block device 253:2

至此,邏輯卷已建立完成,但此時還不能立即使用,還需要在邏輯捲上新建檔案系統。

這裡為了不讓文章顯得囉嗦,我只在邏輯卷lv1上建立檔案系統。

[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.41.12 (17-May-2010)
檔案系統標籤=
作業系統:Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
128000 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一個資料塊=0
Maximum filesystem blocks=524288000
16 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912
正在寫入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

掛載邏輯卷。

[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  6.7G  816M  5.5G  13% /
tmpfs                         246M     0  246M   0% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/sr0                      4.2G  4.2G     0 100% /media/cdrom
/dev/mapper/vg1-lv1           2.0G   35M  1.8G   2% /mnt

管理LVM:

卷組的擴容

這裡我新增加一塊8G的空SCSI磁碟,並在其基礎上建立一個8G的物理卷。

將剛剛新建的8G大小的物理卷加入到vg1卷組中,實現對vg1卷組的擴容。

[root@localhost ~]# vgextend vg1 /dev/sdc1
  dev_is_mpath: failed to get device for 8:33
  No physical volume label read from /dev/sdc1
  Physical volume /dev/sdc1 not found
  Physical volume "/dev/sdc1" successfully created
  Volume group "vg1" successfully extended

檢視卷組資訊,注意看卷組容量。

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  14
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               15.99 GiB          //卷組的總容量已增加
  PE Size               4.00 MiB
  Total PE              4093
  Alloc PE / Size       2000 / 7.81 GiB
  Free  PE / Size       2093 / 8.18 GiB
  VG UUID               dY8zDo-vD43-DQB8-CpRs-Shla-kWfJ-OuDjhp

邏輯卷的擴容

這裡對已經掛載在/mnt目錄上的lv1邏輯捲進行擴容,將其大小變為10GB。

[root@localhost ~]# lvextend -L 10GB -n /dev/vg1/lv1
 Extending logical volume lv1 to 10.00 GiB
 Logical volume lv1 successfully resized

重設邏輯卷大小,只有正在使用的邏輯卷才需要重設大小。

[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg1/lv1 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg1/lv1 to 2621440 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 2621440 blocks long.

檢視此時lv1的容量,已實現動態擴容。

[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  6.7G  816M  5.5G  13% /
tmpfs                         246M     0  246M   0% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/sr0                      4.2G  4.2G     0 100% /media/cdrom
/dev/mapper/vg1-lv1           9.9G   37M  9.4G   1% /mnt