lvm邏輯捲

来源:https://www.cnblogs.com/xuxuxuxuxu/archive/2023/07/05/17529717.html
-Advertisement-
Play Games

# lvm邏輯捲 ## 前言 > raid磁碟陣列技術,提高硬碟的讀寫效率,以及數據的安全,raid的缺點在於: > 1.當你配置好了raid磁碟陣列組,容量的大小,已經是限定了,如果你存儲的業務非常多,磁碟容量不夠用的問題就會出現,你想要擴容磁碟的空間,就會非常麻煩。 > 2.不同的磁碟分區,相對 ...


lvm邏輯捲

前言

raid磁碟陣列技術,提高硬碟的讀寫效率,以及數據的安全,raid的缺點在於:
1.當你配置好了raid磁碟陣列組,容量的大小,已經是限定了,如果你存儲的業務非常多,磁碟容量不夠用的問題就會出現,你想要擴容磁碟的空間,就會非常麻煩。
2.不同的磁碟分區,相對都是獨立的,沒有任何聯繫,可能空間利用率比較低。
3.如果某一分區滿了,預設磁碟管理是無法直接擴容的,只能重新的分區,重新分配容量大小,創建文件系統,很麻煩。
4.如果你要合併分區,還是得重新格式化磁碟分區,還得進行數據備份。

lvm 邏輯捲管理技術

lvm (logical volume manager)

1.lvm原理
他是講一個或者多個硬碟在邏輯上進行了合併,相當於一個大的硬碟去使用,當你的硬碟空間不夠了,可以直接去其他硬碟中拿容量去使用,這就是一個動態的磁碟容量管理技術。

2.優點
lvm最大的優點就是可以對磁碟進行動態管理,可以提高磁碟管理的靈活性

3.基本概念
PP (Physical parttion) 物理分區,lvm直接創建在物理分區上。
PV (Physical Volume) 物理捲,處於lvm的最底層,一般一個PV對應一個PP。
PE (Physical Extend) 物理拓展,PV中可以用於分配的最小存儲單位。
VG (Volume Group) 捲組,捲組創建在PV之上,可以劃分為多個PV。
LE (Logical Extends) 邏輯擴展單元,邏輯擴展單元,LE是組成LV的基本單元,一個LE對應一個PE。
LV (Logical Volume) 邏輯捲,創建在VG之上,是一個可以動態擴展的分區概念。

-LVM動態擴容大小,其實就是通過互相交換PE的過程,達到能夠彈性擴容分區大小
-想要減少空間容量,就是剔除PE的大小
-想要擴大容量,就是把其他的PE添加到自己的LV當中
-PE預設大小一般都是4M,LVM最多是可以創建出65534個PE,因此LVM最大的VG捲組單位是256G
-PE其實是LVM最小的存儲單位,類似於操作系統的block (4k)
-LV邏輯捲的概念(理解為普通分區的概念,/dev/sdb /dev/sdc)

lvm的創建流程

`1.創建PV`
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

`2.創建捲組`
[root@localhost ~]# vgcreate xuxuvg1 /dev/sdb /dev/sdc
  Volume group "xuxuvg1" successfully created

`3.查看pv vg信息` 
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sda2  centos  lvm2 a--  <19.00g      0 
  /dev/sdb   xuxuvg1 lvm2 a--  <10.00g <10.00g
  /dev/sdc   xuxuvg1 lvm2 a--  <10.00g <10.00g
[root@localhost ~]# pvscan
  PV /dev/sdb    VG xuxuvg1         lvm2 [<10.00 GiB / <10.00 GiB free]
  PV /dev/sdc    VG xuxuvg1         lvm2 [<10.00 GiB / <10.00 GiB free]
  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]
  Total: 3 [<38.99 GiB] / in use: 3 [<38.99 GiB] / in no VG: 0 [0   ]
