首頁 >運維 >linux運維 >linux的lvm分區是什麼

linux的lvm分區是什麼

藏色散人
藏色散人原創
2023-03-24 09:48:291904瀏覽

linux的lvm分割區指的就是“邏輯磁碟區管理”,lvm的英文全稱為“Logical Volume Manager”,是Linux環境下對磁碟分割區進行管理的一種機制;LVM是建立在硬碟和分割區之上的一個邏輯層,來提高磁碟分割管理的彈性。

linux的lvm分區是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

一、什麼是LVM

LVM(Logical Volume Manager),即邏輯磁碟區管理,是Linux環境下對磁碟分割區進行管理的一種機制,LVM是建立在硬碟和分割區之上的一個邏輯層,來提高磁碟分割管理的彈性。透過LVM系統管理員可以輕鬆管理磁碟分割區,如:將若干個磁碟分割區連接為一個整塊的磁碟區組(volume group),形成一個儲存池。管理員可以在磁碟區組上隨意建立邏輯磁碟區組(logical volumes),並進一步在邏輯磁碟區組上建立檔案系統。管理員透過LVM可以方便的調整儲存卷組的大小,並且可以對磁碟儲存按照群組的方式進行命名、管理和分配。當系統新增了新的磁碟,透過LVM管理員就不必將磁碟的檔案移至新的磁碟上以充分利用新的儲存空間,而是直接擴​​展檔案系統跨越磁碟即可。

一般來說,實體磁碟或分割區之間是分隔的,資料無法跨磁碟或分割區,而各磁碟或分割區的大小固定,重新調整比較麻煩。 LVM可以將這些底層的實體磁碟或分割區整合起來,抽象化成容量資源池,以劃分成邏輯磁碟區的方式供上層使用,其最主要的功能即是可以在無需關機無需重新格式化(準確地說,原來的部分無需格式化,只格式化新增的部分)的情況下彈性調整邏輯磁碟區的大小。
LVM的實作過程如下圖:

linux的lvm分區是什麼

#二、LVM名詞解釋

PV( physical volume):物理磁碟區在邏輯磁碟區管理系統最底層,可為整個實體硬碟或實際實體硬碟上的分割區。它只是在實體分區中劃出了一個特殊的區域,用來記載與LVM相關的管理參數。

VG(volume group):卷組建立在實體卷上,一卷組中至少要包括一物理卷,卷組建立後可動態的添加捲到卷組中,一個邏輯磁碟區管理系統工程中可有多個磁碟區組。

LV(logical volume):邏輯卷建立在卷組基礎上,卷組中未分配空間可用於建立新的邏輯卷,邏輯卷建立後可以動態擴展和縮小空間。

PE(physical extent):物理區域是物理磁碟區中可用於分配的最小儲存單元,物理區域大小在建立磁碟區組時指定,一旦確定不能更改,同一磁碟區組所有實體磁碟區的實體區域大小需一致,新的pv加入vg後,pe的大小會自動變更為vg中定義的pe大小。

LE(logical extent):邏輯區域是邏輯磁碟區中可用於指派的最小儲存單元,邏輯區域的大小取決於邏輯磁碟區所在磁碟區組中的實體區域的大小。由於受核心限制的原因,一個邏輯磁碟區(Logic Volume)最多只能包含65536個PE(Physical Extent),所以一個PE的大小就決定了邏輯磁碟區的最大容量,4 MB(默認) 的PE決定了單一邏輯卷最大容量為256 GB,若希望使用大於256G的邏輯卷,則建立卷組時需要指定更大的PE。在Red Hat Enterprise Linux AS 4中PE大小範圍為8 KB 到 16GB,且必須總是 2 的倍數。

三、LVM的寫入模式

LVM有兩種寫入模式:線性模式和條帶模式

  • 線性模式即寫完一個設備後再寫另一個設備
  • 條帶模式就有點類似RAID0,即資料是被分散寫入到LVM各成員設備上的。
    因為條帶模式的資料不具有安全性,且LVM並不強調讀寫性能,故LVM預設為線性模式,這樣即使一個設備壞了,其它設備上的資料還在。

四、LVM的工作原理

LVM在每個物理卷頭部都維護了一個metadata,每個metadata中都包含了整個VG(volume group:卷組)的訊息,包括每個VG的佈局配置,PV(physical volume:物理卷)的編號,LV(logical volume:邏輯卷)的編號,以及每個PE(physical extends:物理擴展單元)到LE(logical extends:實體擴充單元)的映射關係。同一個VG的每個PV頭部的資訊都是相同的,這樣有利於故障時進行資料復原。

