LVM 邏輯卷管理器

1、什么是LVM:PV、PE、VG、LV的意義   

LVM:Logical Volume Manager(邏輯卷管理器),可以將多個物理分區整合成看起來像一個磁盤一樣,并可隨意增加或減少邏輯卷大小

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

/dev/mapper/VG_NAME-LV_NAME

    /dev/mapper/vo10-root

/dev/VG_NAME/LV-NAME

   /dev/vo10/root

  • PV(Physical Volume),物理卷

通過fdisk /dev/sdb命令調整分區系統標識符system ID成為8e(LVM標識符),然后再經過pvcreate的命令將它轉成LVM最底層的物理卷(PV)。

  • PE(Physical Extend),物理擴展塊

PE是LVM最小的存儲塊,如像文件系統的block大小。LVM默認的PE大小是4MB,而LVM的VG最多僅能含有65534個PE,因此默認的LVM VG會有4M*65534/(1024/G)=256G,調整PE的大小會影響到VG的最大容量。

  • VG(Volume Group),卷組

VG就是將多個PV組合成一個VG,所以VG就是LVM組合起來的大磁盤。

  • LV(Logical Volume),邏輯卷

最終的VG還會被切成LV,LV就是最后被格式化后掛載使用的分區,LV的設備文件名通常為“/dev/VG_NAME/LV_NAME”的樣式 

2、LVM的創建流程

準備工作:

(1)準備一個40G的磁盤,分出4個分區,每個分區大小5G,并調整分區系統標識符system ID成為8e(LVM標識符);

(2)4個分區組合成一個VG,VG名稱設置為vgtest;且PE大小為16MB;

(3)VG的容量全部劃給LV,LV名稱設置為lvtest;lvtest格式化為ext4文件系統,并掛載至/tmp/lvm;

[root@centos6 ~]# fdisk /dev/sdb    #劃分磁盤分區,并設置system ID分區為8e(LVM標識符)
...具體劃分磁盤分區在此忽略...
[root@centos6 ~]# partprobe    #更新分區表
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@centos6 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   20971520 sda
   8        1     204800 sda1
   8        2    4194304 sda2
   8        3   16571392 sda3
   8       16   83886080 sdb
   8       17    5253223 sdb1
   8       18    5253255 sdb2
   8       19    5253255 sdb3
   8       20    5253255 sdb4
  • PV階段管理工具

pvs:或pvscan命令,簡要顯示pv信息

pvdisplay:顯示pv的詳細信息

pvcreate /dev/DEVICE:將物理分區創建成PV;

pvremove /dev/DEVICE:將物理分區移除PV屬性;

[root@centos6 ~]# pvscan    #顯示當前pv信息
  No matching physical volumes found   #找不到任何的pv
[root@centos6 ~]# pvcreate /dev/sdb{1,2,3,4}    #新建/dev/sdb{1,2,3,4}四個分區成為pv
  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@centos6 ~]# pvs   #顯示當前pv信息,pvs命令是pvscan命令的簡寫,所實現的功能是一樣的。
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  5.01g 5.01g
  /dev/sdb2       lvm2 a--  5.01g 5.01g
  /dev/sdb3       lvm2 a--  5.01g 5.01g
  /dev/sdb4       lvm2 a--  5.01g 5.01g
[root@centos6 ~]# pvdisplay     #顯示pv的詳細信息
  "/dev/sdb1" is a new physical volume of "5.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1    #分區設備名稱
  VG Name                            #因為VG未分配出去,所以是空白
  PV Size               5.01 GiB     #PV的容量   
  Allocatable           NO           #此PV是否被分配,未分配則顯示NO
  PE Size               0            #PV內的PE大小   
  Total PE              0            #共分出幾個PE
  Free PE               0            #未使用的PE有幾個
  Allocated PE          0            #可分配出去的PE數量
  PV UUID               jbc02o-1Wl6-s73v-csLZ-47DX-xQov-4Hm1N8
...下面省略...
  • vg階段管理工具

vgs:簡要顯示vg信息

vgdisplay:顯示vg的詳細信息

vgcreate:新建VG的命令,語法如下:

    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

       -s:參數后面接PE的大小,單位m、g、t(大小寫均可)

vgextend:在VG內增加PV,語法如下:

    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

vgreduce:在VG內刪除PV,語法如下:

    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

vgremove:刪除一個VG;

vgchange:設置VG是否啟動;

[root@centos6 ~]# vgcreate -s 16M vg_1 /dev/sdb{2,3,4}    #將/dev/sdb{2,3,4}新建成為一個VG,名稱為:vg_1,指定PE大小為16M
  Volume group "vg_1" successfully created
