1. 程式人生 > >lvm講解

lvm講解

blank target users file

  • lvm
    • lvm 基本組成
    • 創建LVM
    • 擴容邏輯卷
    • 縮減邏輯卷(xfs文件系統不支持)

lvm

lvm (Logical Volume Manager)邏輯分卷管理器;可用於管理磁盤驅動器或其他類似的大容量存儲設備.

通過LVM,可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,LVM是用來方便管理的,不會提供額外的安全保證。

lvm 基本組成

物理卷Physical volume (PV):可以在上面建立卷組的媒介,可以是硬盤分區,也可以是硬盤本身或者回環文件(loopback file)。物理卷包括一個特殊的header,其余部分被切割為一塊塊物理區域(physical extents)。
卷組Volume group (VG):將一組物理卷收集為一個管理單元。
邏輯卷Logical volume (LV):虛擬分區,由物理區域(physical extents)組成。
物理區域Physical extent (PE):硬盤可供指派給邏輯卷的最小單位(通常為4MB)

示例:

兩塊物理硬盤
                
  硬盤1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  
    |分區1 50GB (物理卷)          |分區2 50GB (物理卷)        |   
    |/dev/sda1                    |/dev/sda2                |    
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _|
                                  
  硬盤2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |分區1 120GB (物理卷)                |
    |/dev/sdb1                          |       
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
LVM方式

  卷組VG1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  
    |邏輯卷1 15GB                  |邏輯卷2 35GB                        |邏輯卷3 170GB                 |
    |/dev/MyStorage/rootvol        |/dev/MyStorage/homevol             |/dev/MyStorage/mediavol       |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

創建LVM

實例:
1、創建分區:

fdisk /dev/sdb

2、t 更改ID

Command (m for help): t
Partition number (1-3,5, default 5): 1
Hex code (type L to list all codes): L  

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / 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 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 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 hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  ‘W95 Ext‘d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list all codes): 8e
Changed type of partition ‘Linux‘ to ‘Linux LVM‘

