1. 程式人生 > >Centos 7.4 服務器配置LVM(邏輯卷管理)

Centos 7.4 服務器配置LVM(邏輯卷管理)

rec lvremove acc done linu fff sequence ado centos

本章Blog相關知識點:


LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和 分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。LVM將若幹個磁盤分區連接為一個整塊的卷組 (volumegroup),形成一個存儲池。管理員可以在卷組上隨意創建邏輯卷組(logicalvolumes),並進一步在邏輯卷組上創建文件系 統。

與傳統的磁盤與分區相比,LVM為計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的為應用與用戶分配存儲空間。在LVM管理下的存儲卷可以按需要隨時改變大小與移除(可能需對文件系統工具進行升級)。 LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立文件系統。

邏輯卷管理概念:

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

卷組(Volume Group)——LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷PV組成。可以在卷組上創建一個或多個"LV分區"(邏輯卷),VG卷組由一個或多個物理卷PV組成。

邏輯卷(logical volume)——LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。

PE(physical extent)——每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。

LE(logical extent)——邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。

如下圖所示PV、VG、LV三者關系:

技術分享圖片

設備文件名: /dev/卷組名/邏輯卷名 或 /dev/mapper/卷組名-邏輯卷名

物理卷管理命令:pv

pvcreate(創建pv), pvremove(移除pv), pvmove(移除卷內數據), pvscan(顯示所有的pv卷), pvs(查看pv卷簡要信息), pvdisplay (看pv卷詳細信息)

卷組管理命令:vg

vgcreate(創建vg), vgremove(移除vg), vgs(查看vg卷簡要信息), vgdisplay (查看vg卷詳細信息), vgextend(擴展vg卷組), vgreduce(縮減vg卷組), vgrename (改名)

# vgcreate -s PE_size 指定PE的大小 ,默認是4M

邏輯卷的管理命令:lv

lvcreate, lvremove, lvs, lvdisplay , lvextend(擴展lv卷組) , lvreduce(縮減lv卷組)

# lvcreate 創建lv邏輯卷

-n 指定lv名稱

-L 邏輯卷大小

-s 創建快照

-p 指定模式

# lvextend 擴展lv大小

-L [+] 5G 擴展[了]到5G

獲取以上命令幫助方法: # command -h ,例: #lvcreate -h


配置管理LVM實驗(邏輯卷管理)


系統環境:

系統:Centos 7.4 最小化安裝

LVM管理工具:lvm2-2.02.171-8.el7.x86_64

磁盤分區:掛載/dev/sdb 、/dev/sdc 、/dev/sdd、/dev/sde 、/dev/sdf、 /dev/sdg 共6塊磁盤

實驗目的:

1、通過LVM管理工具,分別創建pv、vg 和lvm。

2、模擬擴展和縮減LV,模擬擴展或縮減VG

3、創建lv快照

4、卸載LVM,刪除LVM

實驗步驟:

一、設置磁盤(虛擬機中增加6塊10G磁盤),安裝LVM 管理工具。

1、在Vmware 虛擬機中,增加6塊磁盤 。

技術分享圖片

2查看系統版本,驗證lvm*管理工具是否安裝 並查看磁盤信息

[root@study ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@study ~]# rpm -qa |grep lvm*
lvm2-libs-2.02.171-8.el7.x86_64
lvm2-2.02.171-8.el7.x86_64
[root@study ~]# fdisk -l | grep "^Disk./dev"  
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdf: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdg: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/mapper/VG-root: 16.1 GB, 16106127360 bytes, 31457280 sectors
Disk /dev/mapper/VG-home: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/mapper/VG-var: 10.7 GB, 10737418240 bytes, 20971520 sectors

二、對增加的磁盤進行分區並修改分區類型為8e(Linux LVM),並驗證分區結果

[root@study ~]# echo 'n      
> p
> 1
> 
> 
> t
> 8e
> w '|fdisk /dev/sdb     ## 為/dev/sdb磁盤創建分區1 ,分配分區大小為磁盤總空間。並調整類型為8e(LVM)
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3bb09eb9.