[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               xuxuvg1
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               NuXbh4-5URD-N3gP-CXQM-WUw4-uzAe-20br2v
   
  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               xuxuvg1
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               TsQu1V-2KZ0-gZtV-feuX-nnhO-iD3m-qUlc3m
   
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               6ipoOT-021J-hgZV-Ftku-zFGU-wj8u-AQB5FO  
  
  [root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  centos    1   2   0 wz--n- <19.00g     0 
  xuxuvg1   2   0   0 wz--n-  19.99g 19.99g
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "xuxuvg1" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               xuxuvg1
  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               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN
   
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               1qSTmy-1mDg-ZuGi-GP1o-kK1U-sUvk-qXznQV
   
`4.嘗試擴容,縮小vg捲組`
[root@localhost ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
  
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sda2  centos  lvm2 a--  <19.00g      0 
  /dev/sdb   xuxuvg1 lvm2 a--  <10.00g <10.00g
  /dev/sdc   xuxuvg1 lvm2 a--  <10.00g <10.00g
  /dev/sdd           lvm2 ---   10.00g  10.00g

[root@localhost ~]# vgextend xuxuvg1 /dev/sdd
  Volume group "xuxuvg1" successfully extended

`5.顯示一下捲組的信息,容量等`
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               xuxuvg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7677 / <29.99 GiB
  VG UUID               VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN

`6.還可以縮小捲組大小,剔除/dev/sdd`
[root@localhost ~]# vgreduce xuxuvg1 /dev/sdd
  Removed "/dev/sdd" from volume group "xuxuvg1"
  
`7.刪除/dev/sdd的物理捲`
[root@localhost ~]# pvremove /dev/sdd
  Labels on physical volume "/dev/sdd" successfully wiped.
  
`8.使用此時的捲組,創建邏輯捲,進行使用/dev/sdb /dev/sdc`
[root@localhost ~]# lvcreate -n lv1 -L +500M xuxuvg1
  Logical volume "lv1" created.
  
[root@localhost ~]# lvs
  LV   VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos  -wi-ao---- <17.00g                                                    
  swap centos  -wi-ao----   2.00g                                                    
  lv1  xuxuvg1 -wi-a----- 500.00m  
  
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/xuxuvg1/lv1
  LV Name                lv1
  VG Name                xuxuvg1
  LV UUID                VgzEKy-SlDf-oYed-LP0I-531x-wpt1-RcNZbR
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-07-05 00:50:00 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

`9.對剛創建的lv1邏輯捲進行格式化文件系統`
[root@localhost ~]# mkfs.xfs /dev/xuxuvg1/lv1
meta-data=/dev/xuxuvg1/lv1       isize=512    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

`10.向lv1邏輯捲中,進行掛載,以及數據寫入(就可以當作一個普通分區來使用了)`
[root@localhost ~]# mkdir /xuxu_lv1
[root@localhost ~]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/

[root@localhost ~]# df -Th
文件系統                類型      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.3G   15G   14% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/xuxuvg1-lv1 xfs       497M   26M  472M    6% /xuxu_lv1

`11.向磁碟中寫入數據,查看空間容量`
[root@localhost xuxu_lv1]# echo {1..3000000} > test.txt
[root@localhost xuxu_lv1]# df -Th
文件系統                類型      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.3G   15G   14% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/xuxuvg1-lv1 xfs       497M   48M  450M   10% /xuxu_lv1
[root@localhost xuxu_lv1]# echo {1..2000000} > test2.txt
[root@localhost xuxu_lv1]# df -Th
文件系統                類型      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.3G   15G   14% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/xuxuvg1-lv1 xfs       497M   62M  436M   13% /xuxu_lv1

`12.修改/etc/fstab 開機自動掛載`
[root@localhost xuxu_lv1]# vim /etc/fstab
/dev/xuxuvg1/lv1 /xuxu_lv1 xfs defaults 0 0

[root@localhost xuxu_lv1]# ls /xuxu_lv1/
test2.txt  test.txt

lv邏輯捲的擴容

`擴容  給lv1+10G`
`只要捲組中的容量夠用,就可以對lv邏輯捲擴容`

`1.先取消掛載lv1設備`
[root@localhost /]# umount /xuxu_lv1/

`2.使用lvextend命令擴容邏輯捲的大小`
[root@localhost /]# lvextend -L +10G /dev/xuxuvg1/lv1 
  Size of logical volume xuxuvg1/lv1 changed from 500.00 MiB (125 extents) to <10.49 GiB (2685 extents).
  Logical volume xuxuvg1/lv1 successfully resized.
  
`3.掛載邏輯捲開始使用`
[root@localhost /]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/
[root@localhost /]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.3G   15G   14% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/xuxuvg1-lv1 xfs       497M   62M  436M   13% /xuxu_lv1
`可以看到還是顯示500M`

`4.重新調整xfs文件系統大小`
[root@localhost /]# xfs_growfs /dev/xuxuvg1/lv1 
meta-data=/dev/mapper/xuxuvg1-lv1 isize=512    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 128000 to 2749440

[root@localhost /]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.3G   15G   14% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/xuxuvg1-lv1 xfs        11G   66M   11G    1% /xuxu_lv1

刪除邏輯捲

`1.生產環境下需要先把文件都備份,這裡實驗就不做演示了`
`2.取消掛載邏輯捲`
[root@localhost /]# umount /xuxu_lv1/

`3.刪除邏輯捲`
[root@localhost /]# lvremove /dev/xuxuvg1/lv1 
Do you really want to remove active logical volume xuxuvg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed

`4.刪除捲組`
[root@localhost /]# vgremove xuxuvg1
  Volume group "xuxuvg1" successfully removed

`5.刪除物理捲設備`
[root@localhost /]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   10.00g 10.00g
  /dev/sdc          lvm2 ---   10.00g 10.00g

[root@localhost /]# pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.

`6.最後檢查一下所有lvm相關信息`
[root@localhost /]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 

[root@localhost /]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 

[root@localhost /]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                     
  swap centos -wi-ao----   2.00g
  
`可以看到lvm相關信息都被刪除`

文章內容主要參考:https://www.bilibili.com/video/BV1LF411G7xh?p=40&vd_source=0318a6d26fb028b832726d62a0e9e2cb

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 🎉Avalonia 11.0.0 正式版發佈! [AvaloniaUI](https://github.com/AvaloniaUI/Avalonia/releases/tag/11.0.0) 發佈11.0.0正式版 終於avalonia發佈了正式版。 ## 更新內容 A11y(輔助功能) 這 ...
  • ​BackgroundImageLayout屬性值 背景圖片重覆:BackgroundImageLayout屬性設置為Tile(預設) 背景圖片左邊顯示:BackgroundImageLayout屬性設置為None 背景圖片右邊顯示:BackgroundImageLayout屬性設置為None,同時 ...
  • FCS一個完整的數據集主要有以下幾部分: 頭段(必須) 從數據集的第一個位元組開始,文件的第一個數據集是從文件的第一個位元組開始,最小長度為58個位元組。 以ASCII碼解析。 記錄內容包括文件版本號(0~5共6位元組)、文本段開始位元組位(10~17共8位元組)、文本段結束位元組位(18~25共8位元組)、數據段 ...
  • ## 前言 一開始是一個自用的應用,原本是用razor寫的。最近有了點新想法,加點新功能,但是我接觸的項目基本都是vue+api的前後端分離,用這razor寫的是真不習慣,最後決定還是用習慣的vue重寫。 之前嘗試過在.net core里使用vue2+webpack,畢竟實際上就是把.vue翻譯成了 ...
  • ## 一:背景 ### 1. 講故事 前幾天有位朋友找到我,說他的程式有記憶體泄露,讓我幫忙排查一下,截圖如下: ![](https://img2023.cnblogs.com/blog/214741/202307/214741-20230705122211449-1056329846.png) 說實 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是**從功耗測試角度瞭解i.MXRTxxx系列片內SRAM分區電源控制**。 我們知道配合 MCU 一起工作的存儲器包含 ROM(Flash) 和 RAM 兩類,前者主要放 RO 代碼和數據,後者放 RW 數據。MCU 可以沒有片內 RO ...
  • 這個錯誤表明在載入 openssl 時找不到共用庫文件 libssl.so.3。這可能是由於缺少該共用庫或者庫文件路徑不正確導致的。 要解決這個問題,您可以嘗試以下幾種方法: 安裝 OpenSSL:確保您的系統上已經正確安裝了 OpenSSL。您可以使用操作系統的包管理器來安裝 OpenSSL,具體 ...
  • 一、Linux 系統日常運維九大技能 1、安裝部署 方式:U盤,光碟和網路安裝 其中網路安裝已經成為了目前批量部署的首選方式:主要工具有Cobbler和PXE+kickstart 可以參考如下鏈接內容: http://www.cnblogs.com/mchina/p/centos-pxe-kicks ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...