首頁 > 軟體

LVM邏輯卷管理

2020-06-16 17:09:21

LVM邏輯卷管理,在實際環境中被廣泛的應用。使用LVM的最大的好處在與對磁碟分割區大小和系統分割區結構可以靈活的管理。它可以在伺服器上新增加一塊磁碟而做到不改變系統的分割區結構,可動態增加邏輯分割區大小,也可已在需要備份大量資料時,利用快照捲完成對某一邏輯卷的快照使得在資料備份時確保資料的一致性。所以在大多數場景中對LVM的使用是比較多的,所以在系統安裝時建議使用LVM進行分割區管理,LVM的原理上可以簡單理解為是在物理塊上做整合重新劃分成邏輯上的塊,使得在後期管理時可以新增減少其大小,相當於Oracle中表空間一樣,當然在很多資料裡都有比較專業的解釋,在此就不做過多的篇幅介紹了。這裡就以平時管理使用上比較常用的幾個管理指令來說明。在介紹之前需要提及下是lvm的所有指令都是呼叫dmsetup來實現管理的,所以也可以通過dmsetup指令來完成LVM邏輯卷管理,只不過dmsetup指令引數太多過於複雜,所以才出現了lvm的管理軟體,這樣使得無論在是在LV還是PV和VG管理上指令統一、便於平時LVM邏輯卷的管理。需要注意的一點是現在的LVM軟體大多都是lvm2,它比LVM做了進一步的改進,所以在LVM邏輯卷管理的過程中需要確保系統中有安裝lvm2,如果沒有安裝可以通過yum或apt等包管理工具進行安裝。LVM邏輯管理中比較常用的管理使用也比較簡單,在此簡單的舉列說明。

下面就先說一說LVM中的邏輯卷擴容管理:

動態擴容:
[root@localhost ~]# lvextend -L +3G -f -r /dev/VolGroup/LogVol02
#向LogVol02卷中增加3GB的空間並啟用,注意如果是3GB則是修改成3GB,這個區別還是很大的且在增加空間時,需要確保VG中有足夠的空間在每次需要修改之可以vgdisplay檢視下卷組中詳情
#其中-r引數就是在擴容後增加物理邊界,啟用邏輯卷分割區
#resize2fs -p /dev/VolGroup/LogVol02
增加新邏輯卷:
lvcreate -L 200G -n LogVol02 VolGroup
#在VolGroup捲組內建立一個新的邏輯卷
mkfs.ext4 /dev/VolGroup/LogVol02
mount /dev/VolGroup/LogVol02 /data
#格式化後掛載新的邏輯卷
lvremove /dev/VolGroup/Vol01
 
移除操作:
#刪除邏輯卷
vgremove VolGroup
#刪除捲組,做這個刪除操作之前需要注意是否有資料,應做好相應的備份,一旦刪除資料是無法找回的
 
邏輯捲改名:
lvscan
#在操作前需要lvscan檢視下邏輯卷的名字
lvrename /dev/VolGroup/LogVol01 /dev/VolGroup/Lv_root改名,在改後還需要去/etc/fstab檔案中修改,這樣在下次重新啟動伺服器是系統的磁碟分割區能正確的自動掛載當然如果是修改LVM下的/目錄或者是swap目錄的話,還需要去修改引導檔案,如CentOS 6中的grub.conf檔案
 
LVM邏輯卷組中加新磁碟:
先建立格式化新磁碟分割區,並且建立LVM:
 
[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 0xb5a0e535.
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): p
 
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
64 heads, 32 sectors/track, 51200 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb5a0e535
 
  Device Boot      Start        End      Blocks  Id  System
 
Command (m for help): n
Command action
  e  extended
  p  primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-51200, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-51200, default 51200): 
Using default value 51200
 
Command (m for help): p
 
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
64 heads, 32 sectors/track, 51200 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb5a0e535
 
  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1      51200    52428784  83  Linux
 
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): p
 
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
64 heads, 32 sectors/track, 51200 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb5a0e535
 
  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1      51200    52428784  8e  Linux LVM
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# mkfs.ext4 /dev/sdb1#格式化分割區
[root@localhost ~]# pvcreate /dev/sdb1#建立物理卷,建立好後可以使用pvscan檢視
[root@localhost ~]# vgextend VolGroup /dev/sdb1把建立過物理卷的分割區新增至邏輯卷組內

  在此LVM中的比較常用的擴容還有建立新的邏輯卷組等相關操作,總之使用方法都大致差不錯,在此不做一一的介紹了,下面就開始說一說LVM中的收縮,需要注意的是LVM的收縮是和擴容不同的,在做LVM的磁碟收縮時是無法做到分割區線上動態擴容的,在做LVM的的收縮之前需要先umount邏輯卷分割區然後在做相應的磁碟檢查操作後才能縮減,所以,如果在做/目錄分割區縮減時是無法在伺服器線上縮減,必須系統的救援模式下進行,因此在做LVM邏輯卷分割區縮減前需要注意,操作流程也不複雜就是擴容的相反的步驟:
[root@localhost ~]# umount /dev/VolGroup/Lv_data
[root@localhost ~]# e2fsck -f /dev/VolGroup/Lv_data#強制質檢磁碟
[root@localhost ~]# resize2fs /dev/VolGroup/Lv_data -10G#先減小檔案分割區的大小
[root@localhost ~]# lvreduce -L -10G /dev/VolGroup/Lv_data#最後在縮減卷組
[root@localhost ~]# mount -a

  這樣就是LVM中邏輯卷中比較常用的擴容、縮減的管理,除這兩者之外還有一個比較特殊且實用的功能——快照卷,在平時需要做大批次資料備份時就比較實用的一種方式,利用快照卷可以做到不停止相應的業務情況下來進行資料的備份:
[root@localhost ~]# lvcreate -s -L 5G -n Lv_local_backup -p r /dev/mapper/VolGroup-Lv_local 
  Logical volume "Lv_local_backup" created.
  #建立一個5G大小的唯讀快照卷,快照捲的大小必須要大於等於Used,不然建立出來的快照捲沒有實際意義
[root@localhost ~]# mount /dev/VolGroup/Lv_local_backup /mnt/
mount: block device /dev/mapper/VolGroup-Lv_local_backup is write-protected, mounting read-only

在實際生產環境中可以用根據實際情況建立相應邏輯分割區的快照捲用來做資料備份,在備份完相應資料或者是不用時可以刪除:
[root@localhost /]# umount /mnt/
[root@localhost mnt]# lvscan 
  ACTIVE            '/dev/VolGroup/Lv_root' [10.27 GiB] inherit
  ACTIVE            '/dev/VolGroup/Lv_data' [5.16 GiB] inherit
  ACTIVE  Original '/dev/VolGroup/Lv_local' [5.11 GiB] inherit
  ACTIVE  Snapshot '/dev/VolGroup/Lv_local_backup' [5.00 GiB] inherit
  [root@localhost mnt]# lvremove /dev/VolGroup/Lv_local_backup
Do you really want to remove active logical volume Lv_local_backup? [y/n]: y
  Logical volume "Lv_local_backup" successfully removed

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146254.htm


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