當咱們在安裝系統的時候,因爲沒有合理分配分區空間,在後續維護過程當中,發現有些分區空間不夠使用,而有的分區空間卻有不少剩餘空間。若是這些分區在裝系統的時候使用了lvm(前提是這些分區要是lvm邏輯卷分區),那麼就能夠輕鬆進行擴容或縮容!不一樣文件系統類型所對應的建立、檢查、調整命令不一樣,下面就針對xfs和ext2/3/4文件系統的lvm分區空間的擴容和縮容的操做作一記錄:
------------------------------------------------------------------------------------------
特別注意的是:
resize2fs命令 針對的是ext二、ext三、ext4文件系統
xfs_growfs命令 針對的是xfs文件系統
------------------------------------------------------------------------------------------node
1)ext2/ext3/ext4文件系統的調整命令是resize2fs(增大和減少都支持)centos
lvextend -L 120G /dev/mapper/centos-home //增大至120G lvextend -L +20G /dev/mapper/centos-home //增長20G lvreduce -L 50G /dev/mapper/centos-home //減少至50G lvreduce -L -8G /dev/mapper/centos-home //減少8G resize2fs /dev/mapper/centos-home //執行調整
2)xfs文件系統的調整命令是xfs_growfs(只支持增大)bash
lvextend -L 120G /dev/mapper/centos-home //增大至120G lvextend -L +20G /dev/mapper/centos-home //增長20G xfs_growfs /dev/mapper/centos-home //執行調整 就是說:xfs文件系統只支持增大分區空間的狀況,不支持減少的狀況(切記!!!!!)。 硬要減少的話,只能在減少後將邏輯分區從新經過mkfs.xfs命令從新格式化才能掛載上,這樣的話這個邏輯分區上原來的數據就丟失了。若是有重要文件,那就歇菜嘍~~~
實例1(當系統上還有空閒空間的時候)app
1)查看分區空間。以下可知是xfs文件系統(df的-T參數就能看出文件格式)。 [root@localhost ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 200G 2.2G 198G 2% / devtmpfs devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 32G 49M 32G 1% /run tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda1 xfs 197M 139M 59M 71% /boot tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0 /dev/mapper/centos-home xfs 628G 33M 718G 1% /home 2)使用vgdisplay命令查看系統上的空閒空間 root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 930.80 GiB PE Size 4.00 MiB Total PE 238285 Alloc PE / Size 212736 / 831.00 GiB Free PE / Size 25549 / 99.80 GiB //這一項表示目前該系統上還存在99.80G的空閒空間(25549) VG UUID a5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF 3) 將上面查到的空閒空間中的90G增減到/home分區上 [root@localhost ~]# lvextend -L +90G /dev/mapper/centos-home //或者使用-l參數(跟PE數量),即lvextend -l +25500 /dev/mapper/centos-home Size of logical volume centos/home changed from 628.00 GiB (160768 extents) to 718.00 GiB (183808 extents). Logical volume centos/home successfully resized. [root@localhost ~]# xfs_growfs /dev/mapper/centos-home meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=41156608 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=164626432, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=80384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 164626432 to 188219392 4)再次看着系統分區,發現home分區已經增長了90G(這種方式增長後,home分區以前的數據還不會丟失) [root@localhost ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 200G 2.2G 198G 2% / devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 49M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda1 197M 139M 59M 71% /boot tmpfs 6.3G 0 6.3G 0% /run/user/0 /dev/mapper/centos-home 718G 33M 718G 1% /home
雖然xfs文件系統只支持增長,不支持減小。但並非說在xfs系統文件下不能減少,只是減少後,須要從新格式化才能掛載上。這樣原來的數據就丟失了!
實例2: 這種狀況只適用於系統剛安裝好,邏輯分區內沒有什麼數據或數據很少且不重要能夠刪除或拷貝的狀況下spa
系統安裝好後,發現home分區過大,想從home分區中拿出100G給/分區 [root@localhost ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 205G 2.2G 203G 2% / devtmpfs devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 32G 49M 32G 1% /run tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda1 xfs 197M 139M 59M 71% /boot tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0 /dev/mapper/centos-home xfs 718G 33M 718G 1% /home [root@localhost ~]# umount /home/ [root@localhost ~]# lvreduce -L -100G /dev/mapper/centos-home WARNING: Reducing active logical volume to 618.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce centos/home? [y/n]: y Size of logical volume centos/home changed from 718.00 GiB (183808 extents) to 618.00 GiB (158208 extents). Logical volume centos/home successfully resized. 以下,很顯然xfs文件系統不能執行分區減少的調整! [root@localhost ~]# xfs_growfs /dev/mapper/centos-home xfs_growfs: /dev/mapper/centos-home is not a mounted XFS filesystem [root@localhost ~]# mount /dev/mapper/centos-home /home/ mount: /dev/mapper/centos-home:不能讀超級塊 這樣,只能經過從新格式化這個分區,格式化後才能再次掛載到home下 [root@localhost ~]# mkfs.xfs /dev/mapper/centos-home -f meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=41156608 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=164626432, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=80384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]# mount /dev/mapper/centos-home /home/ 再次查看分區,發現home分區已經減少了100G,只不過這個分區裏以前的數據都沒有了。 [root@localhost ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 205G 2.2G 203G 2% / devtmpfs devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 32G 49M 32G 1% /run tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda1 xfs 197M 139M 59M 71% /boot tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0 /dev/mapper/centos-home xfs 618G 73M 578G 1% /home --------------------------------------------------------------------------- 上面在從新格式的時候,也能夠將這個格式化爲ext4格式。 [root@localhost ~]# mkfs.ext4 /dev/mapper/centos-home [root@localhost ~]# cat /etc/fstab //將home分區的開機掛載設置裏的xfs改成ext4 --------------------------------------------------------------------------- 而後將上面從home分區拿出的100G放到/分區下 [root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 930.80 GiB PE Size 4.00 MiB Total PE 238285 Alloc PE / Size 211456 / 826.00 GiB Free PE / Size 26829 / 104.80 GiB VG UUID a5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF [root@localhost ~]# lvextend -L +100G /dev/mapper/centos-root Size of logical volume centos/root changed from 205.00 GiB (52480 extents) to 305.00 GiB (78080 extents). Logical volume centos/root successfully resized. [root@localhost ~]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=256 agcount=5, agsize=13107200 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=53739520, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=25600, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 53739520 to 79953920 [root@localhost ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 305G 2.2G 203G 2% / devtmpfs devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 32G 49M 32G 1% /run tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda1 xfs 197M 139M 59M 71% /boot tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0 /dev/mapper/centos-home xfs 618G 73M 578G 1% /hom
----------------------------------------舒適提示--------------------------------------------
如果減少分區空間,減少前必需要先卸載這個分區。若是卸載有問題,解決以下:orm
[root@localhost ~]# umount /home/
umount: /home: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))blog
提示沒法卸載,則是有進程佔用/home,使用以下命令來終止佔用進程:
[root@localhost ~]# fuser -m -k /home
/home: 1409 1519ce 1531e 1532e 1533e 1534e 1535e 1536e 1537e 1538e 1539e 1541e 1543e 1544e 1545e 1546e 1547e 1548e 1549e 1550e 1601m進程
再次卸載home分區就成功了。
[root@localhost ~]# umount /home/ci
-k 表示自動把霸佔home分區的進程kill掉!
若是你不是很明確是否要殺死全部霸佔設備的程序,還能夠加一個-i 參數,這樣每殺死一個程序前,都會詢問!(即fuser -m -v -i -k /home)
--------------------------------------------------------------------------------------------it