一、 概念與由來 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去替代我們之前的分區,我們通過對邏輯捲進行格式化,然後掛載就可以使用了。步驟如下:
- 將創建好的LV進行文件系統格式化,然後使用mount進行掛載,這時我們就可以像平常使用分區一樣使用邏輯捲了。
- 對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有順序,刪除也是要嚴格按照順序的。
卸載——>刪除邏輯捲——>刪除捲組——>刪除物理捲
- 卸載邏輯捲,使用umount命令
- 刪除邏輯捲,使用lvremove命令
- 刪除捲組,使用 vgremove命令
- 刪除物理捲,使用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