首頁 運維 linux運維 linux中什麼是lvm

linux中什麼是lvm

Feb 24, 2022 pm 03:08 PM
linux lvm

在linux中,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): 2
First sector (20973568-62914559, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
...
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e  # 指定system id为8e
Changed 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
登入後複製

相关推荐:《Linux视频教程

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode 無法安裝擴展 vscode 無法安裝擴展 Apr 15, 2025 pm 07:18 PM

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

vscode 可以用於 mac 嗎 vscode 可以用於 mac 嗎 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。

See all articles