Linux調整lvm邏輯分區大小


轉載自:https://www.cnblogs.com/kevingrace/p/5825963.html

 個人記錄一下
 

 Linux下對lvm邏輯卷分區大小的調整(針對xfs和ext4不同文件系統)

 

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

1)ext2/ext3/ext4文件系統的調整命令是resize2fs(增大和減小都支持)

1
2
3
4
5
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(只支持增大)

1
2
3
4
5
6
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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: 這種情況只適用於系統剛安裝好,邏輯分區內沒有什么數據或數據不多且不重要可以刪除或拷貝的情況下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
系統安裝好后,發現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)
--------------------------------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM