Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

素材狐 sucaihu.top發表於2020-12-10

lvm是一種基於邏輯的磁碟管理機制,將多個硬碟或者硬碟分割槽標記為獨立的物理卷,並將這些物理捲進行分組為媒體庫不同的卷組,最終從卷組中取出一定的空間建立一個邏輯卷。它通過特定演算法機制將不連續的磁碟空間變得連媒體庫續且容量巨大,讓儲存容量管理可以自由擴充套件與縮減,極大限度的提升了硬碟空間的使用率。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

lvm邏輯卷的突出優勢是方便擴充套件空間、擴充套件某一個掛載的空間,如果用分割槽的方式,對根的擴充套件是非常麻煩的,磁碟滿了,我們是無法擴充套件的,即使還有空間,那也是不能動的。分割槽一旦確定,就不可以修改。邏輯卷就是為了解決這個困擾二誕生的。

Physical Volume(物理卷)的建立

邏輯卷支援將完整磁碟或者磁碟分割槽建立為物理卷,為了同時展示磁碟與分割槽兩種使用情景。自然使用如下圖的sdb1分割槽、sdc硬碟作為演示。

 

硬碟分割槽我們需要預先處理一下,我們按照常規操作建立好硬碟分割槽後,還需要將硬碟分割槽系統id修改為8e。

Hex code (type L to list codes): L
 
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
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: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x33720a7a
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM

自然使用pvcreate命令把/dev/sdb1 和/dev/sdc建立為Physical Volume(物理卷),並使用pvs和pvdisplay檢視當前物理卷與物理卷詳細資訊

 

Volume Group(卷組)的建立

通過pvdisplay命令我們檢視到了物理卷的相關資訊,可以看見VG Name一欄為空,這表示當前物理卷沒有加入任何卷組。

自然使用vgcreate命令建立一個名為vg0的卷組,並將/dev/sdb1 和/dev/sdc加入到vg0這個卷組當中,並檢視卷組vg0的相關資訊。

我們可以看到vg0的大小VG Size:30GiB=sdb1(10G)+sdc(20GB),說明兩個物理卷已經成功加入到了卷組vg0。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

Magical Volume(邏輯卷)的建立

我們已經將分割槽sdb1和硬碟sdc建立為物理卷併成功將他們加入了卷組vg0當中,這是他們已經組成了一個相對巨大且連續的”大硬碟”。那麼我們接下來就是使用他們,現在我們來常見邏輯卷,你可以簡單地將之理解為”給這個大硬碟分割槽”。

這裡自然使用lvcreate命令,在卷組vg0中建立了一個名為lv_mysql,大小為5G的邏輯卷,並使用pvdisplay命令檢視這個邏輯卷的相關資訊。

 

Magical Volume(邏輯卷)的使用

通過lsblk命令我們可以看見,已經建立了一個別名為vg0-lv_mysql(dm-0)的邏輯卷分割槽,我們要如何使用它呢?既然他現在是一個分割槽,那麼我們按照平時建立分割槽的思路(分割槽、格式化檔案系統、掛載)操作即可。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

使用mkfs.ext4命令將/dev/vg0/lv_mysql格式化ext4格式的檔案系統

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復自然將/dev/vg0/lv_mysql掛載到/mysql這個資料夾上面,並使用df命令進行檢視。通過途中可以看見/dev/vg0/lv_mysql被以ext4的格式掛載到了/mysql下面。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

Magical Volume(邏輯卷)的擴充套件

我們只分配了5G的容量給lv_mysql這個邏輯卷。如果是傳統分割槽方式,我們只能是暫停服務後把資料轉移到一個容量更大的硬碟分割槽當中,再重啟服務。

lvm邏輯卷的方式可以讓我們在不暫停服務的情況下動態擴充套件分割槽的大小。通過vgdisplay命令列印的資訊,我們可以看到卷重vg0已經分配了5G的容量,還有25GB的閒置容量。

自然使用lvextend命令為lv_mysql增加了10GB空間,從圖中可以看出lv_mysql的容量從5.00GiB改變為15.00GiB。我們對lvm分割槽lv_mysql的空間的擴充套件那操作已經完成。我們還需要對檔案系統進行擴充套件,我們的檔案系統為etx4格式,所以我們使用resize2fs命令對lv_mysql的檔案系統進行動態擴充套件。
Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復利用df命令,我們可以看見/mysql的容量已經成功擴充套件到了15GB。

Magical Volume(邏輯卷)的縮減

利用lvm邏輯卷的機制,我們可以對容量進行擴充套件,相對的我們也可以對容量進行縮減。我們先利用mount命令將/mysql進行解除安裝,並檢視邏輯卷lv_mysql的最新資訊。

