邏輯捲管理-LVM(Logical Volume Manager)

来源:https://www.cnblogs.com/flashfish/archive/2019/04/22/10748882.html
-Advertisement-
Play Games

一、 概念與由來 LVM:邏輯捲管理(Logical Volume Manager) 普通的磁碟分區管理方式在邏輯分區劃分好之後就無法改變其大小,當一個邏輯分區存放不下某文件時,這個文件因為受上層文件系統的限制,不能跨越多個分區存放,所以也不能放到多個磁碟上。 而當某個分區空間耗盡時,解決的方法通常 ...


一、 概念與由來

LVM:邏輯捲管理(Logical Volume Manager)

普通的磁碟分區管理方式在邏輯分區劃分好之後就無法改變其大小,當一個邏輯分區存放不下某文件時,這個文件因為受上層文件系統的限制,不能跨越多個分區存放,所以也不能放到多個磁碟上。

而當某個分區空間耗盡時,解決的方法通常是使用符號鏈接,或者是調整分區大小的工具(工具有可能會導致我們的系統崩潰),但這都沒有從根本上解決問題。

隨著LVM的出現,問題迎刃而解,用戶在無需停機的情況下可以很方便的調整分區的大小

二、 工作原理

LVM的工作原理是通過將底層的物理硬碟抽象的封裝起來,然後以邏輯捲的方式呈現給上層應用。

在傳統的磁碟管理機制中,上層應用是直接訪問文件系統來對底層的物理硬碟進行讀寫。而在LVM中,它會將底層的硬碟進行封裝,當我們通過軟體去對底層的物理磁碟進行操作時,它不再是直接對分區進行操作,而是通過邏輯捲對底層的物理硬碟進行操作。

LVM最大的特點就是可以對磁碟進行動態管理,因為邏輯捲的大小是可以動態調整的,而且不會丟失數據。邏輯捲的技術大大提高了磁碟管理的邏輯性。

三、 名詞解釋

物理存儲介質(The physical media):這裡指系統的存儲設備:硬碟,如:/dev/hda、/dev/sda等,是存儲系統最低層的存儲單元。

物理捲(Physical Volume):物理捲就是指硬碟分區或從邏輯上與磁碟分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁碟等)比較,卻包含有與LVM相關的管理參數。

捲組(Volume Group):LVM捲組類似於非LVM系統中的物理硬碟,其由物理捲組成。可以在捲組上創建一個或多個“LVM分區”(邏輯捲),LVM捲組由一個或多個物理捲組成。

邏輯捲(Logical Volume):LVM的邏輯捲類似於非LVM系統中的硬碟分區,在邏輯捲之上可以建立文件系統(比如/home或者/usr等)。

PE(Physical Extent):每一個物理捲被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM定址的最小單元。PE的大小是可配置的,預設為4MB。

LE(Logical Extent):邏輯捲也被劃分為被稱為LE(Logical Extents) 的可被定址的基本單位。在同一個捲組中,LE的大小和PE是相同的,並且一一對應。

四、LVM創建邏輯概念

我們以LVM對磁碟進行動態管理後,使硬碟以邏輯捲的形式呈獻給上層服務的。所以我們操作的目的就是創建LV,用LV去替代我們之前的分區,我們通過對邏輯捲進行格式化,然後掛載就可以使用了。步驟如下:

 

  1. 將創建好的LV進行文件系統格式化,然後使用mount進行掛載,這時我們就可以像平常使用分區一樣使用邏輯捲了。
  2. 對LVM的工作原理進行總結

    a)         物理磁碟被格式化為PV,空間被劃分成一個個的PE

    b)        將不同的PV加入到同一個VG中,不同PV的PE全部放到了VG的PE池中

    c)         LV基於PE創建,大小為PE的整數倍,組成LV的PE可能來自不同的磁碟

    d)        LV在格式化文件系統後掛載就可以使用了

    e)         LV的擴充縮減實際上就是增加或減少PE數量,其過程不會丟失數據

    所以,如果我們要對LV進行擴充,首先加入一塊磁碟,然後格式化成PV,將該PV加入到VG中,然後我們就可以從VG中拿出空閑的PE對LV進行擴充了

 

五、命令解析

    a)PV管理

      pvcreate    # 創建PV

      pvscan       # 掃描併列出所有PV

      pvdisplay    # 列出PV屬性信息

      pvremove      #  移除PV

      pvmove      # 移動PV中的數據

   

    b)VG管理

      vgcreate    # 創建VG

        -s    # 指定PE的大小

        -l    # 捲組上允許創建的最大邏輯捲數

        -p    # 捲組中允許添加的最大物理捲數

      vgscan     # 掃描併列出所有VG

      vgdisplay    # 列出VG屬性信息

      vgremove    # 移除VG

      vgreduce      # 從VG中移除PV

      vgextend     # 將PV添加到VG

      vgchange     # 設置VG是否啟動(active)

    

    c)LV管理

      lvcreate      # 創建LV

        -L +size # 指定LV大小

        -n      # 指定LV名字 

示例:lvcreate -L 5G -n lv vg0   然後再/dev/mapper中會創建vg0-lv1

      lvscan        # 掃描併列出所有LV

      lvdisplay      # 列出LV屬性信息

      lvremove      # 移除lv

      lvreduce(lvresize)  # 縮小lv容量

      lvextend(lvresize)  # 增大lv容量

      lvresize      # 蓋面lv容量

      

六、創建邏輯捲

  1.使用pvcreate命令將物理磁碟格式化成PV,使用pvcreate命令。

    a)         虛擬兩塊2G物理硬碟,可以通過fdisk –l命令查看

    b)        先將/dev/sdb,/dev/sdc格式為PV

    c)         使用pvs查看簡單信息,pvdisplay查看詳細信息

 

[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  1.7G   97G   2% /
devtmpfs        901M     0  901M   0% /dev
tmpfs           911M     0  911M   0% /dev/shm
tmpfs           911M  9.5M  902M   2% /run
tmpfs           911M     0  911M   0% /sys/fs/cgroup
/dev/sda1      1014M  135M  880M  14% /boot
tmpfs           183M     0  183M   0% /run/user/0
[root@centos7 ~]# fdisk -l

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c1b7a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sda3         4196352   209715199   102759424   83  Linux

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@centos7 ~]# yum install lvm2 -y          # 安裝lvm2軟體
[root@centos7 ~]# rpm -qa|grep lvm            # 過濾lvm包組
lvm2-2.02.180-10.el7_6.3.x86_64
lvm2-libs-2.02.180-10.el7_6.3.x86_64

[root@centos7 ~]# pvcreate /dev/sdb /dev/sdc       # 將新添加的兩塊磁碟格式化為PV
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.


[root@centos7 ~]# pvs                    # 查看PV簡單信息
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb      lvm2 ---  2.00g 2.00g
  /dev/sdc      lvm2 ---  2.00g 2.00g

[root@centos7 ~]# pvdisplay                 # 顯示目前系統上的PV狀態
"/dev/sdb" is a new physical volume of "2.00 GiB"    
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               dhEvh2-mOsu-Tyas-6wb8-6gfD-EpT7-0lb1ff
   
  "/dev/sdc" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bLrH3d-Ry0I-durj-3apN-q4kF-m0uy-DG8f5q

 

 2.創建捲組VG,並將PV加入到VG,通過vgcreate命令

[root@centos7 ~]# vgcreate pool /dev/sdb /dev/sdc    # 創建VG池
  Volume group "pool" successfully created
[root@centos7 ~]# vgs                     # 查看簡單信息
  VG   #PV #LV #SN Attr   VSize VFree
  pool   2   0   0 wz--n- 3.99g 3.99g            #此處顯示的3.99G就是兩塊磁碟給格式化成PE後組成的VG容量
[root@centos7 ~]# vgdisplay                  # 查看詳細信息
  --- Volume group ---      
  VG Name               pool
  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               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               e55Yks-0Phr-VarP-xAF8-8W4B-vBFg-VWqPm3

  3.基於VG創建LV,通過lvcreate命令

[root@centos7 ~]# lvcreate -n xiaoliziLV -L 2G pool            # 創建LV邏輯捲名字為xiaoliziLV 大小為2G
  Logical volume "xiaoliziLV" created.
[root@centos7 ~]# lvs                              # 簡單顯示LV信息
  LV         VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  xiaoliziLV pool -wi-a----- 2.00g  
[root@centos7 ~]# lvdisplay                           # 詳細顯示LV信息
  --- Logical volume ---  
  LV Path                /dev/pool/xiaoliziLV
  LV Name                xiaoliziLV
  VG Name                pool
  LV UUID                xhCdbm-JZvA-MIMW-4p0K-0V4O-Gl60-9X4mNr
  LV Write Access        read/write
  LV Creation host, time centos7, 2019-04-19 17:40:39 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  [root@centos7 ~]# ls /dev/mapper/
    control pool-xiaoliziLV


  [root@centos7 ~]# mkfs.xfs /dev/mapper/pool-xiaoliziLV          # 格式化文件系統
    meta-data=/dev/mapper/pool-xiaoliziLV isize=512 agcount=4, agsize=131072 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=524288, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0


 [root@centos7 ~]# mkdir /lvtest                        # 創建掛載點
 [root@centos7 ~]# mount /dev/mapper/pool-xiaoliziLV /lvtest/
 [root@centos7 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 98G 1.6G 97G 2% /
    devtmpfs 901M 0 901M 0% /dev
    tmpfs 911M 0 911M 0% /dev/shm
    tmpfs 911M 9.6M 902M 2% /run
    tmpfs 911M 0 911M 0% /sys/fs/cgroup
    /dev/sda1 1014M 135M 880M 14% /boot
    tmpfs 183M 0 183M 0% /run/user/0
    /dev/mapper/pool-xiaoliziLV 2.0G 33M 2.0G 2% /lvtest

 

 

七、擴容一個邏輯捲

在傳統的硬碟管理模式中,如果我們一個分區大小不夠用了(硬碟還有剩餘空間的時候),需要擴容,那隻能將此分區所有的信息轉到別處,卸載後重新分區,最後再將新的分區掛載上去。

如果在生產環境中,這樣的操作是不可想象的,費時費力。而使用LVM就方便很多了,見圖:

 

 

從上圖可以看出,所謂擴容就是往LV中增加PE的數量,增加多少取決你VG中空閑的PE數量。

【註意】邏輯捲的擴容可以線上進行,不需要卸載邏輯捲。這樣的管理方式對於7*24小時小對外提供服務的公司就非常有必要了。

  第一種情況:VG中有足夠的剩餘空間(能看到空閑1.99G),這時為 LV增加1G的容量。步驟如下:

[root@centos7 ~]# vgdisplay 
  --- Volume group ---
  VG Name               pool
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       512 / 2.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               e55Yks-0Phr-VarP-xAF8-8W4B-vBFg-VWqPm3
   
[root@centos7 ~]# lvextend -L +1G /dev/pool/xiaoliziLV               # 擴容邏輯捲1G,使用lvextend命令

  Size of logical volume pool/xiaoliziLV changed from 2.00 GiB (512 extents) to 3.00 GiB (768 
extents).
  Logical volume pool/xiaoliziLV successfully resized.
[root@centos7 ~]# lvdisplay                               # 查看邏輯捲信息(發現LV已經是3G了)
--- Logical volume ---
  LV Path                /dev/pool/xiaoliziLV
  LV Name                xiaoliziLV
  VG Name                pool
  LV UUID                xhCdbm-JZvA-MIMW-4p0K-0V4O-Gl60-9X4mNr
  LV Write Access        read/write
  LV Creation host, time centos7, 2019-04-19 17:40:39 +0800
  LV Status              available
  # open                 1
  LV Size                3.00 GiB
  Current LE             768
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

[root@centos7
~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 xfs 98G 1.6G 97G 2% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 911M 0 911M 0% /dev/shm tmpfs tmpfs 911M 9.6M 902M 2% /run tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 135M 880M 14% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/pool-xiaoliziLV xfs 2.0G 33M 2.0G 2% /lvtest

# 我們上面可以看到僅僅是LV的大小有改變,而真實文件系統的大小未改變。這是因為我們在創建完LV之後就立馬格式化為文件系統了,此後我們對邏輯捲的修改,是不會直接影響到文件系統的。這時候就要用到一個更新的命令resize2fs/xfs_growfs

[root@centos7 ~]# resize2fs /dev/mapper/pool-xiaoliziLV       
  resize2fs 1.42.9 (28-Dec-2013)
  resize2fs: Bad magic number in super-block while trying to open /dev/mapper/pool-xiaoliziLV      # 此處報錯,是因為之前的文件系統是xfs的,所以此處擴充命令是xfs_growfs
  Couldn't find valid filesystem superblock.

[root@centos7 ~]# xfs_growfs /dev/mapper/pool-xiaoliziLV                             # 更新文件系統
meta-data=/dev/mapper/pool-xiaoliziLV isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 524288 to 786432

[root@centos7 ~]# df -h                  # 擴容完成
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 1.6G 97G 2% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 135M 880M 14% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/pool-xiaoliziLV 3.0G 33M 3.0G 2% /lvtest

 

  第二種情況:VG中沒有足夠的剩餘空間(能看到空閑1G),這時為 LV增加16G的容量。步驟如下:

[root@centos7 ~]# vgdisplay 
  --- Volume group ---
  VG Name               pool
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       768 / 3.00 GiB
  Free  PE / Size       254 / 1016.00 MiB
  VG UUID               e55Yks-0Phr-VarP-xAF8-8W4B-vBFg-VWqPm3
   
[root@centos7 ~]# lvextend -L 16G /dev/pool/xiaoliziLV      # 沒有足夠的的容量

[root@centos7 ~]# ls /dev/sdd                     # 添加了一塊20G的新硬碟
/dev/sdd  
[root@centos7 ~]# pvcreate /dev/sdd                # 創建pv
  Physical volume "/dev/sdd" successfully created.
[root@centos7 ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree   
  /dev/sdb   pool lvm2 a--  <2.00g       0 
  /dev/sdc   pool lvm2 a--  <2.00g 1016.00m
  /dev/sdd        lvm2 ---  20.00g   20.00g
[root@centos7 ~]# vgextend pool /dev/sdd              # 創建VG池
  Volume group "pool" successfully extended
[root@centos7 ~]# vgdisplay                      # free pe size 大於20G了
  --- Volume group ---
  VG Name               pool
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <23.99 GiB
  PE Size               4.00 MiB
  Total PE              6141
  Alloc PE / Size       768 / 3.00 GiB
  Free  PE / Size       5373 / <20.99 GiB
  VG UUID               e55Yks-0Phr-VarP-xAF8-8W4B-vBFg-VWqPm3
   
[root@centos7 ~]# lvextend -L +16G /dev/pool/xiaoliziLV      # 擴容16G的容量
  Size of logical volume pool/xiaoliziLV changed from 3.00 GiB (768 extents) to 19.00
B (4864 extents).
  Logical volume pool/xiaoliziLV successfully resized.

[root@centos7
~]# xfs_growfs /dev/pool/xiaoliziLV       # 格式化文件系統報錯,因為之前的掛載沒寫入開機自檢里,所以會報錯 xfs_growfs: /dev/pool/xiaoliziLV is not a mounted XFS filesystem [root@centos7 ~]# mount /dev/mapper/pool-xiaoliziLV /lvtest    # 重新掛載下 [root@centos7 ~]# xfs_growfs /dev/pool/xiaoliziLV           # 擴容成功 meta-data=/dev/mapper/pool-xiaoliziLV isize=512 agcount=6, agsize=131072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=786432, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 786432 to 4980736

 [root@centos7 ~]# df -h
   Filesystem Size Used Avail Use% Mounted on
   /dev/sda3 98G 1.6G 97G 2% /
   devtmpfs 901M 0 901M 0% /dev
   tmpfs 911M 0 911M 0% /dev/shm
   tmpfs 911M 9.5M 902M 2% /run
   tmpfs 911M 0 911M 0% /sys/fs/cgroup
   /dev/sda1 1014M 135M 880M 14% /boot
   tmpfs 183M 0 183M 0% /run/user/0
   /dev/mapper/pool-xiaoliziLV 19G 34M 19G 1% /lvtest




七、縮小一個邏輯捲

  縮小邏輯捲其實就是從LV中拿出指定指定數量的PE放回VG。

 

【註意】邏輯捲的縮小操作必須要先卸載邏輯捲才行,否則可能會造成邏輯捲中的文件發生損壞。這時我們將LV縮小至10G,步驟如下:

1.通過umount卸載已掛載的邏輯捲
[root@onion
~]# umount /mnt/ [root@onion ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 ext4 48G 1.5G 44G 4% / tmpfs tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 ext4 190M 35M 146M 19% /boot 2.縮小LV的大小:我們前面講到對LV擴容後,需要執行resize2fs/xfs_growfs更新我們的文件系統,但是在對LV進行縮小操作時(xfs文件系統不支持縮容),必須先執行縮小的操作 [root@onion ~]# resize2fs /dev/pool/mylv 10G # 檢查文件系統 或者 e2fsck -f /dev/pool/mylv resize2fs 1.41.12 (17-May-2010) Please run 'e2fsck -f /dev/pool/mylv' first. [root@onion ~]# e2fsck -f /dev/pool/mylv e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/pool/mylv: 12/1245184 files (0.0% non-contiguous), 95937/4980736 blocks 3.檢查完畢後,再使用resize2fs去縮小文件系統
[root@onion
~]# resize2fs /dev/pool/mylv 10G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/pool/mylv to 2621440 (4k) blocks. The filesystem on /dev/pool/mylv is now 2621440 blocks long. 4.跟擴容的順序剛好相反,我們先縮小了文件系統,再縮小LV,使用lvreduce命令 [root@onion ~]# lvreduce -L -9G /dev/pool/mylv WARNING: Reducing active logical volume to 10.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce pool/mylv? [y/n]: y
註:這裡會提示一個警告可能會損壞我們的文件,這種情況會出現在 當我們需要縮小的文件大小與實際操作時縮小(resize2fs)的文件大小不一致時,比如這裡我如果多縮小了1個G大小的邏輯捲,這個時候就會出現文件損壞的情況 Size of logical volume pool
/mylv changed from 19.00 GiB (4864 extents) to 10.00 GiB (2560 extents). Logical volume mylv successfully resized. [root@onion ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv pool -wi-a----- 10.00g 【註意】縮小邏輯捲是一個非常危險的操作,稍不註意就可能損壞我們的邏輯捲,造成文件的丟失或損壞,所以我們一般不要對邏輯捲進行縮減的操作 5.縮小之後,再將邏輯捲掛載在/mnt下,看裡面的文件是否存在。

 

八、縮小捲組

  當我們VG中空間足夠用,有很多剩餘的時候,我們想把裡面沒用到的硬碟拆下來,以作它用。這時候就需要我們去執行縮小捲組的操作了。

  

1.首先使用pvdisplay查看各PV的信息,可以看到/dev/sdd空間是未被使用的
[root@onion ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               pool
  PV Size               8.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2047
  Free PE               0
  Allocated PE          2047
  PV UUID               SfW2Wo-NeZM-KXSX-UqQj-VWHV-NAL6-UQb3lw
   
  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               pool
  PV Size               8.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2047
  Free PE               1534
  Allocated PE          513
  PV UUID               F8Gq56-M9ff-i9e9-TEvF-1BOL-qsiJ-PTuApu
   
  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               pool
  PV Size               8.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2047
  Free PE               2047
  Allocated PE          0
  PV UUID               IT2wzW-bVBQ-NU7C-9EbU-3uie-W1LF-Vx3clj

2.確定磁碟後,還是先卸載邏輯捲

[root@onion
~]# umount /mnt/ [root@onion ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 ext4 48G 1.5G 44G 4% / tmpfs tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 ext4 190M 35M 146M 19% /boot 3.將這個PV從指定捲中移除並查看。
[root@onion
~]# vgreduce pool /dev/sdd Removed "/dev/sdd" from volume group "pool" [root@onion ~]# vgdisplay --- Volume group --- VG Name pool System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 15.99 GiB PE Size 4.00 MiB Total PE 4094 Alloc PE / Size 2560 / 10.00 GiB Free PE / Size 1534 / 5.99 GiB VG UUID YUlucV-5pVP-W73A-DAsR-EIlw-jnVf-l5Y9M1 4.查看PV情況(發現還是有/dev/sdd)
[root@onion
~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb pool lvm2 a--u 8.00g 0 /dev/sdc pool lvm2 a--u 8.00g 5.99g /dev/sdd lvm2 ---- 8.00g 8.00g 5.移除/dev/sdd這個PV
[root@onion
~]# pvremove /dev/sdd Labels on physical volume "/dev/sdd" successfully wiped [root@onion ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb pool lvm2 a--u 8.00g 0 /dev/sdc pool lvm2 a--u 8.00g 5.99g
6.重新掛載,查看文件是否改變
[root@onion
~]# mount /dev/pool/mylv /mnt [root@onion ~]# ll /mnt/ total 16 -rw-r--r--. 1 root root 0 Jul 15 10:56 koala drwx------. 2 root root 16384 Jul 15 10:46 lost+found

九、刪除邏輯捲

  對於不想用的邏輯捲,可以刪除掉。

【註意】創建LV有順序,刪除也是要嚴格按照順序的。

 

卸載——>刪除邏輯捲——>刪除捲組——>刪除物理捲

  1. 卸載邏輯捲,使用umount命令
  2. 刪除邏輯捲,使用lvremove命令
  3. 刪除捲組,使用 vgremove命令
  4. 刪除物理捲,使用pvremove命令
[root@onion ~]# umount /dev/pool/mylv

[root@onion ~]# lvremove /dev/pool/mylv

Do you really want to remove active logical volume mylv? [y/n]: y

  Logical volume "mylv" successfully removed

[root@onion ~]# vgremove pool

  Volume group "pool" successfully removed

[root@onion ~]# pvremove /dev/sdb

  Labels on physical volume "/dev/sdb" successfully wiped


# 查看卸載狀態 [root@onion
~]# lvs [root@onion ~]# vgs [root@onion ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdc lvm2 ---- 8.00g 8.00g

 


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

-Advertisement-
Play Games
更多相關文章
  • 需求: 自己有個功能變數名稱,原來直接扔在了伺服器的文件夾里(根據客服人員指導),自己玩了一遍nginx的安裝部署等操作之後,功能變數名稱的指向發生了改變,到了nginx成功的界面。 自己抱著極大的好奇心來配置nginx,已達到我能訪問到我的主頁的樣子,當然啦。做個功能變數名稱主頁對我來說最主要的作用就是學(裝)習(逼)。 ...
  • man 查看英文命令幫助 可以看作--help 拷貝目錄的命令cp -a 包含所有 ls -a 顯示所有文件包括隱藏文件 -ld ls -F 過濾目錄文件(給不同類型文件結尾加上不同的符號) -h顯示文件的k,M,G -i顯示文件的索引inode ls -l --time-style=long-is ...
  • 遇到了好幾個centos6.5,一直嘗試想提權。暫未成功,靶機內核:2.6.32-696.18.7.el6.x86_64。glibc版本:ldd (GNU libc) 2.12目前編譯過程中都發現很多坑。最開始編譯報錯,指定gcc路徑/usr/bin/gcc,指定std為c99,使用-std=c99... ...
  • 最近在學習Liunx,從裝虛擬機到敲命令出了一些問題,95%的問題從搜索引擎都可以找到。本來想寫個虛擬機安裝步驟結果忘記截圖了,不過沒事,網上一大把。寫寫博文勒就是記錄下自己的成長,雖然現在還是個小白。同時也讓一起在學習的小伙伴們一起交流學習。 1.開啟虛擬機出現了“內部錯誤”,截圖如下 解決方法: ...
  • 1、begin #! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。 echo 命令用於向視窗輸出文本。 2、運行shell的2種方式 2.1、作為可執行程式 將上面的代碼保存為 test.sh,並 cd 到相應目錄: 2.2、作為解釋器參數 這種運行方式是,直 ...
  • ps 查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令 參數格式: UNIX格式:一個"-"開頭 BSD格式:沒有"-"開頭 GNU長格式:兩個"-"開頭 a # 顯示與終端相關的所有進程,包含每個進程的完整路徑 u # 顯示進程的用戶信息 x # 顯示與終端無關的所 ...
  • 註:本文僅針對Cortex-M3/4 系列進行講述。 在傳統的ARM處理器架構中,常使用SWP指令來實現鎖的讀/寫原子操作,但從ARM v6開始,讀/寫訪問在獨立的兩條匯流排上進行,SWP指令已無法在此架構下保證讀/寫訪問的原子操作,因此互斥訪問指令應運而生。本文結合項目中運用的相關方法,總結Cort ...
  • 什麼是雲計算? 雲計算是一種採用按量付費的模式,基於虛擬化技術,將相應計算資源(如網路、存儲等)池化後,提供便捷的、高可用的、高擴展性的、按需的服務(如計算、存儲、應用程式和其他 IT 資源)。 雲計算的基本特征? 自主服務:可按需的獲取雲端的相應資源(主要指公有雲); 網路訪問:可隨時隨地使用任何 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...