[root@centos6 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg_1   3   0   0 wz--n- 15.00g 15.00g
[root@centos6 ~]# pvs    #查看PV信息顯示,/dev/sdb{2,3,4}三個PV已經用掉,剩下/dev/sdb1的PV沒被用掉;
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  5.01g 5.01g
  /dev/sdb2  vg_1 lvm2 a--  5.00g 5.00g
  /dev/sdb3  vg_1 lvm2 a--  5.00g 5.00g
  /dev/sdb4  vg_1 lvm2 a--  5.00g 5.00g
[root@centos6 ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg_1
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               15.00 GiB    #vg的容量
  PE Size               16.00 MiB    #每個PE的大小
  Total PE              960          #共有多少個PE
  Alloc PE / Size       0 / 0        #已經分配的PE數量
  Free  PE / Size       960 / 15.00 GiB    #未分配的PE數量
  VG UUID               NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS

#增加vg的容量,將/dev/sdb1添加至vg_1中;
[root@centos6 ~]# vgextend vg_1 /dev/sdb1
  Volume group "vg_1" successfully extended
[root@centos6 ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_1
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               20.00 GiB    #vg容量變成了20G
  PE Size               16.00 MiB
  Total PE              1280         #PE的數量也增加了
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1280 / 20.00 GiB
  VG UUID               NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS
  • lv階段管理工具

創建了VG這個大磁盤后,我就對針對vg_1這個大磁盤進行分區,即創建lv。

lvs:顯示lv簡要信息;

lvdisplay:顯示lv的詳細信息

lvcreate:新建lv;

    lvcreate -L #[mMgGtT] -n LV_NAME VG_NAME

    lvcreate -l N -n LV_NAME VG_NAME

    -L:后面接容量,單位可以是M、G、T等,最小單位為PE,這個數量是PE的倍數;

    -l:后面接PE的個數;

    -n:后面接LV的名稱

lvextend:在lv內增加容量;

lvreduce:在lv內減少容量;

lvremove:刪除一個lv;

lvremove /dev/VG_NAME/LV_NAME

[root@centos6 ~]# lvcreate -l 1280 -n lv_1 vg_1    #將vg_1全部分配給lv_1
  Logical volume "lv_1" created
#也可使用lvcreate -L 20G -n lv_1 vg_1這條命令來創建
[root@centos6 ~]# ll /dev/vg_1/lv_1 
lrwxrwxrwx. 1 root root 7 Sep  9 14:10 /dev/vg_1/lv_1 -> ../dm-0
[root@centos6 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_1 vg_1 -wi-a----- 20.00g
[root@centos6 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg_1/lv_1    #lv的全名
  LV Name                lv_1
  VG Name                vg_1
  LV UUID                BMuWIa-fngq-Z025-naPO-e7kC-ACmd-L4XrYb
  LV Write Access        read/write
  LV Creation host, time centos6.5, 2016-09-09 14:10:22 +0800
  LV Status              available
  # open                 0
  LV Size                20.00 GiB    #lv的容量
  Current LE             1280
  Segments               4
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  • 文件系統階段

格式化、掛載LV

[root@centos6 ~]# mkfs -t ext4 /dev/vg_1/lv_1 #注意要全名
[root@centos6 ~]# mkdir /mnt/lvm
[root@centos6 ~]# mount /dev/vg_1/lv_1 /mnt/lvm
[root@centos6 ~]# df -lh
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda3               16G  1.5G   14G  11% /
tmpfs                  112M     0  112M   0% /dev/shm
/dev/sda1              194M   29M  155M  16% /boot
/dev/mapper/vg_1-lv_1   20G  172M   19G   1% /mnt/lvm   
#其實LV的名稱構建成為/dev/vg_1/lv_1是為了讓用戶理直觀找到數據,實際LVM使用的設備是放置到/dev/mapper/目錄下

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

(0)
zhuckeezhuckee
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • Apache運行機制剖析

    1. B/S交互過程 瀏覽器(Browser)和服務器(Web Server)的交互過程:   1、  瀏覽器向服務器發出HTTP請求(Request)。 2、  服務器收到瀏覽器的請求數據,經過分析處理,向瀏覽器輸出響應數據(Response)。 3、  瀏覽器收到服務器的響應數據,經過分析處理,將最終結果顯示在瀏覽…

    Linux干貨 2015-04-10
  • 馬哥教育網絡班21期+第2周課程練習

    一、Linux文件管理類命令匯總 1、文件的復制命令:cp 復制命令:cp     cp [OPTION]… [-T] SOURCE DEST     cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-07-29
  • N22-網路班-第2次作業-冥界之王

    1.linux上文件管理類命令都有哪些,其常用的使用方法極其示例演示。(1).創建目錄格式:mkdir [選項]  目錄功能:創建目錄常用選項說明: -m  創建目錄的同時設置訪問權限 -p  一次性創建多級目錄 -v  顯示過程[root@Cent…

    Linux干貨 2016-08-22
  • Linux內核編譯過程詳解

    前言 Linux內核是Linux操作系統的核心,也是整個Linux功能體現的核心,就如同發動機在汽車中的重要性。內核主要功能包括進程管理、內存管理、文件管理、設備管理、網絡管理等。Linux內核是單內核設計,但卻采用了微內核的模塊化設計,支持內核線程以及動態裝載內核模塊的能力。 Linux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂…

    Linux干貨 2015-04-01
  • centos系統啟動流程詳解

    centos系統啟動流程詳解 CentOS啟動流程: POST 加電自檢 主板上有一個ROM芯片,有只讀程序,CPU被設計為一旦通電就會自動去找ROM芯片上的程序并運行,即檢查各種硬件設備是否存在。 BootSequence 引導過程 加電自檢后按BIOS中設定的次序查找各引導設備,第一個有引導程序的設備即是本次啟動用到的設備 MBR(BootLoader)…

    Linux干貨 2017-09-04
  • Linux的命令使用格式

    ◆Linux命令格式:command [options]  [arguments]command:命令options:  –單詞   或   -單字如: ls –allequ      ls -als -a -b -cequ&…

    Linux干貨 2016-10-31
欧美性久久久久