LVM對上層檔案系統提供LV層,隱藏了操作細節。對檔案系統而言,對LV的操作與原先對partition的操作沒有差別。當對LV進行寫入操作的時候,LVM定位對應的LE,透過PV頭部的映射表將資料寫入對應的PE上。 LVM最大的特點就是可以對磁碟進行動態管理。因為邏輯磁碟區的大小是可以動態調整的,而且不會遺失現有的資料。我們如果新增加了硬碟,其也不會改變現有上層的邏輯磁碟區。關鍵在於PE和LE之間建立映射關係,不同的映射規則決定了不同的LVM儲存模型。 LVM支援多個PV 的stripe和mirror。

五、LVM的優缺點

優點:

  • 檔案系統可以跨多個磁碟,因此檔案系統大小不會受實體磁碟的限制。
  • 可以在系統運作的狀態下動態的擴充檔案系統的大小。
  • 可以增加新的磁碟到LVM的儲存池。
  • 可以以鏡像的方式冗餘重要的資料到多個實體磁碟。
  • 可以方便的匯出整個磁碟區組到另外一台機器。

缺點:

  • 在從磁碟區組中移除一個磁碟的時候必須使用reducevg指令(這個指令要求root權限,並且不允許在快照磁碟區組中使用)。
  • 當磁碟區組中的一個磁碟損壞時,整個磁碟區組都會受到影響。
  • 因為加入了額外的操作,存貯性能受到影響。

六、建立PV/VG/LV的方法

1、將各實體磁碟或分割區的系統類型設為Linux LVM,其system ID為8e,透過fdisk工具中的t指令設定

[root@localhost ~]# fdisk /dev/sdb ...
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2First sector (20973568-62914559, default 20973568): 
Using default value 20973568Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
...
Command (m for help): t
Partition number (1,2, default 2): 2Hex code (type L to list all codes): 8e  # 指定system id为8eChanged type of partition 'Linux' to 'Linux LVM'...
Command (m for help): p
...
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
/dev/sdb2        20973568    31459327     5242880   8e  Linux LVM
Command (m for help): w
...

2、將各實體磁碟或分割區初始化為PV(physical volume,實體磁碟區)

#這階段可使用的指令為pvcreate、pvremove、pvscan、pvdisplay(pvs)

1)pvcreate:建立實體磁碟區

#
用法:pvcreate [option] DEVICE

  选项:

      -f:强制创建逻辑卷,不需用户确认

      -u:指定设备的UUID

      -y:所有问题都回答yes

  例 pvcreate /dev/sdb1 /dev/sdb2

2)pvscan:掃描目前系統上的所有實體磁碟區

用法:pvscan [option]

  选项:

      -e:仅显示属于输出卷组的物理卷

      -n:仅显示不属于任何卷组的物理卷

      -u:显示UUID

3)pvdisplay:顯示實體磁碟區的屬性

 用法:pvdisplay [PV_DEVICE]

4)pvremove:將實體磁碟區資訊刪除,使其不再被視為一個實體磁碟區

##
 用法:pvremove [option] PV_DEVICE

  选项:

      -f:强制删除

      -y:所有问题都回答yes

  例 pvremove /dev/sdb1

5)pv建立和刪除範例

[root@localhost ~]# pvcreate /dev/sdb{1,2}  # 将两个分区初始化为物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvscan 
  PV /dev/sdb2                      lvm2 [5.00 GiB]
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 2 [15.00 GiB] / in use: 0 [0   ] / in no VG: 2 [15.00 GiB]
[root@localhost ~]# pvdisplay /dev/sdb1   # 显示物理卷sdb1的详细信息
  "/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   # 由于PE是在VG阶段才划分的,所以此处看到的都是0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               GrP9Gi-ubau-UAcb-za3B-vSc3-er2Q-MVt9OO
   
[root@localhost ~]# pvremove /dev/sdb2   # 删除sdb2的物理卷信息
  Labels on physical volume "/dev/sdb2" successfully wiped.
[root@localhost ~]# pvscan     # 可以看到PV列表中已无sdb2
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 1 [10.00 GiB] / in use: 0 [0   ] / in no VG: 1 [10.00 GiB]
[root@localhost ~]# pvcreate /dev/sdb2 
  Physical volume "/dev/sdb2" successfully created.

3、建立VG(volume group,卷組)。卷組將多個物理卷整合起來(屏蔽了底層細節),並劃分PE(physical extend)

PE是物理卷中的最小存儲單元,有點類似於文件系統中的block ,PE大小可指定,預設為4M。這階段用到的指令有vgcreate、vgscan、vgdisplay、vgextend、vgreduce

1)vgcreate:建立卷宗組

#
 用法:vgcreate [option] VG_NAME PV_DEVICE

  选项:

      -s:卷组中的物理卷的PE大小,默认为4M

      -l:卷组上允许创建的最大逻辑卷数

      -p:卷级中允许添加的最大物理卷数

  例 vgcreate -s 8M myvg /dev/sdb1 /dev/sdb2

