Linux LVM介紹及管理

什么是LVM?

LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,用來提高磁盤分區管理的靈活性。系統管理員可以通過LVM輕松的管理磁盤分區,如:將若干個磁盤分區或物理磁盤連接為一個整塊的卷組 (volumegroup),形成一個存儲池。管理員可以在卷組上隨意創建邏輯卷組(logicalvolumes),并進一步在邏輯卷組上創建文件系統。管理員通過LVM可以方便的調整存儲卷組的大小,并且可以對磁盤存儲按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:“development”和“sales”,而不是使用物理磁盤名“sda”和“sdb”。相對于普通的磁盤分區有很大的靈活性,使用普通的磁盤分區,當一個磁盤的分區空間不夠使用的時候,可能就會帶來很大的麻煩,而使用LVM可以很靈活的調整分區的大小并且數據不受影響。

基本術語

PV(物理卷,Physical Volume):指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。

VG(卷組,Volume Group):由多個物理卷組成,類似于非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷)

LV(邏輯卷,Logical Volume):類似于非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立文件系統

PE(物理塊,Physical Extent):每一個物理卷PV被劃分成為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。所以物理卷(PV)由大小等同的基本單元PE組成

LE(邏輯塊,Logical Extent):邏輯卷LV也被劃分為可被尋址的基本單位,稱為LE。在同一個卷組中,LE的大小和PE是相同的,并且一一對應

PV、VG、LV三者之間是有一定邏輯關系的,LVM是將一些零碎的磁盤分區(PV)合并成一個較大的磁盤(VG),然后在根據需要對這個較大的磁盤(VG)進行劃分成不同的小分區(LV),并且這些小分區(LV)是可以動態的擴展或縮小的。而PE是PV的基本組成單元,LE是LV的基本組成單元。


創建LVM

第1步:首先創建PV,PV的創建可以直接使用新的磁盤,也可以使用分區,如果使用分區的話需要在創建分區時將分區的標識改為8e( Linux LVM)。

創建PV的命令為:pvcreate [-f] DEVICE

查看PV的命令有:pvdisplay、pvs

#直接將一塊新的磁盤創建為PV
[root@fengl ~]# pvcreate /dev/sdb
#使用分區創建PV
[root@fengl ~]# fdisk -l /dev/sdc
...
   設備 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   8e  Linux LVM