Command (m for help): t
Partition number (1-3,5, default 5): 2
Hex code (type L to list all codes): 8e
Changed type of partition ‘Linux‘ to ‘Linux LVM‘ `

3、準備物理卷
pvcreate命令用於將物理硬盤分區初始化為物理卷,以便LVM使用

pvcreate  /dev/sdb1 /dev/sdb2     

在使用pvcreate命令時,如果提示沒有這個命令,使用yum安裝,在使用yum安裝時,可以使用yum provides pvcreate來確認命令的依賴軟件包。

[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdb2
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdb1.
WARNING: xfs signature detected on /dev/sdb2 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdb2.
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

驗證物理卷:

[[email protected] ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb1     lvm2 ---  10.0g 10.0g
  /dev/sdb2     lvm2 ---   5.0g  5.0g   
  
 詳細顯示PV信息   
 
 [[email protected] ~]# pvdisplay
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               UeQKm2-m02J-wUx-AVs7-B7Oj-31I-gbuua
   
  "/dev/sdb2" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               yt1V3N-SPNr-vylp-ZpDz-Drkb-lkdY-41y1r

4、創建卷組

vgcreate命令用於創建LVM卷組。卷組(Volume Group)將多個物理卷組織成一個整體,屏蔽了底層物理卷細節。在卷組上創建邏輯卷時不用考慮具體的物理卷信息。  

用法: 

vgcreate 卷組名  對應物理卷
創建:
[[email protected] ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created   
查看:
[[email protected] ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   2   0   0 wz--n- 14.99g 14.99g

5、創建邏輯卷

lvcreate 命令用於創建LVM的邏輯卷。邏輯卷是創建在卷組之上的。邏輯卷對應的設備文件保存在卷組目錄下,例如:在卷組vg100上創建一個邏輯卷lvol0,則此邏輯卷對應的設備文件為/dev/vg100/lvol0。  

常用參數:   
-L 指定大小
# vg1上創建一個3G的lv
[[email protected] ~]# lvcreate -L 3G -n lv01 vg1
  Logical volume "lv01" created.   

# vg1上創建占vg1容量50%的lv02 
[[email protected] ~]# lvcreate -l 50%VG -n lv02 vg1
  Logical volume "lv02" created.    

# 剩余空間全部分配給lv03  
[[email protected] ~]# lvcreate -l 100%FREE -n lv03 vg1
  Logical volume "lv03" created.  
 
# 檢查lv狀態 
[[email protected] ~]# lvscan
  ACTIVE            ‘/dev/vg1/lv01‘ [3.00 GiB] inherit
  ACTIVE            ‘/dev/vg1/lv02‘ [7.50 GiB] inherit
  ACTIVE            ‘/dev/vg1/lv03‘ [4.50 GiB] inherit

6、格式化

[[email protected] ~]# mke2fs -t ext4 /dev/vg1/lv01
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe  blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

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

7、掛載

[[email protected] ~]# mount /dev/vg1/lv01 /date1
[[email protected] ~]# mount /dev/vg1/lv02 /date2
[[email protected] ~]# mount /dev/vg1/lv03 /date3
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  1.9G   14G  12% /
devtmpfs              1.4G     0  1.4G   0% /dev
tmpfs                 1.4G     0  1.4G   0% /dev/shm
tmpfs                 1.4G  8.6M  1.4G   1% /run
tmpfs                 1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1             197M  109M   88M  56% /boot
tmpfs                 280M     0  280M   0% /run/user/0
/dev/mapper/vg1-lv01  2.9G  9.0M  2.8G   1% /date1
/dev/mapper/vg1-lv02  7.3G   34M  6.9G   1% /date2
/dev/mapper/vg1-lv03  4.4G   18M  4.1G   1% /date3

8、寫開機啟動掛載

編輯 /etc/fstab 文件

擴容邏輯卷

lvresize命令用於調整LVM邏輯卷的空間大小,可以增大空間和縮小空間。使用lvresize命令調整邏輯卷空間大小和縮小空間時需要謹慎,因為它有可能導致數據丟失。

添加物理卷擴大卷組:

vgextend命令用於動態擴展LVM卷組,它通過向卷組中添加物理卷來增加卷組的容量。LVM卷組中的物理卷可以在使用vgcreate命令創建卷組時添加,也可以使用vgextend命令動態的添加
[[email protected] ~]# vgextend vg1 /dev/sdb5
WARNING: ext4 signature detected on /dev/sdb5 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdb5.
  Physical volume "/dev/sdb5" successfully created.
  Volume group "vg1" successfully extended

如果原有vg卷上還有多余空間,則不需要前面的這一步,可以直接用以下步驟擴容:

# 指定容量擴展空間

[[email protected] ~]# lvextend -L +500M /dev/vg1/lv01
  Size of logical volume vg1/lv01 changed from 3.00 GiB (768 extents) to 3.49 GiB (893 extents).
  Logical volume vg1/lv01 successfully resized.
  
# 擴展剩余所有空間  

[[email protected] ~]# lvextend -l +100%FREE /dev/vg1/lv03
  Size of logical volume vg1/lv03 changed from 4.50 GiB (1151 extents) to 9.00 GiB (2305 extents).
  Logical volume vg1/lv03 successfully resized.
  
# 查看狀態  

[[email protected] ~]# lvscan
  ACTIVE            ‘/dev/vg1/lv01‘ [3.49 GiB] inherit
  ACTIVE            ‘/dev/vg1/lv02‘ [7.50 GiB] inherit
  ACTIVE            ‘/dev/vg1/lv03‘ [9.00 GiB] inherit

檢查磁盤錯誤:

在做此操作前,確認磁盤不是掛載狀態!!!xfs不需要
[[email protected] ~]# e2fsck -f /dev/vg1/lv01
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
/dev/vg1/lv01: 14/196608 files (0.0% non-contiguous), 31038/786432 blocks

更新邏輯卷信息:

如果不更新卷信息,重新掛載後無法識別擴容後的大小!!
[[email protected] ~]# resize2fs /dev/vg1/lv01
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv01 to 914432 (4k) blocks.
The filesystem on /dev/vg1/lv01 is now 914432 blocks long.

xfs文件系統需要執行:

xfs_growfs /dev/vg1/lv01

擴容前大小:

[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  1.9G   14G  12% /
devtmpfs              1.4G     0  1.4G   0% /dev
tmpfs                 1.4G     0  1.4G   0% /dev/shm
tmpfs                 1.4G  8.6M  1.4G   1% /run
tmpfs                 1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1             197M  109M   88M  56% /boot
tmpfs                 280M     0  280M   0% /run/user/0
/dev/mapper/vg1-lv01  2.9G  9.0M  2.8G   1% /date1
/dev/mapper/vg1-lv02  7.3G   34M  6.9G   1% /date2
/dev/mapper/vg1-lv03  4.4G   18M  4.1G   1% /date3

擴容後大小:

[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  1.9G   14G  12% /
devtmpfs              1.4G     0  1.4G   0% /dev
tmpfs                 1.4G     0  1.4G   0% /dev/shm
tmpfs                 1.4G  8.6M  1.4G   1% /run
tmpfs                 1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1             197M  109M   88M  56% /boot
tmpfs                 280M     0  280M   0% /run/user/0
/dev/mapper/vg1-lv03  8.8G   21M  8.3G   1% /date3
/dev/mapper/vg1-lv02  7.3G   34M  6.9G   1% /date2
/dev/mapper/vg1-lv01  3.4G   12M  3.2G   1% /date1

縮減邏輯卷(xfs文件系統不支持)

1、先取消掛載
2、檢查磁盤錯誤:

[[email protected] ~]# e2fsck -f /dev/vg1/lv01
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
/dev/vg1/lv01: 14/196608 files (0.0% non-contiguous), 31038/786432 blocks

3、更新邏輯卷信息:

[[email protected] ~]# resize2fs /dev/vg1/lv01 3G
** 後面的這個大小是縮減後的大小**
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv01 to 914432 (4k) blocks.
The filesystem on /dev/vg1/lv01 is now 914432 blocks long.

4、重設大小:

[[email protected] ~]#  lvresize -L 3G /dev/vg1/lv01      
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv01? [y/n]: y
  Size of logical volume vg1/lv01 changed from 3.49 GiB (893 extents) to 3.00 GiB (768 extents).
  Logical volume vg1/lv01 successfully resized.
[[email protected] ~]# lvextend -L 3G /dev/vg1/lv02
  New size given (768 extents) not larger than existing size (1919 extents)
[[email protected] ~]# lvs
  LV   VG  Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg1 -wi-ao---- 3.00g                                                    
  lv02 vg1 -wi-a----- 7.50g                                                    
  lv03 vg1 -wi-ao---- 9.00g                                                    
[[email protected] ~]# mount /dev/vg1/lv02 /date2
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  1.9G   14G  12% /
devtmpfs              1.4G     0  1.4G   0% /dev
tmpfs                 1.4G     0  1.4G   0% /dev/shm
tmpfs                 1.4G  8.6M  1.4G   1% /run
tmpfs                 1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1             197M  109M   88M  56% /boot
tmpfs                 280M     0  280M   0% /run/user/0
/dev/mapper/vg1-lv01  2.9G  9.1M  2.8G   1% /date1
/dev/mapper/vg1-lv03  3.9G   18M  3.6G   1% /date3
/dev/mapper/vg1-lv02  2.9G   23M  2.7G   1% /date2

lvresize和lvextend 是一樣的效果,不過後者要在磁盤掛載後才能看到磁盤大小的變化!!

lvm講解