1、LVM簡介
bash
LVM是邏輯卷管理(Logical Volume Manager)的簡寫,它最先是IBM爲本身的AIX系統研發的存儲管理機制。Heinz Mauelshagen於1998年在Linux2.4內核上實現了LVM,它是在物理硬盤和分區直接之間創建一個邏輯層,以此來提升硬盤分區管理的靈活性,好比動態擴容和縮減。ide
完美解決磁盤動態擴容縮減的方法應該是在零停機前提下能夠自如對文件系統的大小進行調整,能夠方便實現文件系統跨越不一樣磁盤和分區。幸運的是Linux提供的邏輯盤卷管理(LVM,LogicalVolumeManager)機制就是一個完美的解決方案。ui
2、LVM相關術語介紹spa
物理存儲介質(The physical media):指系統的存儲設備,如硬盤等,是最低層的存儲單元。debug
物理卷(physical volume,PV):物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,包含有與LVM相關的管理參數。調試
卷組(Volume Group,VG):LVM卷組相似於非LVM系統中的物理硬盤,其由物理卷組成。能夠在卷組上建立一個或多個「LVM分區」(邏輯卷),LVM卷組由一個或多個物理卷組成。rest
邏輯卷(logical volume,LV):LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統(好比/home或者/usr等)。code
PE(physical extent,PE):每個物理卷被劃分爲稱爲PE(PhysicalExtents)的基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。server
LE(logical extent,LE):邏輯卷也被劃分爲被稱爲LE(LogicalExtents)的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,而且一一對應。ip
3、LVM的建立
LVM的結構:
上圖所示:LV是建立在VG之上,而VG則是由一個個的PV組成。
一)PV的建立:
構成PV的能夠是硬盤的物理分區,也能夠是自行建立的RAID卷。本文先以分區爲例進行說明,待後續介紹了RAID後再作補充。
1)格式化硬盤
在建立PV以前先要對硬盤進行分區,詳細的分區步驟以下所示:
[root@Domain01 ~]# fdisk /dev/sdb #對/dev/sdb進行分區 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x38607615. 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 #選擇分區類型,若是主分區已不夠用,請選e來建立擴展分區 Partition number (1-4): 1 #主分區1 First cylinder (1-15665, default 1): #直接回車默認從剩餘的第一個磁柱開始 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +20G #選擇大小爲20G Command (m for help): t #調整爲LVM的ID號 Selected partition 1 #若是隻要一個分區的時候會默認選擇 Hex code (type L to list codes): 8e #LVM的ID號 Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): n #繼續新增分區 Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (2613-15665, default 2613): Using default value 2613 Last cylinder, +cylinders or +size{K,M,G} (2613-15665, default 15665): +20G Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): w #保存並退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@Domain01 ~]# partx -a /dev/sdb #讓內核讀到分區信息,多執行幾回 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 [root@Domain01 ~]# cat /proc/partitions #內核已讀到/dev/sdb的分區信息 major minor #blocks name 8 0 125829120 sda 8 1 307200 sda1 8 2 123489280 sda2 8 3 2031616 sda3 8 16 125829120 sdb 8 17 20980858 sdb1 8 18 20980890 sdb2 8 32 125829120 sdc
以相同的方法對/dev/sdc進行分區獲得/dev/sdc1和/dev/sdc2。
2)建立PV
建立物理卷,物理卷(Physical Volumes)簡稱PV,是在磁盤的物理分區或與磁盤分區具備一樣功能的設備(如RAID)上建立而來。它只是在物理分區中劃出了一個特殊的區域,用於記載與LVM相關的管理參數。建立PV的命令:pvcreate 很直白也很好記憶。
[root@Domain01 ~]# pvcreate --help pvcreate: Initialize physical volume(s) foruse by LVM #用於將物理硬盤分區初始化爲物理卷,以便被LVM使用 pvcreate [--norestorefile] [--restorefile file] [-d|--debug] #調試,基本用不到 [-f[f]|--force [--force]] #強制建立物理卷,無需用戶確認,慎用。 [-h|-?|--help] #獲取幫助 [--labelsector sector] [-M|--metadatatype 1|2] [--pvmetadatacopies #copies] [--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]] [--dataalignment Alignment[bBsSkKmMgGtTpPeE]] [--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]] [--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE] [-t|--test] [-u|--uuid uuid] #指定設備的UUID [-v|--verbose] [-y|--yes] [-Z|--zero {y|n}] 是否利用前面四個扇區 [--version] PhysicalVolume [PhysicalVolume...] [root@Domain01 ~]# pvcreate /dev/sd[bc][12] #將格式化出來的物理磁盤分區建立爲PV Physical volume "/dev/sdb1"successfully created Physical volume "/dev/sdb2"successfully created Physical volume "/dev/sdc1"successfully created Physical volume "/dev/sdc2"successfully created
[root@Domain01 ~]# pvdisplay "/dev/sdb1"is a new physical volume of "20.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 20.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID FVz2es-Db5F-vEYN-AjVk-f4Ft-puB5-ATTpww
至此PV建立成功。
3)刪除PV
刪除PV使用pvremove。
[root@server ~]# pvremove /dev/sdb3 Labels on physical volume "/dev/sdb3" successfully wiped