Command (m for help): Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): Selected partition 1
Hex code (type L to list all codes): Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@study ~]...   ## 以同樣的命令方式對其他5塊磁盤進行操作
[root@study ~]# fdisk -l | grep "LVM$"  ## 驗證磁盤分區結果
/dev/sda3        12584960   251658239   119536640   8e  Linux LVM
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM
/dev/sdc1            2048    20971519    10484736   8e  Linux LVM
/dev/sdd1            2048    20971519    10484736   8e  Linux LVM
/dev/sde1            2048    20971519    10484736   8e  Linux LVM
/dev/sdf1            2048    20971519    10484736   8e  Linux LVM
/dev/sdg1            2048    20971519    10484736   8e  Linux LVM
[root@study ~]# reboot   ## 內核重讀磁盤分區
[root@study ~]# cat /proc/partitions  | grep "1$"    ##驗證內核是否加載了磁盤分區
   8        1    2097152 sda1
   8       17   10484736 sdb1
   8       33   10484736 sdc1
   8       49   10484736 sdd1
   8       65   10484736 sde1
   8       81   10484736 sdf1
   8       97   10484736 sdg1

三、創建PV 物理卷

[root@study ~]# pvcreate /dev/sd{b..e}1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sde1" successfully created.
[root@study ~]# pvs
  PV         VG Fmt  Attr PSize    PFree  
  /dev/sda3  VG lvm2 a--  <114.00g <69.00g
  /dev/sdb1     lvm2 ---   <10.00g <10.00g
  /dev/sdc1     lvm2 ---   <10.00g <10.00g
  /dev/sdd1     lvm2 ---   <10.00g <10.00g
  /dev/sde1     lvm2 ---   <10.00g <10.00g
[root@study ~]# pvscan 
  PV /dev/sda3   VG VG              lvm2 [<114.00 GiB / <69.00 GiB free]
  PV /dev/sdd1                      lvm2 [<10.00 GiB]
  PV /dev/sde1                      lvm2 [<10.00 GiB]
  PV /dev/sdc1                      lvm2 [<10.00 GiB]
  PV /dev/sdb1                      lvm2 [<10.00 GiB]
  Total: 5 [153.99 GiB] / in use: 1 [<114.00 GiB] / in no VG: 4 [<40.00 GiB]
  [root@study ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VG
  PV Size               <114.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              29183
  Free PE               17663
  Allocated PE          11520
  PV UUID               2Ksdp4-23Ia-jnvA-BeO4-31O2-chlO-I2CQTc
   
  "/dev/sdd1" is a new physical volume of "<10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               <10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MjYIgP-smsp-E72x-4eOQ-kQpG-vIAA-axaKXp
  ...

說明:#pvcreate /dev/sd{b..g}1 創建pv物理卷;

# pvdisplay | pvs | pvscan 查看pv狀態信息

PV Name, 物理卷名;

VG Name, 所屬卷組名;

PV Size,物理卷大小;

PV UUID ,PV UUID 號

四、創建myvg 卷組 ,指定PE大小為16M

[root@study ~]# vgcreate /dev/myvg -s 16M /dev/sd{b..e}1  
  Volume group "myvg" successfully created
[root@study dev]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   4   0   0 wz--n-  <39.94g <39.94g
[root@study dev]# vgscan
  Reading volume groups from cache.
  Found volume group "VG" using metadata type lvm2
  Found volume group "myvg" using metadata type lvm2
[root@study dev]# pvs                 
  PV         VG   Fmt  Attr PSize    PFree  
  /dev/sda3  VG   lvm2 a--  <114.00g <69.00g
  /dev/sdb1  myvg lvm2 a--     9.98g   9.98g
  /dev/sdc1  myvg lvm2 a--     9.98g   9.98g
  /dev/sdd1  myvg lvm2 a--     9.98g   9.98g
  /dev/sde1  myvg lvm2 a--     9.98g   9.98g
[root@study dev]# pvdisplay 
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               myvg
  PV Size               <10.00 GiB / not usable 15.00 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              639
  Free PE               639
  Allocated PE          0
  PV UUID               ZbZyCp-MiC8-Nnha-npKK-aVsr-ahTB-CIs2ok
  ...
[root@study dev]# vgdisplay 
   
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               <39.94 GiB
  PE Size               16.00 MiB
  Total PE              2556
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2556 / <39.94 GiB
  VG UUID               hgiXN3-e8Z1-NLL2-tJ2q-hVtD-t2BO-i7uafQ

說明:#vgcreate myvg -s 16M /dev/sd{b..e}1 創建myvg1卷組,並指定PE大小為16M;

# pvdisplay | pvs | pvscan 查看pv狀態信息

PE Size ,PE的大小16M,默認為4MB

Total PE,PE的總數量

Free PE / Size ,空閑PE的數量及大小

# vgdisplay | vgs |vgscan 查看vg狀態信息

VG name,VG名字

VG Size ,VG容量

五、創建mylv 邏輯卷並查看pv,vg及lv狀態, 格式化lv邏輯卷並實現開機掛載

[root@study dev]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home VG   -wi-ao---- 20.00g                                                    
  root VG   -wi-ao---- 15.00g                                                    
  var  VG   -wi-ao---- 10.00g                                                    
  mylv myvg -wi-a----- 20.00g  
[root@study dev]# lvscan 
  ACTIVE            '/dev/VG/root' [15.00 GiB] inherit
  ACTIVE            '/dev/VG/home' [20.00 GiB] inherit
  ACTIVE            '/dev/VG/var'  [10.00 GiB] inherit
  ACTIVE            '/dev/myvg/mylv' [20.00 GiB] inherit 
[root@study dev]# lvdisplay 
 ...
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                7aaK0H-sUpW-KYBL-awJl-1Jr9-Sewp-trSQi0
  LV Write Access        read/write
  LV Creation host, time study.itwish.cn, 2018-02-04 16:33:22 +0800
  LV Status              available
  # open                 0
  LV Size                20.00 GiB
  Current LE             1280
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
 [root@study dev]# pvs
  PV         VG   Fmt  Attr PSize    PFree  
  /dev/sda3  VG   lvm2 a--  <114.00g <69.00g
  /dev/sdb1  myvg lvm2 a--     9.98g      0 
  /dev/sdc1  myvg lvm2 a--     9.98g      0 
  /dev/sdd1  myvg lvm2 a--     9.98g   9.95g
  /dev/sde1  myvg lvm2 a--     9.98g   9.98g
[root@study dev]# pvscan 
  PV /dev/sda3   VG VG              lvm2 [<114.00 GiB / <69.00 GiB free]
  PV /dev/sdb1   VG myvg            lvm2 [9.98 GiB / 0    free]
  PV /dev/sdc1   VG myvg            lvm2 [9.98 GiB / 0    free]
  PV /dev/sdd1   VG myvg            lvm2 [9.98 GiB / 9.95 GiB free]
  PV /dev/sde1   VG myvg            lvm2 [9.98 GiB / 9.98 GiB free]
  Total: 5 [153.93 GiB] / in use: 5 [153.93 GiB] / in no VG: 0 [0   ]
[root@study dev]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   4   1   0 wz--n-  <39.94g <19.94g
[root@study dev]# vgscan 
  Reading volume groups from cache.
  Found volume group "VG" using metadata type lvm2
  Found volume group "myvg" using metadata type lvm2
[root@study dev]# vgdisplay 
 ...
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               <39.94 GiB
  PE Size               16.00 MiB
  Total PE              2556
  Alloc PE / Size       1280 / 20.00 GiB
  Free  PE / Size       1276 / <19.94 GiB
  VG UUID               hgiXN3-e8Z1-NLL2-tJ2q-hVtD-t2BO-i7uafQ
[root@study dev]# ls /dev/mapper/
control  myvg-mylv  VG-home  VG-root  VG-var
[root@study dev]# ls /dev/myvg/
mylv
[root@study dev]# mke2fs -t ext4 -m 2 -L mylvdata /dev/mapper/myvg-mylv  ##創建文件系統
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=mylvdata
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@study dev]# mount /dev/mapper/myvg-mylv /mylv/    ##掛載
[root@study dev]# ls /mylv/
lost+found
[root@study dev]# mount | grep "^/dev"
/dev/mapper/VG-root on / type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/VG-home on /home type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/VG-var on /var type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/myvg-mylv on /mylv type ext4 (rw,relatime,seclabel,data=ordered)
[root@study dev]# df -h | grep "^/dev"
/dev/mapper/VG-root     15G  1.2G   13G   9% /
/dev/sda1              2.0G  116M  1.7G   7% /boot
/dev/mapper/VG-home     20G   45M   19G   1% /home
/dev/mapper/VG-var     9.8G  200M  9.1G   3% /var
/dev/mapper/myvg-mylv   20G   45M   20G   1% /mylv
[root@study dev]# vi /etc/fstab   ## 配置開機自動掛載
#
# /etc/fstab
# Created by anaconda on Sun Jan 28 12:27:18 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VG-root     /                       ext4    defaults        1 1
UUID=085b953d-5803-45df-b9d9-dc0ff7f92a3d /boot                   ext4    defa
ults        1 2
/dev/mapper/VG-home     /home                   ext4    defaults        1 2
/dev/mapper/VG-var      /var                    ext4    defaults        1 2
UUID=4169cca6-5a09-46fe-a2a7-64eba563b00a swap                    swap    defa
ults        0 0
/dev/myvg/mylv         /mylv                    ext4    defaults         0 2

說明:#lvcreate -n mylv -L 20G myvg 從myvg 卷組中分配20G並創建mylv邏輯卷;-n 指定LVM名字 ,-L 分配容量大小

# lvdisplay | lvs | lvscan 查看lv狀態信息

LV Path ,LV的路徑

LV Name, LV的名字VG Name所屬的VG

LV Size , LV的大小

六、擴展或縮減mylv 邏輯卷

LVM最大的優勢是可以對磁盤進行動態管理,而且不會丟失現有的數據。

1、擴展LVM的思路:

  • 先確定擴展的大小,並確保所屬的卷組有足夠的剩余空間

  • 擴展物理邊界 ,

    卸載邏輯卷umount ;

    通過命令e2fsck檢查lv邏輯卷 ;

    # lvextend -L 【+】Size /path/to/lv_device

  • 擴展邏輯邊界

    # resize2fs /path/to/lv_device Size

[root@study ~]# cp -af /boot/ /mylv/
[root@study ~]# ls /mylv/
boot  lost+found
[root@study ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ...                                              
  mylv myvg -wi-a----- 20.00g                                                    
[root@study ~]# df -lh 
..
/dev/mapper/myvg-mylv   20G  154M   19G   1% /mylv
...
[root@study ~]# vgs      ##確保剩余空間 ,擴展的大小必須小於卷組剩余空間大小,myvg剩余vg大小為19.94G
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   4   1   0 wz--n-  <39.94g <19.94g
[root@study ~]# umount /mylv/   ##卸載磁盤分區/mylv/
[root@study ~]# e2fsck -fy /dev/mapper/myvg-mylv   ##檢查並修復磁盤
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
mylvdata: 338/1310720 files (0.3% non-contiguous), 154377/5242880 blocks
[root@study ~]# lvextend -L +5G /dev/mapper/myvg-mylv   ##為LV邏輯卷擴展增加5G空間
  Size of logical volume myvg/mylv changed from 20.00 GiB (1280 extents) to 25.00 GiB (1600 extents).
  Logical volume myvg/mylv successfully resized.
[root@study ~]# lvs   ##lv卷增加到25G空間
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ...                                           
  mylv myvg -wi-ao---- 25.00g    
[root@study ~]# resize2fs /dev/mapper/myvg-mylv   ##為/dev/mapper/myvg-mylv擴展邏輯邊界
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mylv; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/myvg-mylv is now 6553600 blocks long.
[root@study ~]# df -lh    ##查看磁盤大小
Filesystem             Size  Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv   25G  154M   24G   1% /mylv 
[root@study ~]# ls /mylv/   ##確認磁盤數據存在
boot  lost+found

2、縮減LVM思路:

  • 卸載邏輯卷umount ;

  • 通過命令e2fsck檢查lv邏輯卷 ;

  • 縮減LVM邏輯卷邏輯邊界(確保縮減後的空間大小依然能存儲原有的所有數據);

    # resize2fs /path/to/lv_device Size

  • 縮減物理邊界

    # lvreduce -L [-] size /path/to/lv_devcie

  • 重新掛載

[root@study ~]# lvs   ##確認lv卷空間大小
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ...                                           
  mylv myvg -wi-ao---- 25.00g  
[root@study ~]# df -lh    ##查看磁盤大小
Filesystem             Size  Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv   25G  154M   24G   1% /mylv 
[root@study ~]# umount /dev/myvg/mylv 
[root@study ~]# e2fsck -fy /dev/mapper/myvg-mylv 
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
mylvdata: 338/1638400 files (0.3% non-contiguous), 174937/6553600 blocks
[root@study ~]# resize2fs /dev/mapper/myvg-mylv 15G   ##縮減邏輯邊界空間大小為15G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/myvg-mylv to 3932160 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 3932160 blocks long.
[root@study ~]# lvreduce -L 15G /dev/mapper/myvg-mylv  ##縮減lv卷大小為15G
  WARNING: Reducing active logical volume to 15.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 25.00 GiB (1600 extents) to 15.00 GiB (960 extents).
  Logical volume myvg/mylv successfully resized.
[root@study ~]# mount /dev/mapper/myvg-mylv /mylv/
[root@study ~]# df -lh
Filesystem             Size  Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv   15G  150M   15G   2% /mylv
[root@study ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ...                                               
  mylv myvg -wi-ao---- 15.00g

說明:# e2fsck -fy /dev/mapper/myvg-mylv 強制檢查文件系統; -f 強制

#lvreduce -L 15G /dev/myvg-mylv 分配到mylv邏輯卷大小為5G; -L 分配容量大小

# lvextend -L +5G /dev/mapper/myvg-mylv 擴展5G容量分配到mylv1邏輯卷; -L 分配容量大小 +5G 擴展5G

# resize2fs /dev/mapper/myvg-mylv 擴展文件系統與邏輯卷大小一致

# resize2fs /dev/mapper/myvg-mylv 15G 縮減邏輯邊界空間大小為15G

七、擴展或縮減myvg 卷組

1、擴展vg卷組思路

  • 準備要添加的物理卷

  • 添加物理卷至卷組中

    # vgextend vg_name /path/to/pv_devcie

[root@study ~]# pvcreate /dev/sd{f,g}1
  Physical volume "/dev/sdf1" successfully created.
  Physical volume "/dev/sdg1" successfully created.
[root@study ~]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   4   1   0 wz--n-  <39.94g <24.94g
[root@study ~]# vgextend myvg /dev/sd{g,f}1  ##擴展2個磁盤分區到myvg卷組    
  Volume group "myvg" successfully extended
[root@study ~]# vgs    ## 卷組大小增加20G空間
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   6   1   0 wz--n-  <59.91g <44.91g

2、縮減vg卷組思路

  • 去頂要移除的物理卷的總空間大小,要小於vg當前的空閑空間大小

  • 將要移除的物理卷上的數據移動至其他PV

    # pvmove /path/to/pv_device

  • 縮減vg

    # vgremove vg_name /path/to/pv_device

[root@study ~]# vgs  ##磁盤卷組空閑free空間為44.91G
  VG   #PV #LV #SN Attr   VSize    VFree  
  VG     1   3   0 wz--n- <114.00g <69.00g
  myvg   6   1   0 wz--n-  <59.91g <44.91g
[root@study ~]# pvs   ## 確認分區/dev/sdb1 和分區/dev/sdc1分區被使用,存有數據
  PV         VG   Fmt  Attr PSize    PFree  
  /dev/sda3  VG   lvm2 a--  <114.00g <69.00g
  /dev/sdb1  myvg lvm2 a--     9.98g      0 
  /dev/sdc1  myvg lvm2 a--     9.98g  <4.97g
  /dev/sdd1  myvg lvm2 a--     9.98g   9.98g
  /dev/sde1  myvg lvm2 a--     9.98g   9.98g
  /dev/sdf1  myvg lvm2 a--     9.98g   9.98g
  /dev/sdg1  myvg lvm2 a--     9.98g   9.98g
[root@study ~]# pvmove /dev/sdf1   ##轉移數據
  No data to move for myvg
[root@study ~]# pvmove /dev/sdg1
  No data to move for myvg
[root@study ~]# vgreduce myvg /dev/sd{f,g}1   ##縮減vg卷組,刪除分區/dev/sdf1 和分區/dev/sdg1
  Removed "/dev/sdg1" from volume group "myvg"
  Removed "/dev/sdf1" from volume group "myvg"
[root@study ~]# pvremove /dev/sd{g,f}1   ##刪除pv卷
  Labels on physical volume "/dev/sdg1" successfully wiped.
  Labels on physical volume "/dev/sdf1" successfully wiped.

說明:#vgextend myvg /dev/sd{f,g}1 擴展分區/dev/sdf1和分區/dev/sdg1到vg卷組

#pvmove /dev/sdg1 將分區/dev/sdg1中的數據轉移到其他分區

# vgreduce myvg /dev/sd{f,g}1 在myvg卷組中縮減刪除pv分區/dev/sdg1,/dev/sdf1

# pvremove /dev/sd{g,f}1 刪除pv卷
八、創建LVM快照卷,完成數據備份及還原

1、實現思路

  • 創建快照

    # lvcreate -s -L size -n Name -p r /path/to/original_lv_device

  • 掛載

    # mount /dev/mapper/myvg_name /media 例 # mount /dev/mapper/myvg-test--snap /media/

  • 把掛載數據備份

    tar -zcf /root/media.tar.gz /media/*

  • 卸載快照卷 ,移除快照卷

    lvremove /dev/myvg/test-snap

  • 模擬刪除lv數據,通過快照數據進行還原

[root@study ~]# lvcreate -s -L 10G -n mylvspare  -p r /dev/mapper/myvg-mylv 
  Using default stripesize 64.00 KiB.
  Logical volume "mylvspare" created.
[root@study ~]# mount /dev/mapper/myvg-mylvspare /media/
mount: /dev/mapper/myvg-mylvspare is write-protected, mounting read-only
[root@study ~]# ls /media/
boot  lost+found
[root@study ~]# tar -zcf /root/spare.tar.gz /media/*
tar: Removing leading `/' from member names
[root@study ~]# ls -lh
total 102M
-rw-------. 1 root root 1.8K Jan 28 12:33 anaconda-ks.cfg
drwxrwxr-x. 2 root root  36K Sep  5 21:38 Packages
-rw-r--r--. 1 root root 102M Feb  4 18:11 spare.tar.gz
[root@study ~]# umount /dev/mapper/myvg-mylvspare
[root@study ~]# lvremove /dev/mapper/myvg-mylvspare
Do you really want to remove active logical volume myvg/mylvspare? [y/n]: y
  Logical volume "mylvspare" successfully removed
[root@study ~]# rm -rf /mylv/boot/   ##模擬刪除LV卷中數據,通過備份的快照數據進行還原
[root@study mylv]# cd /root/
[root@study ~]# ls
anaconda-ks.cfg  Packages  spare.tar.gz
[root@study ~]# tar -zxf spare.tar.gz 
[root@study ~]# ls
anaconda-ks.cfg  media  Packages  spare.tar.gz
[root@study mylv]# cp -af  /root/media/* /mylv/  
[root@study mylv]# ls     ## 通過快照數據進行數據還原
config-3.10.0-693.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-aa42d80ce1774acf8f5de007d85e5ef1.img
initramfs-3.10.0-693.el7.x86_64.img
initramfs-3.10.0-693.el7.x86_64kdump.img
initrd-plymouth.img
lost+found
mylv
symvers-3.10.0-693.el7.x86_64.gz
System.map-3.10.0-693.el7.x86_64
vmlinuz-0-rescue-aa42d80ce1774acf8f5de007d85e5ef1
vmlinuz-3.10.0-693.el7.x86_64

九、卸載刪除lVM

[root@study media]# umount  /dev/mapper/myvg-mylv 
[root@study media]# lvremove /dev/mapper/myvg-mylv 
Do you really want to remove active logical volume myvg/mylv? [y/n]: y
  Logical volume "mylv" successfully removed
[root@study media]# vgremove myvg
  Volume group "myvg" successfully removed
[root@study media]# pvremove /dev/sd{b..e}1
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
  Labels on physical volume "/dev/sdd1" successfully wiped.
  Labels on physical volume "/dev/sde1" successfully wiped.

至此 ,整體部署配置LVM實驗完成 。


Centos 7.4 服務器配置LVM(邏輯卷管理)