[root@fengl ~]# pvcreate /dev/sdc1
#查看創建好的PV
[root@fengl ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb        lvm2 ---  20.00g 20.00g
  /dev/sdc1       lvm2 ---  20.00g 20.00g
[root@fengl ~]# pvdisplay 
  "/dev/sdd" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               zi9Sja-zARN-1fRG-qw5f-iPhH-7oeY-BiiZCP
  ...

第2步:創建VG,創建VG時必須指明卷組的名稱和使用哪些pv創建,可以使用-s選項指定PE的大小,PE的默認大小為4M,

具體命令為:vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

查看VG的命令有:vgdisplay、vgs

#創建一個名為vg0,PE大小為8M的VG卷組,并將/dev/sdb和/dev/sdc1加入到卷組中
[root@fengl ~]# vgcreate -s 8M vg0 /dev/sd{b,c1}
  Volume group "vg0" successfully created

#查看創建好的VG
[root@fengl ~]# vgs
   VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    2   0   0 wz--n- 39.98g 39.98g
[root@fengl ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg0
  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               39.98 GiB
  PE Size               8.00 MiB
  Total PE              5118
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5118 / 39.98 GiB
  VG UUID               AJzWEi-UKUx-MtEZ-wKkZ-K5eA-f9Tl-QKLhnU

第3步:創建LV,創建LV時必須指明從哪個卷組中創建,可以使用-L選項指定LV的大小,并且可以使用-n選項指定LV的名稱

具體命令為:lvcreate-L #[mMgGtT] -n NAME VolumeGroup

查看LV的命令有:lvdisplay、lvs

#創建一個名為lv0,大小為15G的LV
[root@fengl ~]# lvcreate -L 15G -n lv0 vg0
  Logical volume "lv0" created.
  
#查看創建好的LV
[root@fengl ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 15.00g                                                    
[root@fengl ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                rQMMHT-GV5D-Jquu-sgFD-4M0V-jrpf-Uu9bg8
  LV Write Access        read/write
  LV Creation host, time fengl, 2016-08-30 18:59:38 +0800
  LV Status              available
  # open                 0
  LV Size                15.00 GiB
  Current LE             1920
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

第4步:格式化、掛載

#格式化分區
[root@fengl ~]# mkfs.ext4 /dev/vg0/lv0 
#查看分區
[root@fengl ~]# blkid 
...
/dev/mapper/vg0-lv0: UUID="78248233-6e64-47ae-9392-2abf6a25fbf0" TYPE="ext4" 
#掛載到/mnt/lvm下,如果想開機自動掛載需要在/etc/fstab配置文件中添加掛載信息
[root@fengl ~]# mount UUID="78248233-6e64-47ae-9392-2abf6a25fbf0" /mnt/lvm

LVM管理

(1)擴容LV:lv的擴容需要兩步,第一步先擴容LV大小,這一步可以使用-L選項指定具體擴容到多少,或在原來的基礎上添加多大空間,也可以使用-l選項利用百分比的方式擴容,執行完第一步后查看LV確實擴容了,但是掛載的分區大小還是原來大小,如果是ext系列的文件系統可以使用resizefs命令重置大小,命令使用格式如下:

lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VG_NAME/LV_NAME   或

lvextend -l [+]#[%{VG|LV|PVS|FREE|ORIGIN}] /dev/VG_NAME/LV_NAME

resize2fs /dev/VG_NAME/LV_NAME

#將LV從15G擴容到20G
[root@fengl ~]# lvextend -L +5G /dev/vg0/lv0    #方法1
[root@fengl ~]# lvextend -L 20G /dev/vg0/lv0    #方法2
#使用百分比的方式擴容,如將VG0剩余的空間全部擴容給LV0
[root@fengl ~]# lvextend -l +100%FREE /dev/vg0/lv0

#重置大小
[root@fengl ~]# resize2fs /dev/vg0/lv0

(2)縮減LV:LV的縮減比擴容稍微麻煩一點,需要先取消掛載,然后使用e2fsck命令強制執行文件系統檢測,然后再使用resize2fs命令縮減文件系統大小到多大,注意縮減后的大小不能小于該分區下所有文件總量的大小,最后再使用lvreduce命令縮減邏輯卷大小到多大

lvreduce  -L  [-]#[bBsSkKmMgGtTpPeE]  /dev/VG_NAME/LV_NAME  或

lvreduce  -l  [-]#[%{VG|LV|FREE|ORIGIN}]  /dev/VG_NAME/LV_NAME

#卸載已經掛載的邏輯卷
[root@fengl ~]# umount /dev/vg0/lv0
#強制檢測邏輯卷
[root@fengl ~]# e2fsck -f /dev/vg0/lv0
#縮減文件系統大小為30G
[root@fengl ~]# resize2fs /dev/vg0/lv0 30G
#縮減邏輯卷大小為30G
[root@fengl ~]# lvreduce -L 30G /dev/vg0/lv0
#重新掛載
[root@fengl ~]# mount /dev/vg0/lv0 /mnt/lvm/

(3)擴容VG:卷組的擴容需要先增加PV,然后再將新的PV加入到VG中即可

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

#新建一個新的PV
[root@fengl ~]# pvcreate /dev/sdd
#擴容VG,將新的/dev/add加入到vg0
[root@fengl ~]# vgextend vg0 /dev/sdd

(4)縮減VG:將某個PV從VG中移除,需要注意的是如果要移除的PV已經被使用,需要先使用pvmove將其中的PE移出來

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

#先將/dev/sdd中的PE移動出來
[root@fengl ~]# pvmove /dev/sdd
#再縮減VG大小,即將/dev/sdd從vg0中移除
[root@fengl ~]# vgreduce vg0 /dev/sdd

(5)刪除lvm

#先卸載已經掛載的邏輯卷
[root@fengl ~]# umount /dev/vg0/lv0
#刪除LV
[root@fengl ~]# lvremove /dev/vg0/lv0
#刪除VG
[root@fengl ~]# vgremove /dev/vg0
#刪除pv
[root@fengl ~]# pvremove /dev/sd{b,ca,d}

原創文章,作者:苦澀咖啡,如若轉載,請注明出處:http://www.www58058.com/42050

(0)
苦澀咖啡苦澀咖啡
上一篇 2016-08-30
下一篇 2016-08-30

相關推薦

  • N25第七周RAID LV 概述及示例,swap創建,read 特殊用法以及bash腳本示例

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; mke2fs -t ext4 -b 2048 …

    Linux干貨 2017-01-04
  • 網絡管理之網絡配置

    一:博客 1 centos6網卡別名 在Linux系統中,我們可以在一塊物理網卡上配置多個IP地址,以此來實現類似子接口的功能,我們稱之為網卡別名。 設置網卡別名,先在/etc/sysconfig/network-scripts目錄下將eth0文件復制名為eth0:1的文件,復制文件中的1可隨意設置,但為方便管理建議按順序排列 注意要修改ifcfg-eth0…

    Linux干貨 2016-09-05
  • 編程命名中的7+1個提示

    前幾天Neo寫過《編程中的命名設計那點事》,這里也有另外一篇和程序命名的文章,可以從另一個角度看看。 1.- 變量應該是盡可能的望文知意。千萬不要使用教材中的命名方式。 好的變量: daysDateRange, flightNumber, carColor. 壞的變量: days, dRange, temp, data, aux… 在我們…

    Linux干貨 2015-04-03
  • 正則表達式及grep用法總結

    描述: grep: Global search REgular expression and Print outthe line. 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行; 模式:由正則表達式字符及文本字符所編寫的過濾條件 語法格式:grep [OPTIONS] PATTERN [FILE…] OPT…

    Linux干貨 2016-08-08
  • 系統管理之Systemd詳解(centos7)

    這篇著重講解下Syetemd的相關知識,systemd可以說是centos7上的重大改革,功能之強大媲美一個操作系統,那下面就從以下幾點來進行講解:CentOS7啟動Unit介紹服務管理和查看啟動排錯破解口令修復grub2 啟動流程: post–>BISO–>bootloader(MBR)–>kernel(ramdisk)–>…

    Linux干貨 2016-09-21
  • 22期第三周課堂作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who |cut -d" " -f 1 |uniq     2、取出最后登錄到當前系統的用戶的相關信息。 […

    Linux干貨 2016-08-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 11:44

    文章思路清晰,結構完整,lvm快照是用于數據庫的物理備份是基礎,所以希望作者對這部分也能詳細的進行描述跟總結。通讀全文能大概對lvm的工作當時有一個整體的理解,這是作者很用心的地方,加油.

欧美性久久久久