練習
創建物理卷(pv->vg->lv)
物理卷(PV)就像把一塊塊獨立的硬盤,標記成 "可用于搭建 LVM 的積木",讓系統知道這些硬盤可以被 LVM 管理。
#把sdb這塊硬盤標記為物理卷(相當于給這塊積木蓋章,說明 "這是 LVM 專用積木")[root@server ~ 10:59:59]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.#同時把sdc和sdd兩塊硬盤也標記為物理卷(一次性處理多個積木)[root@server ~ 11:18:01]# pvcreate /dev/sd{c,d}Physical volume "/dev/sdc" successfully created.Physical volume "/dev/sdd" successfully created.#查看所有物理卷的狀態(pvs是 "物理卷列表" 的縮寫)[root@server ~ 11:18:21]# pvsPV ? ? ? ? VG ? ? Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- ?52.00g ?4.00m/dev/sdb ? ? ? ? lvm2 --- ?20.00g 20.00g ?#20G空閑還是未使用的/dev/sdc ? ? ? ? lvm2 --- ?20.00g 20.00g/dev/sdd ? ? ? ? lvm2 --- ?20.00g 20.00g#查看sdb這塊物理卷的詳細信息(比如大小、是否被使用等),確認它是 20G 的新卷[root@server ~ 11:18:31]# pvdisplay /dev/sdb"/dev/sdb" is a new physical volume of "20.00 GiB"--- NEW Physical volume ---PV Name ? ? ? ? ? ? ? /dev/sdbVG Name ? ? ? ? ? ? ? PV Size ? ? ? ? ? ? ? 20.00 GiBAllocatable ? ? ? ? ? NOPE Size ? ? ? ? ? ? ? 0 ? Total PE ? ? ? ? ? ? ?0Free PE ? ? ? ? ? ? ? 0Allocated PE ? ? ? ? ?0PV UUID ? ? ? ? ? ? ? fSUdiC-O7r0-t3jf-Kxc5-aEpE-0Lbk-RA1weH?
創建卷組
卷組(VG)就像一個 "收納盒",把多個物理卷(積木)裝進去,統一管理。之后創建的邏輯卷會從這個盒子里取空間
#創建一個叫webapp的卷組(收納盒),把sdb這塊物理卷(積木)放進去[root@server ~ 11:18:39]# vgcreate webapp /dev/sdbVolume group "webapp" successfully created#再創建一個叫dbapp的卷組,把sdc和sdd兩塊物理卷放進去(一個盒子可以裝多塊積木)[root@server ~ 11:19:45]# vgcreate dbapp /dev/sd{c,d}Volume group "dbapp" successfully created#再次查看物理卷,發現sdb屬于webapp卷組,sdc和sdd屬于dbapp卷組(積木已經放進對應盒子了)[root@server ~ 11:20:06]# pvsPV ? ? ? ? VG ? ? Fmt Attr PSize ? PFree ?/dev/sda2 centos lvm2 a-- ? 52.00g ? 4.00m/dev/sdb ? webapp lvm2 a-- <20.00g <20.00g/dev/sdc ? dbapp lvm2 a-- <20.00g <20.00g/dev/sdd ? dbapp lvm2 a-- <20.00g <20.00g#查看所有卷組的狀態(vgs是 "卷組列表" 的縮寫)。#結果顯示:dbapp卷組有 2 塊物理卷(#PV=2),總空間約 40G(20G+20G),目前全是空的(VFree=39.99g);webapp卷組有 1 塊物理卷,總空間約 20G[root@server ~ 11:20:10]# vgsVG ? ? #PV #LV #SN Attr ? VSize ? VFree ?centos ? 1 ? 2 ? 0 wz--n- ?52.00g ? 4.00mdbapp ? ?2 ? 0 ? 0 wz--n- ?39.99g ?39.99gwebapp ? 1 ? 0 ? 0 wz--n- <20.00g <20.00g#查看dbapp卷組的詳細信息,確認它的總空間是 40G,且完全空閑(所有積木都沒被用)[root@server ~ 11:20:26]# vgdisplay dbapp--- Volume group ---VG Name ? ? ? ? ? ? ? dbappSystem ID ? ? ? ? ? ? Format ? ? ? ? ? ? ? lvm2Metadata Areas ? ? ? ?2Metadata Sequence No ?1VG Access ? ? ? ? ? ? read/writeVG Status ? ? ? ? ? ? resizable......VG Size ? ? ? ? ? ? ? 39.99 GiBPE Size ? ? ? ? ? ? ? 4.00 MiBTotal PE ? ? ? ? ? ? ?10238Alloc PE / Size ? ? ? 0 / 0 ? Free PE / Size ? ? ? 10238 / 39.99 GiBVG UUID ? ? ? ? ? ? ? kUsUui-4yZ8-SqKL-6xIN-Bdfq-sgWh-e9Z1hR
創建邏輯卷
邏輯卷(LV)就像從卷組(收納盒)里切割出的一塊 "虛擬硬盤",可以直接用它來存數據。大小可以靈活調整,不受物理硬盤限制
#從webapp卷組(收納盒)里切割出一塊 5G 的空間,取名webapp01(邏輯卷)。#-n:指定邏輯卷名字;-L 5G:指定大小為 5G[root@server ~ 11:20:37]# lvcreate -n webapp01 -L 5G webappLogical volume "webapp01" created.#從dbapp卷組里切割出 25G 的空間,取名data01(dbapp總共有 40G,足夠分 25G)[root@server ~ 11:21:40]# lvcreate -n data01 -L 25G dbappLogical volume "data01" created.#查看所有邏輯卷(lvs是 "邏輯卷列表" 的縮寫),確認webapp01(5G)和data01(25G)已創建[root@server ~ 11:21:50]# lvsLV ? ? ? VG ? ? Attr ? ? ? LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot ? ? centos -wi-ao---- 50.00g ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?swap ? ? centos -wi-ao---- ?2.00g ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?data01 ? dbapp ?-wi-a----- 25.00g ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?webapp01 webapp -wi-a----- ?5.00g ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
#邏輯卷設備名由如下三種格式:- /dev/vname/lvame- /dev/mapper/vname-lvame- /dev/dm-N??#邏輯卷的訪問路徑有多種方式,比如/dev/dbapp/data01或/dev/mapper/dbapp-data01,其實都是指向同一個邏輯卷(相當于一個文件有多個快捷方式)?[root@server ~ 11:21:56]# ls -l /dev/dbapp/data01 /dev/mapper/dbapp-data01lrwxrwxrwx 1 root root 7 8月 ? 4 11:21 /dev/dbapp/data01 -> ../dm-3lrwxrwxrwx 1 root root 7 8月 ? 4 11:21 /dev/mapper/dbapp-data01 -> ../dm-3?
# 查看data01邏輯卷的詳細信息,確認它屬于dbapp卷組,大小 25G[root@server ~ 11:22:19]# lvdisplay /dev/dbapp/data01--- Logical volume ---LV Path ? ? ? ? ? ? ? /dev/dbapp/data01LV Name ? ? ? ? ? ? ? data01VG Name ? ? ? ? ? ? ? dbappLV UUID ? ? ? ? ? ? ? QKSeZN-4S6s-AJyx-NNm1-l29s-WCf6-tkCKnlLV Write Access ? ? ? read/writeLV Creation host, time server.lyk.cloud, 2025-08-04 11:21:50 +0800LV Status ? ? ? ? ? ? available# open ? ? ? ? ? ? ? ? 0LV Size ? ? ? ? ? ? ? ?25.00 GiB......?# 再次查看物理卷,發現webapp卷組的sdb用了 5G(因為webapp01是 5G);dbapp卷組的sdc(20G)全用完了,sdd用了 5G(因為data01要 25G,sdc的 20G 不夠,就從sdd再取 5G)[root@server ~ 11:23:20]# pvsPV ? ? ? ? VG ? ? Fmt Attr PSize ? PFree ?/dev/sda2 centos lvm2 a-- ? 52.00g ? 4.00m/dev/sdb ? webapp lvm2 a-- <20.00g <15.00g/dev/sdc ? dbapp lvm2 a-- <20.00g ? ? ?0 /dev/sdd ? dbapp lvm2 a-- <20.00g ?14.99g?# 用lsblk查看硬盤分區關系,清晰看到data01邏輯卷橫跨了sdc和sdd兩塊物理硬盤(這就是 LVM 的靈活之處:邏輯卷可以跨多個硬盤)[root@server ~ 11:23:58]# lsblk /dev/sd{b..d}NAME ? ? ? ? ? ? MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb ? ? ? ? ? ? ? ? 8:16 ? 0 20G ?0 disk └─webapp-webapp01 253:2 ? ?0 ? 5G ?0 lvm ?sdc ? ? ? ? ? ? ? ? 8:32 ? 0 20G ?0 disk └─dbapp-data01 ? ?253:3 ? ?0 25G ?0 lvm ?sdd ? ? ? ? ? ? ? ? 8:48 ? 0 20G ?0 disk └─dbapp-data01 ? ?253:3 ? ?0 25G ?0 lvm ??
創建文件系統
邏輯卷創建后,需要格式化(創建文件系統)才能用,就像新買的 U 盤要格式化一樣
#給webapp01邏輯卷格式化,用xfs文件系統(相當于給這塊 25G 的虛擬硬盤格式化,讓系統能識別文件)[root@server ~ 11:24:24]# mkfs.xfs /dev/webapp/webapp01meta-data=/dev/webapp/webapp01 ? isize=512 ? ?agcount=4, agsize=327680 blks= ? ? ? ? ? ? ? ? ? ? ? sectsz=512 ? attr=2, projid32bit=1= ? ? ? ? ? ? ? ? ? ? ? crc=1 ? ? ? ?finobt=0, sparse=0data ? ? = ? ? ? ? ? ? ? ? ? ? ? bsize=4096 ? blocks=1310720, imaxpct=25= ? ? ? ? ? ? ? ? ? ? ? sunit=0 ? ? ?swidth=0 blksnaming ? =version 2 ? ? ? ? ? ? ?bsize=4096 ? ascii-ci=0 ftype=1log ? ? ?=internal log ? ? ? ? ? bsize=4096 ? blocks=2560, version=2= ? ? ? ? ? ? ? ? ? ? ? sectsz=512 ? sunit=0 blks, lazy-count=1realtime =none ? ? ? ? ? ? ? ? ? extsz=4096 ? blocks=0, rtextents=0#把webapp01邏輯卷掛載到/var/www/html文件夾(網站目錄),以后往這個文件夾存東西,實際就是存在webapp01邏輯卷里。[root@server ~ 11:24:44]# mount /dev/webapp/webapp01 /var/www/html?#/var/www/html 是 Linux 里默認的網頁存放目錄(就像網站的 “倉庫”),index.html 是網站的首頁文件。這條命令相當于在首頁文件里寫了 “hello” 這行字[root@server ~ 11:31:47]# echo hello >> /var/www/html/index.html?#安裝 httpd 軟件(Apache 服務器,相當于電腦上的 “網頁發布工具”,能讓其他設備通過網絡訪問你的網頁)[root@server ~ 11:32:38]# yum install -y httpd[root@server ~ 11:32:51]# systemctl start httpd?#curl 是個查看網頁內容的工具,http://localhost 指的是 “本機的網頁地址”。執行后輸出 “hello”,說明[root@server ~ 11:32:54]# curl http://localhosthello?
清理(lv->vg->pg)
#我們把webapp01這個邏輯卷(虛擬硬盤)掛載到了/var/www/html(網頁目錄),現在先取消這個關聯,就像拔 U 盤前先 “安全彈出”,避免數據出問題[root@server ~ 11:41:33]# umount /dev/webapp/webapp01?#相當于 “把從收納盒里拼好的虛擬硬盤拆成零散積木”。#這里要刪除兩個邏輯卷:webapp01(5G)和data01(25G)。系統會確認 “真的要刪嗎?”,輸入y(是)后,這兩個 “虛擬硬盤” 就被拆掉了,卷組里的空間變回空閑狀態[root@server ~ 11:41:55]# lvremove /dev/webapp/webapp01 /dev/dbapp/data01Do you really want to remove active logical volume webapp/webapp01? [y/n]: yLogical volume "webapp01" successfully removedDo you really want to remove active logical volume dbapp/data01? [y/n]: yLogical volume "data01" successfully removed?#相當于 “把裝積木的收納盒扔掉”。#之前創建的webapp和dbapp兩個卷組(收納盒),現在里面的邏輯卷已經刪掉了,就可以把空盒子直接移除,徹底清理[root@server ~ 11:42:54]# vgremove webapp dbappVolume group "webapp" successfully removedVolume group "dbapp" successfully removed?#相當于 “擦掉積木上的 LVM 標記,變回普通積木”。#最后把sdb、sdc、sdd這三塊物理卷(原始硬盤)上的 LVM 標識清除,它們就變回了普通硬盤,以后可以重新用來創建新的 LVM,或者做其他用途(比如分區、創建 RAID 等)[root@server ~ 11:43:01]# pvremove /dev/sd{b..d}Labels on physical volume "/dev/sdb" successfully wiped.Labels on physical volume "/dev/sdc" successfully wiped.Labels on physical volume "/dev/sdd" successfully wiped.??#整個過程就是 “拆除” 的逆向操作:先卸載使用中的設備,再刪除邏輯卷(虛擬硬盤),接著刪除卷組(收納盒),最后清除物理卷標記(恢復原始硬盤),讓所有資源回到初始狀態,方便下次重新規劃使用
擴展卷組和縮減卷組
首先得有個 “積木盒”(卷組),里面放 “積木塊”(物理磁盤),再從盒子里拿出一塊 “橡皮泥”(邏輯卷)隨便捏
環境準備
# 創建卷組(積木盒)叫webapp,放進第一塊積木/dev/sdb[root@server ~ 13:27:12]# vgcreate webapp /dev/sdbPhysical volume "/dev/sdb" successfully created.Volume group "webapp" successfully created# 從盒子里揪一塊10G的橡皮泥(邏輯卷),叫webapp01[root@server ~ 13:36:11]# lvcreate -n webapp01 -L 10G webappWARNING: xfs signature detected on /dev/webapp/webapp01 at offset 0. Wipe it? [y/n]: yWiping xfs signature on /dev/webapp/webapp01.Logical volume "webapp01" created.
這里
vgcreate
就像給一堆磁盤起個集體名字,lvcreate
就是從這堆磁盤里劃出一塊可用空間
擴展卷組
如果原來的積木不夠用了,就往盒子里加新積木(新磁盤)
# 給webapp盒子加兩塊新積木/dev/sdc和/dev/sdd [root@server ~ 13:37:11]# vgextend webapp /dev/sd{c,d}Physical volume "/dev/sdc" successfully created.Physical volume "/dev/sdd" successfully created.Volume group "webapp" successfully extended#執行后用vgs查看:webapp卷組從 1 塊積木變成 3 塊,總容量變大了(VSize從 20G 變成約 60G) [root@server ~ 13:39:00]# vgsVG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 52.00g 4.00mwebapp 3 1 0 wz--n- <59.99g <49.99g#pvs命令能看到每塊積木(物理卷)的使用情況,比如/dev/sdb用了 10G,還剩 10G [root@server ~ 13:39:47]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb webapp lvm2 a-- <20.00g <10.00g/dev/sdc webapp lvm2 a-- <20.00g <20.00g/dev/sdd webapp lvm2 a-- <20.00g <20.00g
縮減卷組
想拿走一塊積木,得先把上面的 “零件”(數據)移到其他積木上,不然會散架
[root@server ~ 13:39:47]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb webapp lvm2 a-- <20.00g <10.00g/dev/sdc webapp lvm2 a-- <20.00g <20.00g/dev/sdd webapp lvm2 a-- <20.00g <20.00g# 直接拿/dev/sdb會報錯(上面有數據) # 將物理卷/dev/sdb從卷組webapp中剔除,則會報錯 [root@server ~ 13:40:24]# vgreduce webapp /dev/sdbPhysical volume "/dev/sdb" still in use# 先把/dev/sdb的數據搬到其他積木上 # 解決方法:將物理卷/dev/sdb中數據移動到卷組中其他物理卷 [root@server ~ 13:41:41]# pvmove /dev/sdb/dev/sdb: Moved: 0.31%/dev/sdb: Moved: 100.00% pvmove沒選擇目標,默認拿本組下一個的容量 # 現在可以安全拿走了(雖然命令里沒寫,但pvmove后/dev/sdb已空,默認從卷組移除)[root@server ~ 13:43:50]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb lvm2 --- 20.00g 20.00g/dev/sdc webapp lvm2 a-- <20.00g <10.00g/dev/sdd webapp lvm2 a-- <20.00g <20.00g
擴展和縮減邏輯卷
邏輯卷就像橡皮泥,能直接變大或變小(前提是卷組有空間)
擴展邏輯卷
# 把webapp01從10G捏到12G(+2G) [root@server ~ 13:43:55]# lvextend -L +2G /dev/webapp/webapp01 Size of logical volume webapp/webapp01 changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).Logical volume webapp/webapp01 successfully resized. [root@server ~ 13:47:37]# lvs /dev/webapp/webapp01LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-a----- 12.00g
縮減邏輯卷
# 再捏回10G(-2G) [root@server ~ 13:47:44]# lvreduce -L -2G /dev/webapp/webapp01WARNING: Reducing active logical volume to 10.00 GiB.THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce webapp/webapp01? [y/n]: ySize of logical volume webapp/webapp01 changed from 12.00 GiB (3072 extents) to 10.00 GiB (2560 extents).Logical volume webapp/webapp01 successfully resized. [root@server ~ 13:48:08]# lvs /dev/webapp/webapp01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-a----- 10.00g
指定邏輯卷大小lvresize
# 直接指定大小(比如捏到15G) [root@server ~ 13:50:49]# lvresize -L 15G /dev/webapp/webapp01Size of logical volume webapp/webapp01 changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).Logical volume webapp/webapp01 successfully resized. [root@server ~ 13:51:41]# lvs /dev/webapp/webapp01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-a----- 15.00g
擴展和縮減文件系統
邏輯卷變大后,外面的 “袋子”(文件系統)也要跟著放大,不然裝不下東西
擴展 XFS 文件系統
XFS 文件系統(只能放大,不能縮小)
[root@server ~ 13:51:46]# mkfs.xfs /dev/webapp/webapp01 [root@server ~ 13:58:06]# mkdir /var/www/html [root@server ~ 13:58:15]# mount /dev/webapp/webapp01 /var/www/html [root@server ~ 13:58:40]# cp /etc/host* /var/www/html [root@server ~ 13:59:01]# ls /var/www/html host.conf hostname hosts hosts.allow hosts.deny
# 第一步:擴展邏輯卷 [root@server ~ 13:59:08]# lvextend -L 15G /dev/webapp/webapp01 New size (3840 extents) matches existing size (3840 extents). [root@server ~ 14:00:28]# lvs /dev/webapp/webapp01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-ao---- 15.00g # 第二步:擴展文件系統# 同步文件系統大小(掛載點路徑) [root@server ~ 14:00:40]# xfs_growfs /var/www/html ...... realtime =none extsz=4096 blocks=0, rtextents=0[root@server ~ 14:01:04]# df -h /var/www/html 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 15G 33M 15G 1% /var/www/html[root@server ~ 14:01:15]# ls /var/www/html host.conf hostname hosts hosts.allow hosts.deny# 先把邏輯卷放大到20G(-r參數會自動同步文件系統) # 塊設備和文件系統一并擴展***r***一定要在L前面,或者寫成 -r -L [root@server ~ 14:01:55]# lvextend -rL 20G /dev/webapp/webapp01[root@server ~ 14:02:38]# lvs /dev/webapp/webapp01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-ao---- 20.00g [root@server ~ 14:03:33]# df -h /var/www/html/ 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 20G 33M 20G 1% /var/www/html
擴展 EXT4 文件系統
EXT4 文件系統(能放大也能縮小)
[root@server ~ 14:03:46]# umount /var/www/html #<<< 'y'免輸入y [root@server ~ 14:04:42]# mkfs.ext4 /dev/webapp/webapp01 <<< 'y'[root@server ~ 14:05:07]# mount /dev/webapp/webapp01 /var/www/html [root@server ~ 14:06:32]# df -h /var/www/html 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 20G 45M 19G 1% /var/www/html[root@server ~ 14:06:40]# cp /etc/host* /var/www/html [root@server ~ 14:06:53]# ls /var/www/html host.conf hostname hosts hosts.allow hosts.deny lost+found
# 第一步:擴展邏輯卷 # 先放大邏輯卷到25G [root@server ~ 14:06:59]# lvextend -L 25G /dev/webapp/webapp01Size of logical volume webapp/webapp01 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).Logical volume webapp/webapp01 successfully resized. [root@server ~ 14:07:32]# lvs /dev/webapp/webapp01LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-ao---- 25.00g # 第二步:擴展文件系統# 放大文件系統(EXT4用resize2fs) [root@server ~ 14:07:38]# resize2fs /dev/webapp/webapp01 [root@server ~ 14:08:04]# df -h /var/www/html/ 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 25G 44M 24G 1% /var/www/html [root@server ~ 14:08:33]# ls /var/www/html host.conf hostname hosts hosts.allow hosts.deny lost+found# 塊設備和文件系統一并擴展 [root@server ~ 14:08:55]# lvextend -rL 30G /dev/webapp/webapp01 [root@server ~ 14:09:31]# lvs /dev/webapp/webapp01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp -wi-ao---- 30.00g [root@server ~ 14:09:42]# df -h /var/www/html 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 30G 44M 28G 1% /var/www/html
縮減 EXT4 文件系統
縮減EXT4文件系統注意事項:
不支持在線縮減,必須卸載后縮減。
縮減后的容量,不能小于當前使用的容量。
ext4 減容流程:
卸載文件系統
e2fsck 文件系統
縮減文件系統
縮減lv
掛載測試
[root@server ~ 14:10:45]# df -hT /var/www/html/ #卸載文件系統# 縮小的話,先卸載掛載點,檢查文件系統(重要!) [root@server ~ 14:15:00]# umount /var/www/html [root@server ~ 14:15:16]# fsck /dev/webapp/webapp01 fsck,來自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/webapp-webapp01: clean, 16/1966080 files, 167447/7864320 blocks #檢測文件系統# 檢查并修復錯誤 [root@server ~ 14:15:51]# e2fsck -f /dev/webapp/webapp01 e2fsck 1.42.9 (28-Dec-2013) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄連接性 Pass 4: Checking reference counts 第5步: 檢查簇概要信息 /dev/webapp/webapp01: 16/1966080 files (0.0% non-contiguous), 167447/7864320 blocks#縮減文件系統# 先縮小文件系統到10G(必須小于邏輯卷當前大小) [root@server ~ 14:16:04]# resize2fs /dev/webapp/webapp01 10G#縮減邏輯卷# 再縮小邏輯卷到10G [root@server ~ 14:16:15]# lvreduce -L 10G /dev/webapp/webapp01[root@server ~ 14:16:26]# mount /dev/webapp/webapp01 /var/www/html [root@server ~ 14:19:57]# df -h /var/www/html 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/webapp-webapp01 9.8G 37M 9.2G 1% /var/www/html[root@server ~ 14:20:21]# ls /var/www/html host.conf hostname hosts hosts.allow hosts.deny lost+found
總結:
#核心流程 卷組(VG):用vgextend加磁盤,vgreduce減磁盤(減前用pvmove移數據)。 邏輯卷(LV):用lvextend/lvreduce/lvresize調整大小。 文件系統:XFS 用xfs_growfs放大;EXT4 用resize2fs放大 / 縮小(縮小要先卸掛載點 + 檢查)。
邏輯卷快照
我們可以使用快照記錄了lv中數據,后續可以用來恢復數據
[root@server ~ 14:20:31]# lvcreate -s -n webapp01-snap1 -L 10G /dev/webapp/webapp01Logical volume "webapp01-snap1" created.# 卸載原始卷,掛載快照 [root@server ~ 14:45:16]# mkdir -p /webapp/webapp01[root@server ~ 14:45:24]# mount /dev/webapp/webapp01-snap1 /webapp/webapp01/ [root@server ~ 14:45:36]# umount /dev/webapp/webapp01[root@server ~ 14:46:38]# ls /webapp/webapp01/ host.conf hostname hosts hosts.allow hosts.deny lost+found[root@server ~ 14:46:48]# echo hello world > /webapp/webapp01/hello.txt [root@server ~ 14:48:17]# cat /webapp/webapp01/hello.txt hello world
創建raid1 邏輯卷
清理
[root@server ~ 14:55:07]# umount /dev/webapp/webapp01-snap1 [root@server ~ 14:56:30]# lvs /dev/webappLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertwebapp01 webapp owi-a-s--- 10.00g webapp01-snap1 webapp swi-a-s--- 10.00g webapp01 0.01 [root@server ~ 14:56:30]# lvremove /dev/webapp/webapp01*[root@server ~ 14:57:00]# lvs /dev/webapp
創建
[root@server ~ 14:57:02]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb lvm2 --- 20.00g 20.00g/dev/sdc webapp lvm2 a-- <20.00g <20.00g/dev/sdd webapp lvm2 a-- <20.00g <20.00g[root@server ~ 15:00:08]# lvcreate --type raid1 -n webapp01 -L 15G webapp WARNING: ext4 signature detected on /dev/webapp/webapp01_rmeta_0 at offset 1080. Wipe it? [y/n]: yWiping ext4 signature on /dev/webapp/webapp01_rmeta_0.Logical volume "webapp01" created.[root@server ~ 15:00:53]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb lvm2 --- 20.00g 20.00g/dev/sdc webapp lvm2 a-- <20.00g 4.99g/dev/sdd webapp lvm2 a-- <20.00g 4.99g[root@server ~ 15:01:34]# mkfs.xfs /dev/webapp/webapp01 [root@server ~ 15:01:58]# mount /dev/webapp/webapp01 /var/www/html/ [root@server ~ 15:02:12]# cp /etc/ho* /var/www/html/ [root@server ~ 15:02:17]# ls /var/www/html/ host.conf hostname hosts hosts.allow hosts.deny[root@server ~ 15:02:44]# wipefs -a /dev/sdd wipefs: error: /dev/sdd: probing initialization failed: 設備或資源忙[root@server ~ 15:04:06]# dd if=/dev/zero of=/dev/sdd bs=1M count=256 記錄了256+0 的讀入 記錄了256+0 的寫出 268435456字節(268 MB)已復制,0.0826577 秒,3.2 GB/秒[root@server ~ 15:04:46]# pvs ....../dev/sda2 centos lvm2 a-- 52.00g 4.00m/dev/sdb lvm2 --- 20.00g 20.00g/dev/sdc webapp lvm2 a-- <20.00g 4.99g[unknown] webapp lvm2 a-m <20.00g 4.99g [root@server ~ 15:05:13]# ls /var/www/html/ host.conf hostname hosts hosts.allow hosts.deny[root@server ~ 15:05:23]# umount /var/www/html [root@server ~ 15:06:15]# mount /dev/webapp/webapp01 /var/www/html/ [root@server ~ 15:06:21]# ls /var/www/html/ host.conf hostname hosts hosts.allow hosts.deny
修復raid
[root@server ~ 15:06:26]# vgreduce --removemissing webapp --force [root@server ~ 15:11:45]# vgextend webapp /dev/sdd [root@server ~ 15:12:13]# lvconvert --repair webapp/webapp01 [root@server ~ 15:12:51]# pvs|grep webapWARNING: Not using lvmetad because a repair command was run./dev/sdc webapp lvm2 a-- <20.00g 4.99g/dev/sdd webapp lvm2 a-- <20.00g 4.99g