使用e2fsck命令檢查檔案系統完整性,再使用resize2fs命令把邏輯卷lv_mysql的檔案系統壓縮至10GB。

對檔案系統進行壓縮一定要慎重,這個操作可能會造成檔案的丟失。舉例:已經存在30GB的資料,你要將檔案系統壓縮至10GB,那麼必然會造成資料的丟失

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

檔案系統壓縮完成後,我們使用lvreduce命令對lv_mysql分割槽進行壓縮,執行過程中會給你一個警告,問你是否確定縮減分割槽大小。

縮減完成後,使用mount命令把lv_mysql掛載會/mysql目錄。然後使用df命令再次檢視掛載狀態。如圖所示,我們已經將名為lv_mysql的lvm邏輯卷從15GB縮減至10GB的容量。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

Magical Volume(邏輯卷)的遷移

通過pvdisplay命令我們發現卷組中,sdc這塊硬碟並沒有被使用。本著能少乾貨就少乾貨的原則,我們只需要遷移sdb這一塊硬碟就足夠了,那我們首先需要把sdc這塊硬碟移出卷組。

PS:如果都使用了,那你還是老實的全部遷移吧!!!

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

我們使用vgreduce把硬碟sdc移出vg0這個卷組,並使用pvdisplay再次檢視物理卷的資訊,可以看見sdc已經不屬於vg0這個卷組了。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

使用umount命令將檔案系統進行解除安裝。為了保障當前伺服器上的lv和vg和目標伺服器的lv和vg重名,我們需要將當前vg或目標伺服器vg進行重新命名。這裡我們將當前vg重新命名為newvg0。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

為了保證我們在遷移的過程中,其他使用者沒有在使用,保證資料安全。我們還需要使用vgchange命令把卷組設定為不可用狀態,通過lvdisplay命令可以看見LV狀態已經變成了NOT available。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復下面我們將邏輯卷設定為匯出狀態,使用vgexport命令把newvgo設定為匯出狀態,並用vgdisplay命令再次確認當前卷組狀態。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

下面我們就可以拆卸硬碟了,前部不要拆錯了。我們將sdb這塊硬碟安裝到目標伺服器上。

到了新伺服器,我們可以看見原來伺服器上的sdb硬碟,在這裡是sdf硬碟。

通過vgscan掃描當前系統中lvm卷組,使用vgchange命令將卷組newvg0下的邏輯卷設定為啟用狀態。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

使用lvdisplay命令,可以看見我們從原伺服器上遷移過來的邏輯卷newvg0的狀態已經為啟用狀態

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

最後,就是掛載檔案系統。至此,lvm邏輯卷的遷移就完成了。

LVM邏輯卷快照

lvm快照的原理是將當前檔案系統的檔案時間戳進行記錄,當檔案發生改變時,將舊版本的檔案推送到快照中。快照回滾時,只是將快照與當前邏輯捲進行合併,完成合並後刪除快照。

Lvm快照只是記錄當前時間檔案的變化,並不會進行完整的檔案備份,所以它的速度非常的快;快照只保留製作快照的時間,最原始的檔案版本

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

快照是儲存在當前卷組之中,所以要確保當然卷組擁有足夠的空間。

快照的大小,永遠小於等於快照時間時邏輯卷的大小,所以不需要分配太多的空間。

使用lvcreate命令為lv_mysql建立一個大小為1G名為lv_mysql_snap的快照。

 

通過lvdisplay命令可以看到快照lv_mysql_snap的相關資訊,從快照狀態一欄可以看到lv_mysql_snap的快照目標是lv_mysql。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復現在我們對lv_mysql下的檔案檔案進行一些修改,下面兩張圖片時內容修改前後的對比。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

 

LVM快照的恢復

在上面的內容中,我們已經完成了快照的製作。並且對檔案進行了一定修改,那麼下面我們利用快照對檔案進行恢復操作。

恢復記得對掛載關係進行取消。取消掛載後使用lvconvert命令對快照進行恢復,最後檢查檔案已經被恢復到了快照的時間點上。

Lvm邏輯卷管理、建立、使用、擴充套件、縮減、遷移、快照、恢復

快照恢復後它的使命就已經結束了,它會自動將自己刪除。

總結

centos預設的安裝方式就是採用lvm邏輯卷的機制劃分硬碟,這將有利於我們以後擴充套件根目錄的容量。以上操作前記得備份你的資料,對於資料的操作都要萬分小心。尤其是卷的縮減和檔案系統的縮減需要更加細心。可能你的一個Enter鍵,讓你哭到不行。

 

轉載導致有些教程圖片無法載入成功如有需要請檢視原文。

轉自:https://sucaihu.top/180/

相關文章