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 13:47
下一篇 2016-09-19 13:47

相關推薦

  • 網絡管理

    說起網絡,大家都不陌生,因為大家天天上網嘛,連路邊老大爺都會聊微信了,但是我們所了解的網絡只是茫茫網絡大海中的一葉扁舟,網絡的范圍其實有很大,里面涉及的東西也非常多,現在讓小編帶你一點一點去了解它吧,相信大家看了之后,會有不一樣的體會呢! 1、 什么是網絡? 網絡是由節點和連線構成,表示諸多對象及其相互聯系。在數學上,網絡是一種圖,一般認為專指加權圖。網絡除…

    2017-09-02
  • linux 基礎命令總結——文件類命令

    <span style="font-size: 18px;">linux 基礎命令總結——文件類命令</span> #wmd-preview h1  {    color: #0077bb; /* 將標題改為藍色 */} linux 基礎命令總結——文件類命令 命令總結 文件類命令 l…

    Linux干貨 2016-06-26
  • LVS+Keepalived實現負載均衡

    keepalived工作原理 keepalived是基于VRRP協議實現的保證集群高可用的一個服務軟件,主要功能是實現后端真實服務器的故障隔離和負載均衡器間的失敗切換,防止單點故障。 VRRP協議全稱:虛擬路由冗余協議(Virtual Route Redundancy Protocol)。 keepalived安裝 # yum install keepali…

    2017-11-26
  • Linux系統操作練習-2

    1、顯示當前系統上root、fedora或user1用戶的默認shell: 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(): 3、使用echo命令輸出一個絕對路徑,使用grep取出基名;擴展:取出路徑名: 擴展: 4、找出ifconfig命令結果中的1-255之間的數字: 5、挑戰題:寫一個…

    2017-11-25
  • 常見的文本處理工具及正則表達式的相關知識

    1.cat命令使用詳解 cat [option]… [file]… -A equivalent=vET -b 非空行編號 -E 行為顯示$ -n 顯示所有行的行號 -s 行號并壓縮連續空行為一行 -T 顯示tab為^M 實例:顯示a文件的行號及所有控制符 2.(1)head使用詳解 head -n x 顯示前x行 head -c x …

    Linux干貨 2016-08-07
  • bash腳本編程實例

    bash腳本編程實例 1.寫一個腳本 接受一個以上文件路徑作為參數 顯示每個文件擁有的行數 總結說明本次共為幾個文件統計了其行數 #!/bin/bash # read -p “please input some paths:” paths if [ -z $paths ];then echo “There are not any paths inputtin…

    Linux干貨 2017-08-14
欧美性久久久久