#2)vgscan:尋找系統中存在的LVM磁碟區組,並顯示找到的磁碟區組清單

#3)vgdisplay:顯示磁碟區組屬性

  用法:vgdisplay [option] [VG_NAME]

  选项:

      -A:仅显示活动卷组的信息

      -s:使用短格式输出信息

4)vgextend:動態擴展LVM卷組,它透過向卷組中添加物理卷來增加卷組的容量

 用法:vgextend VG_NAME PV_DEVICE

  例 vgextend myvg /dev/sdb3

#5)vgreduce:透過刪除LVM卷組中的實體磁碟區來減少磁碟區組容量,無法刪除LVM卷組中剩餘的最後一個實體磁碟區

 用法:vgreduce VG_NAME PV_DEVICE

#6)vgremove:刪除卷組,其上的邏輯卷必須處於離線狀態

  用法:vgremove [-f] VG_NAME

  -f:强制删除

7)vgchange:常用来设置卷组的活动状态

  用法:vgchange -a n/y VG_NAME

  -a n为休眠状态,休眠之前要先确保其上的逻辑卷都离线;

  -a y为活动状态

8)vg创建例子

[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "myvg" using metadata type lvm2
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               14.98 GiB
  PE Size               8.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / 14.98 GiB
  VG UUID               aM3RND-aUbQ-7RjC-dCci-JiS4-Oj2Z-wv9poA

4、在卷组上创建LV(logical volume,逻辑卷)

为了便于管理,逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME。LV中可以分配的最小存储单元称为LE(logical extend),在同一个卷组中,LE的大小和PE是一样的,且一一对应。这一阶段用到的命令有lvcreate、lvscan、lvdisplay、lvextend、lvreduce、lvresize

1)lvcreate:创建逻辑卷或快照

  用法:lvcreate [选项] [参数]

  选项:

      -L:指定大小

      -l:指定大小(LE数)

      -n:指定名称

      -s:创建快照

      -p r:设置为只读(该选项一般用于创建快照中)

  注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷         

  例 lvcreate -L 500M -n mylv myvg

2)lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件

3)lvdisplay:显示逻辑卷属性

  用法:lvdisplay [/dev/VG_NAME/LV_NAME]

4)lvextend:可在线扩展逻辑卷空间

  用法:lvextend -L/-l 扩展的大小 /dev/VG_NAME/LV_NAME  

  选项:

      -L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M

      -l:指定扩展(后)的大小(LE数)

  例 lvextend -L 200M /dev/myvg/mylv

5)lvreduce:缩减逻辑卷空间,一般离线使用

 用法:lvexreduce -L/-l 缩减的大小 /dev/VG_NAME/LV_NAME  

  选项:

      -L:指定缩减(后)的大小

      -l:指定缩减(后)的大小(LE数)

  例 lvreduce -L 200M /dev/myvg/mylv

6)lvremove:删除逻辑卷,需要处于离线(卸载)状态

  用法:lvremove [-f] /dev/VG_NAME/LV_NAME

  -f:强制删除

7)lv创建例子

[root@localhost ~]# lvcreate -L 2G -n mylv myvg  
  Logical volume "mylv" created.
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/myvg/mylv' [2.00 GiB] inherit
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                2lfCLR-UEhm-HMiT-ZJil-3EJm-n2H3-ONLaz1
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-07-05 13:42:44 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

5、格式化逻辑卷并挂载

[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv
...                        
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
...
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount
mount       mountpoint  
[root@localhost ~]# mount /dev/myvg/mylv /data
[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda1               50G  1.5G   49G   3% /
devtmpfs               903M     0  903M   0% /dev
tmpfs                  912M     0  912M   0% /dev/shm
tmpfs                  912M  8.6M  904M   1% /run
tmpfs                  912M     0  912M   0% /sys/fs/cgroup
tmpfs                  183M     0  183M   0% /run/user/0
/dev/mapper/myvg-mylv  2.0G  6.0M  1.8G   1% /data

PS:更新

一、LV逻辑卷扩容后,必须对挂载目录在线扩容。

使用 resize2fs或xfs_growfs 对挂载目录在线扩容
resize2fs 针对文件系统ext2 ext3 ext4
xfs_growfs 针对文件系统xfs

xfs在线扩容

xfs_growfs /dev/mapper/vg--BHG-lv01
meta-data=/dev/mapper/vg--BHG-lv01 isize=512    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0data blocks changed from 128000 to 256000

ext4在线扩容

[root@localhost /]# resize2fs /dev/mapper/vg--BHG-lv02
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg--BHG-lv02 is mounted on /BHGPOS-data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg--BHG-lv02 is now 5242880 blocks long.

相关推荐:《Linux视频教程

以上是linux的lvm分區是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn