LVM管理

(1).LVM的工做原理node

  LVM(Logical Volume Manager)邏輯卷管理,是在硬盤分區和文件系統之間添加的一個邏輯層,爲文件系統屏蔽下層硬盤分區佈局,並提供一個抽象的盤卷,在盤捲上創建文件系統。管理員利用LVM能夠在硬盤不用從新分區的狀況下動態調整文件系統的大小,而且利用LVM管理的文件系統能夠跨越物理硬盤。當服務器添加了新的硬盤後,管理員沒必要將原有的文件移動到新的硬盤上,而是經過LVM直接擴展文件系統來跨越物理硬盤。linux

  LVM就是經過將底層的物理硬盤封裝,而後以邏輯卷的方式呈現給上層應用。當咱們對底層的物理硬盤進行操做時,再也不是針對分區進行操做,而是經過邏輯卷對底層硬盤進行管理操做。服務器

 (2).基礎術語架構

   物理存儲介質(The physical media):LVM存儲介質,能夠是硬盤分區、整個硬盤、raid陣列或SAN硬盤。設備必須初始化爲LVM物理卷,才能與LVM結合使用。app

  物理卷PV(physical volume):物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質比較卻包含與LVM相關的管理參數,建立物理卷能夠用硬盤分區,也能夠用硬盤自己。socket

  卷組VG(Volume Group):LVM卷組相似於非LVM系統中的物理硬盤,一個卷組VG由一個或多個物理卷PV組成。能夠在卷組VG上創建邏輯卷LV。ide

  邏輯卷LV(logical volume):相似於非LVM系統中的硬盤分區,邏輯卷LV創建在卷組VG之上。在邏輯卷LV之上創建文件系統。工具

  物理塊PE(physical Extent):物理卷PV中能夠分配的最小存儲單元,PE的大小能夠指定,默認爲4MB佈局

  邏輯塊LE(Logical Extent):邏輯卷LV中能夠分配的最小存儲單元,在同一卷組VG中LE的大小和PE是相同的,而且一一相對。測試

  總結:多個磁盤/分區/raid-->多個物理卷PV-->合成卷組VG-->從VG劃分出邏輯卷LV-->格式化LV,掛載使用。

  注意:老的Linux在建立PV時,須要將分區類型改成Linux LVM(8e)。但新的系統已經很是智能,即便默認的Linux分區(83),也能夠建立PV。

(3).LVM的優勢

   卷組VG可使多個硬盤空間看起來像是一個大硬盤。

  邏輯卷LV能夠建立跨多個硬盤空間的分區。

  在使用邏輯卷LV時,能夠在空間不足時動態調整大小,不須要考慮邏輯卷LV在硬盤上的位置,不用擔憂沒有可用的連續的空間。

  能夠在線對卷組VG、邏輯卷LV進行建立、刪除、調整大小等操做。但LVM上的文件系統也須要從新調整大小。

  LVM容許建立快照,用來保存文件系統的備份。

  注意:LVM是軟件的卷管理方式,RAID是磁盤管理的方法。對於重要的數據使,用RAID保護物理硬盤不會由於故障而中斷業務,再用LVM來實現對卷的良性管理,更好的利用硬盤資源。

  LVM有兩種寫入機制:線性(寫完一個PV再寫下一個PV,默認)、條帶(平均)

(4).建立LVM

1)lvm經常使用的命令

 

功能 PV管理命令 VG管理命令 LV管理命令
scan 掃描 pvscan vgscan lvscan
create 建立 pvcreate vgcreate lvcreate
display 顯示 pvdisplay vgdisplay lvdisplay
remove 移除 pvremove vgremove lvremove
extend 擴展   vgextend lvextend
reduce 減小   vgreduce lvreduce

   注意:查看命令有scan、display和s(pvs、vgs、lvs)。s是簡單查看對應卷信息,display是詳細查看對應卷信息。而scan是掃描全部的相關的對應卷。

2)環境

   添加一個20G硬盤sdb,建立四個2G的主分區

[root@xuexi ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb
[root@xuexi ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。


命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):+2G
分區 1 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,默認 2):
起始 扇區 (4196352-41943039,默認爲 4196352):
將使用默認值 4196352
Last 扇區, +扇區 or +size{K,M,G} (4196352-41943039,默認爲 41943039):+2G
分區 2 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分區號 (3,4,默認 3):
起始 扇區 (8390656-41943039,默認爲 8390656):
將使用默認值 8390656
Last 扇區, +扇區 or +size{K,M,G} (8390656-41943039,默認爲 41943039):+2G
分區 3 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已選擇分區 4
起始 扇區 (12584960-41943039,默認爲 12584960):
將使用默認值 12584960
Last 扇區, +扇區 or +size{K,M,G} (12584960-41943039,默認爲 41943039):+2G
分區 4 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@xuexi ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb   /dev/sdb2  /dev/sdb4
/dev/sda1  /dev/sda3  /dev/sdb1  /dev/sdb3

3)建立物理卷PV

  將分區sdb1~4從Linux類型改成Linux LVM,固然較新的系統不改也沒事。我這裏就演示修改一個sdb1分區

[root@xuexi ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。


命令(輸入 m 獲取幫助):l  //查看全部分區類型代碼

 0  空              24  NEC DOS         81  Minix / 舊 Linu bf  Solaris        
 1  FAT12           27  隱藏的 NTFS Win 82  Linux 交換 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隱藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 擴展      c7  Syrinx         
 5  擴展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系統數據 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 純文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可啓動      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 訪問       
 a  OS/2 啓動管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 擴展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隱藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 診斷     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隱藏的 FAT16 <3 61  SpeedStor       ab  Darwin 啓動     f2  DOS 次要       
16  隱藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隱藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自動
1b  隱藏的 W95 FAT3 70  DiskSecure 多啓 bb  Boot Wizard 隱  fe  LANstep        
1c  隱藏的 W95 FAT3 75  PC/IX           be  Solaris 啓動    ff  BBT            
1e  隱藏的 W95 FAT1 80  舊 Minix       

命令(輸入 m 獲取幫助):p  //查看分區信息

磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6dc89fe5

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    12584959     2097152   83  Linux
/dev/sdb4        12584960    16779263     2097152   83  Linux

命令(輸入 m 獲取幫助):t  //修改分區類型代碼
分區號 (1-4,默認 4):1
Hex 代碼(輸入 L 列出全部代碼):8e
已將分區「Linux」的類型更改成「Linux LVM」

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6dc89fe5

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   8e  Linux LVM
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    12584959     2097152   83  Linux
/dev/sdb4        12584960    16779263     2097152   83  Linux

命令(輸入 m 獲取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。

  使用pvcreate建立物理卷PV

[root@xuexi ~]# pvcreate /dev/sdb{1,2,3,4}
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.

  建立完成後能夠查看一下

[root@xuexi ~]# pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  2.00g 2.00g
  /dev/sdb2     lvm2 ---  2.00g 2.00g
  /dev/sdb3     lvm2 ---  2.00g 2.00g
  /dev/sdb4     lvm2 ---  2.00g 2.00g
[root@xuexi ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0  //PE使用狀況
  PV UUID               BKr1CG-91rH-0Dsq-vGol-UTO6-xP83-hV7FTZ

4)建立卷組VG

  使用vgcreate建立卷組VG,而且此處能夠-s選項指定PE(LE)的大小,(默認PE大小4M)

[root@xuexi ~]# vgcreate vg1 /dev/sdb1
  Volume group "vg1" successfully created
[root@xuexi ~]# vgcreate -s 16M vg2 /dev/sdb2
  Volume group "vg2" successfully created

  建立完成後查看一下

[root@xuexi ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   1   0   0 wz--n- <2.00g <2.00g
  vg2   1   0   0 wz--n-  1.98g  1.98g
[root@xuexi ~]# vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB  //能夠看到vg1的PE大小爲4M
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               N0HBAX-50lM-3tJ3-xIho-pLrx-7hAh-1T1T0g
[root@xuexi ~]# vgdisplay vg2
  --- Volume group ---
  VG Name               vg2
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               1.98 GiB
  PE Size               16.00 MiB  //能夠看到vg2的PE大小爲16M
  Total PE              127
  Alloc PE / Size       0 / 0
  Free  PE / Size       127 / 1.98 GiB
  VG UUID               ajSIkx-BC9P-ufCn-f7Uc-FXtR-hPq5-tRGBei

  注意:PE大,讀取速度快,但浪費空間。反之,讀取速度慢,但節省空間。相似於socket

  另外還能夠查看pv,會列出分配狀況

[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sdb1  vg1 lvm2 a--  <2.00g <2.00g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3      lvm2 ---   2.00g  2.00g
  /dev/sdb4      lvm2 ---   2.00g  2.00g

5)建立邏輯卷LV

  使用lvcreate建立LV。lvcreate -n lvname -L lvsize(M,G)|-l LEnumber vgname

[root@xuexi ~]# lvcreate -n lv1 -L 64M vg1
  Logical volume "lv1" created.
[root@xuexi ~]# lvcreate -n lv2 -l 16 vg1
  Logical volume "lv2" created.

  建立完查看一下

[root@xuexi ~]# lvs  //由於vg1的PE大小是4M因此lv1與lv2的大小相等
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 64.00m
  lv2  vg1 -wi-a----- 64.00m

  此時咱們再看下pv和vg的使用狀況

[root@xuexi ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg1
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               479
  Allocated PE          32
  PV UUID               BKr1CG-91rH-0Dsq-vGol-UTO6-xP83-hV7FTZ
[root@xuexi ~]# vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       32 / 128.00 MiB
  Free  PE / Size       479 / 1.87 GiB
  VG UUID               N0HBAX-50lM-3tJ3-xIho-pLrx-7hAh-1T1T0g

6)格式化與掛載

  注意:在格式化以前須要知道xfs文件系統只支持增大,不支持減少。ext二、ext三、ext4增大減少都支持。

  因此這裏咱們先使用ext4的文件系統格式化

[root@xuexi ~]# mkfs.ext4 /dev/vg1/lv1  //將lv1格式化成ext4
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16384 inodes, 65536 blocks
3276 blocks (5.00%) reserved for the super user
第一個數據塊=1
Maximum filesystem blocks=33685504
8 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@xuexi ~]# mkdir /lv1
[root@xuexi ~]# mount /dev/vg1/lv1 /lv1  //掛載到/lv1下
[root@xuexi ~]# echo "/dev/vg1/lv1 /lv1 ext4 defaults 0 0" >> /etc/fstab    //追加到開機掛載

  這裏的/dev/vg1/lv1實際是一個軟連接,實際地址以下

[root@xuexi ~]# ll /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 3月  31 15:48 /dev/vg1/lv1 -> ../dm-0
[root@xuexi ~]# ll /dev/dm-0
brw-rw----. 1 root disk 253, 0 3月  31 15:48 /dev/dm-0

(5).邏輯卷LV擴容(動態擴容

   首先須要確認是否有可用的擴容空間,邏輯卷LV是從卷組VG中建立的,全部在邏輯卷LV擴容前須要查看卷組VG的空間使用狀況。

[root@xuexi ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  vg1   1   2   0 wz--n- <2.00g 1.87g
  vg2   1   0   0 wz--n-  1.98g 1.98g

  在確認有多餘空間的狀況下,使用lvextend命令的-L選項擴展邏輯卷LV的大小

[root@xuexi ~]# lvs
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 64.00m                                                    
  lv2  vg1 -wi-a----- 64.00m
[root@xuexi ~]# lvextend -L +100M /dev/vg1/lv1  // +100M是增長100M
  Size of logical volume vg1/lv1 changed from 64.00 MiB (16 extents) to 164.00 MiB (41 extents).
  Logical volume vg1/lv1 successfully resized.
[root@xuexi ~]# lvextend -L 100M /dev/vg1/lv2  //直接使用100M是增長到100M
  Size of logical volume vg1/lv2 changed from 64.00 MiB (16 extents) to 100.00 MiB (25 extents).
  Logical volume vg1/lv2 successfully resized.
[root@xuexi ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 164.00m                                                    
  lv2  vg1 -wi-a----- 100.00m

  可是在咱們使用df命令查看時,會發現咱們文件系統並無擴展

[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1   58M  1.3M   53M    3% /lv1

  這是由於文件系統也須要擴容ext4文件系統擴容使用"resize2fs [邏輯卷名稱]",xfs文件系統擴容使用"xfs_growfs 掛載點"

[root@xuexi ~]# lvs    //LV已經擴容成功
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 164.00m                                                    
  lv2  vg1 -wi-a----- 100.00m
[root@xuexi ~]# resize2fs /dev/vg1/lv1  //ext4文件系統擴容
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vg1/lv1 is now 167936 blocks long.
[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1  155M  1.6M  145M    2% /lv1

  固然來到CentOS7後,咱們還可使用lvextend命令的-r選項來使文件系統自動擴容,實例以下:

[root@xuexi ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 164.00m                                                    
  lv2  vg1 -wi-a----- 100.00m
[root@xuexi ~]# lvextend -L 200M -r /dev/vg1/lv1  //LV擴容到200M而且文件系統自動擴容
  Size of logical volume vg1/lv1 changed from 164.00 MiB (41 extents) to 200.00 MiB (50 extents).
  Logical volume vg1/lv1 successfully resized.  //能夠看到文件系統擴容成功
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/mapper/vg1-lv1 is now 204800 blocks long.
[root@xuexi ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 200.00m                                                    
  lv2  vg1 -wi-a----- 100.00m
[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1  190M  1.6M  179M    1% /lv1

(6).卷組VG擴容

  卷組的擴容至關簡單,通常是LVM空間不夠時,添加一塊新硬盤時使用。

[root@xuexi ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  vg1   1   2   0 wz--n- <2.00g 1.70g
  vg2   1   0   0 wz--n-  1.98g 1.98g
[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/sdb1  vg1 lvm2 a--  <2.00g 1.70g
  /dev/sdb2  vg2 lvm2 a--   1.98g 1.98g
  /dev/sdb3      lvm2 ---   2.00g 2.00g
  /dev/sdb4      lvm2 ---   2.00g 2.00g
[root@xuexi ~]# vgextend vg1 /dev/sdb3
  Volume group "vg1" successfully extended
[root@xuexi ~]# vgs
  VG  #PV #LV #SN Attr   VSize VFree 
  vg1   2   2   0 wz--n- 3.99g <3.70g
  vg2   1   0   0 wz--n- 1.98g  1.98g
[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sdb1  vg1 lvm2 a--  <2.00g  1.70g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3  vg1 lvm2 a--  <2.00g <2.00g
  /dev/sdb4      lvm2 ---   2.00g  2.00g

(7).邏輯卷LV縮小

  邏輯卷LV縮小命令lvreduce與擴容命令相似,縮減邏輯卷LV請謹慎操做實例以下:

  1)lvreduce命令使用-L選項減小空間,-r選項減小文件系統空間,實現動態調整(這是ext4文件系統)

[root@xuexi ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 200.00m                                                    
  lv2  vg1 -wi-a----- 100.00m                                                    
[root@xuexi ~]# lvreduce -L 100M -r /dev/vg1/lv1
Do you want to unmount "/lv1" ? [Y|n] y
fsck,來自 util-linux 2.23.2
/dev/mapper/vg1-lv1: 11/51200 files (9.1% non-contiguous), 12109/204800 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg1-lv1 to 102400 (1k) blocks.
The filesystem on /dev/mapper/vg1-lv1 is now 102400 blocks long.

  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
  Logical volume vg1/lv1 successfully resized.
[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /lv1

  2)若是不使用-r選項,那麼須要卸載掛載點再使用resize2fs調整,但這已經不是動態調整了

[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /lv1
[root@xuexi ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 100.00m                                                    
  lv2  vg1 -wi-a----- 100.00m                                                    
[root@xuexi ~]# lvreduce -L -20M /dev/vg1/lv1
  WARNING: Reducing active and open logical volume to 80.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
  Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 80.00 MiB (20 extents).
  Logical volume vg1/lv1 successfully resized.
[root@xuexi ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required
resize2fs: On-line shrinking not supported
[root@xuexi ~]# df -h /lv1  //失敗了
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1   93M  1.6M   85M    2% /lv1
[root@xuexi ~]# umount /lv1  //卸載掛載點
[root@xuexi ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 81920 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 81920 blocks long.
[root@xuexi ~]# mount /dev/vg1/lv1 /lv1  //從新掛載
[root@xuexi ~]# df -h /lv1
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv1   74M  1.6M   67M    3% /lv1

  3)xfs文件系統的實驗

[root@xuexi ~]# mkfs.xfs /dev/vg1/lv2
meta-data=/dev/vg1/lv2           isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@xuexi ~]# mkdir /lv2
[root@xuexi ~]# mount /dev/vg1/lv2 /lv2
[root@xuexi ~]# df -h /lv2
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv2   97M  5.3M   92M    6% /lv2
[root@xuexi ~]# lvs /dev/vg1/lv2
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv2  vg1 -wi-ao---- 100.00m
//使用lvextend的-L選項和-r選項動態擴容
[root@xuexi ~]# lvextend -L +20M -r /dev/vg1/lv2
  Size of logical volume vg1/lv2 changed from 100.00 MiB (25 extents) to 120.00 MiB (30 extents).
  Logical volume vg1/lv2 successfully resized.
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 25600 to 30720
[root@xuexi ~]# df -h /lv2
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv2  117M  5.3M  112M    5% /lv2
[root@xuexi ~]# lvs /dev/vg1/lv2
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv2  vg1 -wi-ao---- 120.00m
//使用lvextend和xfs_growfs動態擴容
[root@xuexi ~]# lvextend -L 200M /dev/vg1/lv2
  Size of logical volume vg1/lv2 changed from 120.00 MiB (30 extents) to 200.00 MiB (50 extents).
  Logical volume vg1/lv2 successfully resized.
[root@xuexi ~]# xfs_growfs /lv2
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=5, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=30720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 30720 to 51200
[root@xuexi ~]# df -h /lv2
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv2  197M  5.5M  192M    3% /lv2
[root@xuexi ~]# lvs /dev/vg1/lv2
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv2  vg1 -wi-ao---- 200.00m
//使用lvreduce的-r選項嘗試減少空間
[root@xuexi ~]# lvreduce -L -20M -r /dev/vg1/lv2
fsadm: Xfs filesystem shrinking is unsupported.
  /usr/sbin/fsadm failed: 1
  Filesystem resize failed.    //能夠看到縮減空間失敗了
[root@xuexi ~]# df -h /lv2
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv2  197M  5.5M  192M    3% /lv2
[root@xuexi ~]# lvs /dev/vg1/lv2
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv2  vg1 -wi-ao---- 200.00m
//再試試lvreduce和xfs_growfs組合能不能動態減小空間。這裏爲何說動態呢?由於xfs_groefs必須是掛載狀況下才能使用,後面跟的是掛載點。
[root@xuexi ~]# lvreduce -L 100M /dev/vg1/lv2
  WARNING: Reducing active and open logical volume to 100.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv2? [y/n]: Y
  Size of logical volume vg1/lv2 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
  Logical volume vg1/lv2 successfully resized.
[root@xuexi ~]# xfs_growfs /lv2
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=8, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data size 25600 too small, old size is 51200
[root@xuexi ~]# df -h /lv2  //同樣失敗了
文件系統             容量  已用  可用 已用% 掛載點
/dev/mapper/vg1-lv2  197M   11M  187M    6% /lv2
[root@xuexi ~]# lvs /dev/vg1/lv2
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv2  vg1 -wi-ao---- 100.00m

  因此,xfs文件系統真的只能增大,不能減少。

(8).卷組VG縮小

  卷組VG的縮小,要查看物理卷PV是否被使用,由於沒法縮減一個正在使用的物理卷PV。以下:

[root@xuexi ~]# cp /etc/passwd /lv1/  //複製測試數據
[root@xuexi ~]# ls /lv1/
lost+found  passwd
[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sdb1  vg1 lvm2 a--  <2.00g <1.92g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3  vg1 lvm2 a--  <2.00g <2.00g
  /dev/sdb4      lvm2 ---   2.00g  2.00g
[root@xuexi ~]# vgreduce vg1 /dev/sdb1
  Physical volume "/dev/sdb1" still in use

  此時想要將/dev/sdb1移出vg1,可使用pvmove命令移動數據,但必須有足夠的空間

[root@xuexi ~]# pvmove /dev/sdb1 /dev/sdb3
  /dev/sdb1: Moved: 10.00%
  /dev/sdb1: Moved: 100.00%
[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sdb1  vg1 lvm2 a--  <2.00g <2.00g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3  vg1 lvm2 a--  <2.00g <1.92g
  /dev/sdb4      lvm2 ---   2.00g  2.00g
[root@xuexi ~]# vgreduce vg1 /dev/sdb1
  Removed "/dev/sdb1" from volume group "vg1"
[root@xuexi ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sdb1      lvm2 ---   2.00g  2.00g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3  vg1 lvm2 a--  <2.00g <1.92g
  /dev/sdb4      lvm2 ---   2.00g  2.00g

  場景多用於更換舊硬盤。

(9).刪除LVM

   刪除LVM步驟:umount卸載-->lvremove移除邏輯卷LV-->vgremove移除卷組VG-->pvremove移除物理卷PV

  實例:

[root@xuexi dev]# umount /lv1  //卸載掛載點
[root@xuexi dev]# lvremove /dev/vg1/lv1  //移除邏輯卷
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
[root@xuexi dev]# lvs
[root@xuexi dev]# vgremove vg1  //移除卷組
  Volume group "vg1" successfully removed
[root@xuexi dev]# vgs
  VG  #PV #LV #SN Attr   VSize VFree
  vg2   1   0   0 wz--n- 1.98g 1.98g
[root@xuexi dev]# pvremove /dev/sdb1  //移除物理卷
  Labels on physical volume "/dev/sdb1" successfully wiped.
[root@xuexi dev]# pvs
  PV         VG  Fmt  Attr PSize PFree
  /dev/sdb2  vg2 lvm2 a--  1.98g 1.98g
  /dev/sdb3      lvm2 ---  2.00g 2.00g
  /dev/sdb4      lvm2 ---  2.00g 2.00g

(10).擴展

  SSM工具:檢查關於可用硬盤和LVM卷的信息。顯示關於現有磁盤存儲設備、存儲池、LVM卷和存儲快照的信息。

  1)SSM的安裝

[root@xuexi ~]# yum -y install system-storage-manager
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 system-storage-manager.noarch.0.0.4-8.el7 將被 安裝
--> 解決依賴關係完成

依賴關係解決

================================================================================
 Package                       架構          版本             源           大小
================================================================================
正在安裝:
 system-storage-manager        noarch        0.4-8.el7        base        115 k

事務概要
================================================================================
安裝  1 軟件包

總下載量:115 k
安裝大小:441 k
Downloading packages:
system-storage-manager-0.4-8.el7.noarch.rpm                | 115 kB   00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : system-storage-manager-0.4-8.el7.noarch                     1/1 
  驗證中      : system-storage-manager-0.4-8.el7.noarch                     1/1 

已安裝:
  system-storage-manager.noarch 0:0.4-8.el7                                     

完畢!

  2)SSM工具經常使用命令

  列出設備信息

[root@xuexi ~]# ssm list dev
---------------------------------------------------------
Device        Free     Used      Total  Pool  Mount point
---------------------------------------------------------
/dev/sda                      20.00 GB        PARTITIONED
/dev/sda1                    200.00 MB        /boot      
/dev/sda2                     10.00 GB        /          
/dev/sda3                      2.00 GB        SWAP       
/dev/sdb                      20.00 GB                   
/dev/sdb1                      2.00 GB                   
/dev/sdb2  1.98 GB  0.00 KB    2.00 GB  vg2              
/dev/sdb3                      2.00 GB                   
/dev/sdb4                      2.00 GB                   
---------------------------------------------------------

  列出存儲池信息

[root@xuexi ~]# ssm list pool
----------------------------------------------
Pool  Type  Devices     Free     Used    Total  
----------------------------------------------
vg2   lvm   1        1.98 GB  0.00 KB  1.98 GB  
----------------------------------------------

  列出卷信息

[root@xuexi ~]# ssm list vol
-------------------------------------------------------------------
Volume     Volume size  FS     FS size      Free  TypeMount point  
-------------------------------------------------------------------
/dev/sda1    200.00 MB  xfs  196.66 MB  18.50 MB  part/boot        
/dev/sda2     10.00 GB  xfs    9.99 GB   5.21 GB  part/            
-------------------------------------------------------------------

  3)SSM建立LVM

  ssm create -s [lv大小] -n [lv名稱] --fstype [lv文件系統類型] -p [卷組名] [設備] [掛載點]

   自動把設備變成pv,建立pv、lv,格式化文件系統,自動掛載

[root@xuexi ~]# mkdir /mail-lv
[root@xuexi ~]# ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[1-4] /mail-lv
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.
  Volume group "mail" successfully created
WARNING: ext4 signature detected on /dev/mail/mail-lv at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/mail/mail-lv.
  Logical volume "mail-lv" created.
meta-data=/dev/mail/mail-lv      isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@xuexi ~]# df -h /mail-lv/
文件系統                   容量  已用  可用 已用% 掛載點
/dev/mapper/mail-mail--lv 1014M   33M  982M    4% /mail-lv
相關文章
相關標籤/搜索