Linux下對lvm邏輯卷分割槽大小的調整(針對xfs和ext4不同檔案系統)

散盡浮華發表於2016-08-31

 

當我們在安裝系統的時候,由於沒有合理分配分割槽空間,在後續維護過程中,發現有些分割槽空間不夠使用,而有的分割槽空間卻有很多剩餘空間。如果這些分割槽在裝系統的時候使用了lvm(前提是這些分割槽要是lvm邏輯卷分割槽),那麼就可以輕鬆進行擴容或縮容!不同檔案系統型別所對應的建立、檢查、調整命令不同,下面就針對xfs和ext2/3/4檔案系統的lvm分割槽空間的擴容和縮容的操作做一記錄:
------------------------------------------------------------------------------------------
特別注意的是:
resize2fs命令            針對的是ext2、ext3、ext4檔案系統
xfs_growfs命令         針對的是xfs檔案系統
------------------------------------------------------------------------------------------

1)ext2/ext3/ext4檔案系統的調整命令是resize2fs(增大和減小都支援)

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(只支援增大)

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(當系統上還有空閒空間的時候)

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: 這種情況只適用於系統剛安裝好,邏輯分割槽內沒有什麼資料或資料不多且不重要可以刪除或拷貝的情況下

系統安裝好後,發現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

----------------------------------------溫馨提示--------------------------------------------
若是減小分割槽空間,減小前必須要先解除安裝這個分割槽。如果解除安裝有問題,解決如下:

[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))

提示無法解除安裝,則是有程式佔用/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/

-k 表示自動把霸佔home分割槽的程式kill掉!
如果你不是很明確是否要殺死所有霸佔裝置的程式,還可以加一個-i 引數,這樣每殺死一個程式前,都會詢問!(即fuser -m -v -i -k /home)
--------------------------------------------------------------------------------------------

相關文章