lvm講解

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來確認命令的依賴軟件包。

[root@bogon ~]# 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.

驗證物理卷:

[root@bogon ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb1     lvm2 ---  10.0g 10.0g
  /dev/sdb2     lvm2 ---   5.0g  5.0g   
  
 詳細顯示PV信息   
 
 [root@bogon ~]# 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 卷組名  對應物理卷
創建:
[root@bogon ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created   
查看:
[root@bogon ~]# 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
[root@bogon ~]# lvcreate -L 3G -n lv01 vg1
  Logical volume "lv01" created.   

# vg1上創建佔vg1容量50%的lv02 
[root@bogon ~]# lvcreate -l 50%VG -n lv02 vg1
  Logical volume "lv02" created.    

# 剩餘空間全部分配給lv03  
[root@bogon ~]# lvcreate -l 100%FREE -n lv03 vg1
  Logical volume "lv03" created.  
 
# 檢查lv狀態 
[root@bogon ~]# 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、格式化

[root@bogon ~]# 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、掛載

[root@bogon ~]# mount /dev/vg1/lv01 /date1
[root@bogon ~]# mount /dev/vg1/lv02 /date2
[root@bogon ~]# mount /dev/vg1/lv03 /date3
[root@bogon ~]# 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命令動態的添加
[root@bogon ~]# 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捲上還有多餘空間,則不需要前面的這一步,可以直接用以下步驟擴容:

# 指定容量擴展空間

[root@bogon ~]# 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.
  
# 擴展剩餘所有空間  

[root@bogon ~]# 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.
  
# 查看狀態  

[root@bogon ~]# 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不需要
[root@bogon ~]# 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

更新邏輯卷信息:

如果不更新卷信息,重新掛載後無法識別擴容後的大小!!
[root@bogon ~]# 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

擴容前大小:

[root@bogon ~]# 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

擴容後大小:

[root@bogon ~]# 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、檢查磁盤錯誤:

[root@bogon ~]# 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、更新邏輯卷信息:

[root@bogon ~]# 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、重設大小:

[root@bogon ~]#  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.
[root@bogon ~]# lvextend -L 3G /dev/vg1/lv02
  New size given (768 extents) not larger than existing size (1919 extents)
[root@bogon ~]# 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                                                    
[root@bogon ~]# mount /dev/vg1/lv02 /date2
[root@bogon ~]# 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 是一樣的效果,不過後者要在磁盤掛載後才能看到磁盤大小的變化!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章