邏輯卷管理器 LVM

 
 
  邏輯卷管理器 LVM

lvm概述
   LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,又譯為邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器。是Linux核心所提供的邏輯卷管理(Logical Volume Management)功能。它在硬盤的硬盤分區之上,又創建了一個邏輯層以方便系統管理硬盤分區系統。

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

卷組(VG,Volume Group):
   LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成??梢栽诰斫M上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。

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

dm:device mapper 設備映射組件,講一個或多個底層設備組織成一個邏輯設備的模塊;

lvm:邏輯卷管理器

0901.png

為了演示操作我們首先創建一個分區

[root@localhost ~]# fdisk /dev/sdd

0901-2.png

調整分區屬性:

0901-3.png

0901-4.png

pv管理工具

  pvs:簡要pv顯示工具
  pvdisplay:顯示pv詳細信息

[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2      (pv名稱)
  VG Name               vg0         (卷組名稱)
  PV Size               60.00 GiB / not usable 8.00 MiB      (大小)
  Allocatable           yes 
  PE Size               8.00 MiB          (PE 大小)
  Total PE              7679               (多少個PE)
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz

創建pv工具:
pvcreate  /dev/DEVICE

[root@localhost ~]# pvcreate -v /dev/sdd1
    Wiping cache of LVM-capable devices
    Set up physical volume for "/dev/sdd1" with 20980827 available sectors
    Zeroing start of device /dev/sdd1
    Writing physical volume data to disk "/dev/sdd1"
  Physical volume "/dev/sdd1" successfully created
這里的-v顯示過程信息;

  創建完成查看:

[root@localhost ~]# pvdisplay /dev/sdd1
  "/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               ywKdX1-XnNt-dY7C-lBO2-ochy-Podm-xFAxwb
  這里由于沒有加入VG,所以PE Size為0,VG Name為空;

 
   創建PV完成,順便說一下PV的刪除:pvremove    

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped

 
   再次查看PV就只剩下原來的PV了,我們已經把 PV Name 為/dev/sdd1的PV刪除了

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg0
  PV Size               60.00 GiB / not usable 8.00 MiB
  Allocatable           yes 
  PE Size               8.00 MiB
  Total PE              7679
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz
   
[root@localhost ~]#

PV 創建完成后接下來我們看下VG的創建:
1)顯示卷組

[root@localhost ~]# vgs  (顯示簡要信息)
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g
[root@localhost ~]# vgdisplay  (顯示詳細信息)
  --- Volume group ---
  VG Name               vg0      (卷組名稱)
  System ID             
  Format                lvm2        
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               59.99 GiB
  PE Size               8.00 MiB
  Total PE              7679
  Alloc PE / Size       6656 / 52.00 GiB
  Free  PE / Size       1023 / 7.99 GiB
  VG UUID               Qk4MX1-IDP7-ob8t-4S9U-WknH-3KqW-mYkXP5

創建VG:
vgcreate [-s PhysicalExtent- Size[mMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [Physi-calDevicePath…]

[root@localhost ~]# vgcreate myvg /dev/sdd1 
  Volume group "myvg" successfully created

查看一下:

[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  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               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf
PE大小在創建后固定不可更改,要指明大小使用-s選項;

  VG創建完成可以對VG擴展(vgextend)或者縮減(vgreduce);

擴展VG:
 1)擴展要添加新的PV

[root@localhost ~]# fdisk /dev/sdd     (創建一個新的分區)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +5G
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   83  Linux
Command (m for help): t     (更改分區屬性8e)
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   8e  Linux LVM

 2)擴展VG:

[root@localhost ~]# vgextend myvg /dev/sdd2  (把/dev/sdd2添加到myvg)
  Physical volume "/dev/sdd2" successfully created
  Volume group "myvg" successfully extended
[root@localhost ~]# vgdisplay myvg       (查看myvg ,發現容量已經15G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2    ·
  Metadata Sequence No  2
  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               15.01 GiB
  PE Size               4.00 MiB
  Total PE              3842
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3842 / 15.01 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

VG的縮減
 1)如果/dev/sdd2上有數據我們需要先把數據移走

[root@localhost ~]# pvmove /dev/sdd2
  No data to move for myvg  (這里我們的分區上沒有數據)

 2)使用VGreduce命令:

[root@localhost ~]# vgreduce myvg /dev/sdd2
  Removed "/dev/sdd2" from volume group "myvg"
[root@localhost ~]# vgdisplay  (查看已經縮減到10G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  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               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

LV管理工具
 lvs:查看簡要信息
 lvdisplay:查看詳細信息

邏輯卷創建:

lvcreate -L #[mMgGtT] -n NAME VolumeGroup (L指明大小  -n 名稱)
注意:這里要創建的大小在卷組必須有足夠空間,否則會創建失敗。
[root@localhost ~]# lvcreate -L 2G -n mylv myvg
  Logical volume "mylv" created.
[root@localhost ~]# ls /dev/mapper/
control  myvg-mylv  vg0-root  vg0-swap  vg0-usr  vg0-var
創建一個2G的LV,完成后就可以格式化掛載使用了
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv  
[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# mount
...
/dev/mapper/myvg-mylv on /backup type ext4 (rw)
擴展邏輯卷:

 lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
  -L +#[mMgGtT]與 -L #[mMgGtT]
   比如:-L+ 5G 表示擴展5G ,-L 5G 表示擴展后達到5G

[root@localhost ~]# lvextend -L 5G /dev/myvg/mylv 
  Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume mylv successfully resized.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao----  5.00g

 這里我們查看掛載會發現分區大小還是2G,并沒有達到我們擴展后的5G。            

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     2.0G  3.1M  1.9G   1% /backup

  嘗試重新掛載之后問題并沒有解決,因為擴展LV之后文件系統并沒有隨之擴大,換句話說,邏輯卷大小擴大,文件系統還是原來的大小,這里我們使用的是ext文件系統,需要我們使用resize2fs工具把/dev/myvg/mylv 擴大

[root@localhost ~]# resize2fs /dev/myvg/mylv (沒有指明擴展大小就是默認使用全部大?。?
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required
old desc_blocks = 8, new_desc_blocks = 20
Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 5242880 blocks long.

 在查看一下:

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     4.9G  3.4M  4.7G   1% /backup
結果已經擴大到5G了。

縮減邏輯卷:
 lvreduce
  縮減是要先把文件系統大小縮減到指定大小,在縮減LV到指定大小。
縮減邏輯卷步驟:
 1)先要卸載:

umount /dev/VG_NAME/LV_NAME
[root@localhost ~]# umount /backup/ (卸載掛載)
[root@localhost ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  343640  19119140   2% /
tmpfs                  1954260      80   1954180   1% /dev/shm
/dev/sda1               194241   39970    144031  22% /boot
/dev/mapper/vg0-usr   10190136 1964380   7701468  21% /usr
/dev/mapper/vg0-var   20511356  152716  19310064   1% /var
/dev/sr0               3824484 3824484         0 100% /media/CentOS_6.8_Final
/dev/sr0               3824484 3824484         0 100% /mnt/cdrom

 2)文件系統檢測:

e2fsck -f /dev/VG_NAME/LV_NAME  (-f 強制檢測和修復)
[root@localhost ~]# e2fsck -f /dev/myvg/mylv 
e2fsck 1.41.12 (17-May-2010)
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
MYLV: 11/327680 files (0.0% non-contiguous), 119693/5242880 blocks

 3)縮減邏輯邊界:縮減后的容量一定要能容納原有數據。

resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] 
[root@localhost ~]# resize2fs /dev/myvg/mylv 3G 
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 3145728 blocks long.

 4)使用lvreduce命令縮減邏輯卷:
 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

[root@localhost ~]# lvreduce -L 3G /dev/myvg/mylv 
  WARNING: Reducing active logical volume to 3.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 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
  Logical volume mylv successfully resized.

 5)重新掛載使用:

[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                           ext4     3.0G  3.3M  2.8G   1% /backup

完成

LVM快照

快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝。對于需要備份或者復制的現有數據集臨時拷貝以及其它操 作來說,快照是最合適的選擇??煺罩挥性谒鼈兒驮瓉淼倪壿嬀聿煌瑫r才會消耗空間。 在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中??煺罩兄缓性瓉淼倪壿嬀碇懈牡臄祿蛘咦陨煽煺蘸蟮目?照中更改的數據。建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。

快照創建:
 lvcreate -L #[mMgGtT]  -p r  -s  -n snap_lv_name  original_lv_name
  -p:指明讀、寫權限
  -s:指明是快照
  -n:名稱

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 復制一個文件到/backup

[root@localhost backup]# cp /etc/issue ./
[root@localhost backup]# ls
issue  lost+found

 創建/dev/myvg/mylv 的快照,名稱為mylv_snap,大小512M,只讀權限

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 在/mnt下建立mysnap目錄,

[root@localhost backup]# mkdir /mnt/mysnap

 掛載

[root@localhost backup]# mount /dev/myvg/mylv_snap /mnt/mysnap/
mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
[root@localhost backup]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root ext4      20G  336M   19G   2% /
tmpfs                tmpfs    1.9G   80K  1.9G   1% /dev/shm
/dev/sda1            ext4     190M   40M  141M  22% /boot
/dev/mapper/vg0-usr  ext4     9.8G  1.9G  7.4G  21% /usr
/dev/mapper/vg0-var  ext4      20G  150M   19G   1% /var
/dev/sr0             iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final
/dev/sr0             iso9660  3.7G  3.7G     0 100% /mnt/cdrom
/dev/mapper/myvg-mylv
                     ext4     3.0G  3.3M  2.8G   1% /backup
/dev/mapper/myvg-mylv_snap
                     ext4     3.0G  3.3M  2.8G   1% /mnt/mysnap

 查看分區內文件和備份文件

[root@localhost backup]# cat issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@localhost backup]# cat /mnt/mysnap/
cat: /mnt/mysnap/: Is a directory
[root@localhost backup]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

 重新編輯下原文件

[root@localhost ~]# cat /backup/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

test
test
test
test
test

 查看備份文件

[root@localhost ~]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

要想恢復,把快照卷中的文件復制出去就可以了

備份卷的刪除:
 1)卸載快照卷

[root@localhost ~]# umount /mnt/mysnap/

 2)lvremove :邏輯卷刪除命令

[root@localhost ~]# lvremove /dev/myvg/mylv_snap 
Do you really want to remove active logical volume mylv_snap? [y/n]: y
  Logical volume "mylv_snap" successfully removed

刪除邏輯卷:

 1)卸載邏輯卷掛載

[root@localhost ~]# umount /backup/

 2)刪除邏輯卷:

[root@localhost ~]# lvremove /dev/myvg/mylv 
Do you really want to remove active logical volume mylv? [y/n]: y
  Logical volume "mylv" successfully removed

 3)刪除VG:

[root@localhost ~]# vgremove /dev/myvg
  Volume group "myvg" successfully removed
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g

4)刪除PV:

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g
  /dev/sdd2       lvm2 ----  5.01g 5.01g
[root@localhost ~]# pvremove /dev/sdd2
  Labels on physical volume "/dev/sdd2" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g

原創文章,作者:zanghonglei,如若轉載,請注明出處:http://www.www58058.com/42715

(0)
zanghongleizanghonglei
上一篇 2016-09-02 08:47
下一篇 2016-09-02 08:48

相關推薦

  • Linux基礎知識及常用命令

    pwd:printing working directory -顯示當前工作目錄            [root@edu tmp]# pwd          &nbs…

    Linux干貨 2016-09-15
  • vsftpd基于mysql存儲認證(centos7)

    (1)首先開發包組和服務器平平臺開發包組 (2)yum安裝需要的依賴包 (3)編譯安裝pam_mysql模塊 (4)配置mysql,并添加mysql中的vsftpd進程用戶,且創建vsftpd數據庫,并將vsftpd數據庫授權給vsftpd用戶,且創建vsftpd.users表,并在表中添加用戶tom (5)創建vsftpd要上傳和下載的URL (6)創建基…

    Linux干貨 2016-10-15
  • YUM 的使用和YUM源的配置

    簡介     yum(Yellow dog Updater Modified)是CentOS中屬于RPM前端軟件包管理器,能從指定的服務器中下載RPM包,并自動分析和處理RPM包之間的依賴關系,最后將依次所依賴的軟件包都安裝了,而無需繁瑣的一個一個安裝。 一 yum repository:yum倉庫 yum倉庫的組成部…

    Linux干貨 2016-02-14
  • Linux用戶與權限管理

    由于Linux是多用戶、多任務系統,出于一些需要,當我們創建的文件希望對一部分用戶開放,對一部分用戶隱藏的時候應該怎么辦呢?這樣的話,就需要涉及到Linux系統中對用戶以及對文件權限的管理。 一、相關文件 在Linux中,一切配置文件都是以文本文檔的方式來保存的,同樣用戶的信息也保存在系統的一些文件中,其位置為/etc/passwd。此文件只有root用戶具…

    Linux干貨 2016-08-05
  • Linux網絡屬性配置命令和管理詳解

    一、Linux網絡屬性配置     1.Linux主機接入到網絡方式 IP/NETMASK:實現本地網絡通信 路由(網關):可以進行跨網絡通信 DNS服務器地址:基于主機名的通信,Linux可以有三個DNS地址 當第一個地址本身掛了,才會查找其備用地址;若第一個地址無法解析則停止     2.網絡屬…

    Linux干貨 2016-04-30
  • N26-第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep ‘^[[:space:]]\+’ /boot/grub2/grub.cfg 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep ‘^#[[:space:]]\+’ /etc/rc.d/rc.…

    Linux干貨 2017-03-06
欧美性久久久久