Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)

当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间。如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容!不同文件系统类型所对应的创建、检查、调整命令不同,下面就针对xfs和ext2/3/4文件系统的lvm分区空间的扩容和缩容的操作做一记录:

特别注意的是:
resize2fs命令:针对的是ext2、ext3、ext4文件系统
xfs_growfs命令:针对的是xfs文件系统

1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)

1 lvextend -L 120G /dev/mapper/centos-home     //增大至120G
2 lvextend -L +20G /dev/mapper/centos-home     //增加20G
3 lvreduce -L 50G /dev/mapper/centos-home      //减小至50G
4 lvreduce -L -8G /dev/mapper/centos-home      //减小8G
5 resize2fs /dev/mapper/centos-home            //执行调整

2)xfs文件系统的调整命令是xfs_growfs(只支持增大)

1 lvextend -L 120G /dev/mapper/centos-home    //增大至120G
2 lvextend -L +20G /dev/mapper/centos-home    //增加20G
3 xfs_growfs /dev/mapper/centos-home          //执行调整
4
5 就是说:xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。
6 硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。如果有重要文件,那就歇菜喽~~~

实例1(当系统上还有空闲空间的时候)

1 1)查看分区空间。如下可知是xfs文件系统(df的-T参数就能看出文件格式)。
2 [root@localhost ~]# df -hT
3 文件系统                类型      容量  已用  可用 已用% 挂载点
4 /dev/mapper/centos-root xfs       200G  2.2G  198G    2% /
5 devtmpfs                devtmpfs   32G     0   32G    0% /dev
6 tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
7 tmpfs                   tmpfs      32G   49M   32G    1% /run
8 tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
9 /dev/sda1               xfs       197M  139M   59M   71% /boot
10 tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0
11 /dev/mapper/centos-home xfs       628G   33M  718G    1% /home
12
13 2)使用vgdisplay命令查看系统上的空闲空间
14 root@localhost ~]# vgdisplay
15   --- Volume group ---
16   VG Name               centos
17   System ID            
18   Format                lvm2
19   Metadata Areas        1
20   Metadata Sequence No  6
21   VG Access             read/write
22   VG Status             resizable
23   MAX LV                0
24   Cur LV                3
25   Open LV               3
26   Max PV                0
27   Cur PV                1
28   Act PV                1
29   VG Size               930.80 GiB
30   PE Size               4.00 MiB
31   Total PE              238285
32   Alloc PE / Size       212736 / 831.00 GiB
33   Free  PE / Size       25549 / 99.80 GiB       //这一项表示目前该系统上还存在99.80G的空闲空间(25549)
34   VG UUID               a5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF
35 
36 3) 将上面查到的空闲空间中的90G增减到/home分区上
37 [root@localhost ~]# lvextend -L +90G /dev/mapper/centos-home       //或者使用-l参数(跟PE数量),即lvextend -l +2550 0 /dev/mapper/centos-home
38   Size of logical volume centos/home changed from 628.00 GiB (160768 extents) to 718.00 GiB (183808 extents).
39   Logical volume centos/home successfully resized.
40
41 [root@localhost ~]# xfs_growfs /dev/mapper/centos-home
42 meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=41156608 blks
43          =                       sectsz=512   attr=2, projid32bit=1
44          =                       crc=1        finobt=0 spinodes=0
45 data     =                       bsize=4096   blocks=164626432, imaxpct=25
46          =                       sunit=0      swidth=0 blks
47 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
48 log      =internal               bsize=4096   blocks=80384, version=2
49          =                       sectsz=512   sunit=0 blks, lazy-count=1
50 realtime =none                   extsz=4096   blocks=0, rtextents=0
51 data blocks changed from 164626432 to 188219392
52
53 4)再次看着系统分区,发现home分区已经增加了90G(这种方式增加后,home分区之前的数据还不会丢失)
54 [root@localhost ~]# df -h
55 文件系统                 容量  已用  可用 已用% 挂载点
56 /dev/mapper/centos-root  200G  2.2G  198G    2% /
57 devtmpfs                  32G     0   32G    0% /dev
58 tmpfs                     32G     0   32G    0% /dev/shm
59 tmpfs                     32G   49M   32G    1% /run
60 tmpfs                     32G     0   32G    0% /sys/fs/cgroup
61 /dev/sda1                197M  139M   59M   71% /boot
62 tmpfs                    6.3G     0  6.3G    0% /run/user/0
63 /dev/mapper/centos-home  718G   33M  718G    1% /home

虽然xfs文件系统只支持增加,不支持减少。但并不是说在xfs系统文件下不能减小,只是减小后,需要重新格式化才能挂载上。这样原来的数据就丢失了!
实例2: 这种情况只适用于系统刚安装好,逻辑分区内没有什么数据或数据不多且不重要可以删除或拷贝的情况下

1 系统安装好后,发现home分区过大,想从home分区中拿出100G给/分区
2 [root@localhost ~]# df -hT
3 文件系统                类型      容量  已用  可用 已用% 挂载点
4 /dev/mapper/centos-root xfs       205G  2.2G  203G    2% /
5 devtmpfs                devtmpfs   32G     0   32G    0% /dev
6 tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
7 tmpfs                   tmpfs      32G   49M   32G    1% /run
8 tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
9 /dev/sda1               xfs       197M  139M   59M   71% /boot
10 tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0
11 /dev/mapper/centos-home xfs       718G   33M  718G    1% /home
12
13 [root@localhost ~]# umount /home/
14
15 [root@localhost ~]# lvreduce -L -100G /dev/mapper/centos-home
16   WARNING: Reducing active logical volume to 618.00 GiB.
17   THIS MAY DESTROY YOUR DATA (filesystem etc.)
18 Do you really want to reduce centos/home? [y/n]: y
19   Size of logical volume centos/home changed from 718.00 GiB (183808 extents) to 618.00 GiB (158208 extents).
20   Logical volume centos/home successfully resized.
21
22 如下,很显然xfs文件系统不能执行分区减小的调整!
23 [root@localhost ~]# xfs_growfs /dev/mapper/centos-home
24 xfs_growfs: /dev/mapper/centos-home is not a mounted XFS filesystem
25 [root@localhost ~]# mount /dev/mapper/centos-home /home/
26 mount: /dev/mapper/centos-home:不能读超级块
27 这样,只能通过重新格式化这个分区,格式化后才能再次挂载到home下
28 [root@localhost ~]# mkfs.xfs /dev/mapper/centos-home -f
29 meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=41156608 blks
30          =                       sectsz=512   attr=2, projid32bit=1
31          =                       crc=1        finobt=0, sparse=0
32 data     =                       bsize=4096   blocks=164626432, imaxpct=25
33          =                       sunit=0      swidth=0 blks
34 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
35 log      =internal log           bsize=4096   blocks=80384, version=2
36          =                       sectsz=512   sunit=0 blks, lazy-count=1
37 realtime =none                   extsz=4096   blocks=0, rtextents=0
38 [root@localhost ~]# mount /dev/mapper/centos-home /home/
39 再次查看分区,发现home分区已经减小了100G,只不过这个分区里之前的数据都没有了。
40 [root@localhost ~]# df -hT        
41 文件系统                 类型      容量  已用  可用 已用% 挂载点
42 /dev/mapper/centos-root xfs       205G  2.2G  203G    2% /
43 devtmpfs                devtmpfs   32G     0   32G    0% /dev
44 tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
45 tmpfs                   tmpfs      32G   49M   32G    1% /run
46 tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
47 /dev/sda1               xfs       197M  139M   59M   71% /boot
48 tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0
49 /dev/mapper/centos-home xfs       618G   73M  578G    1% /home
50 ---------------------------------------------------------------------------
51 上面在重新格式的时候,也可以将这个格式化为ext4格式。
52 [root@localhost ~]# mkfs.ext4 /dev/mapper/centos-home
53 [root@localhost ~]# cat /etc/fstab  //将home分区的开机挂载设置里的xfs改为ext4
54 ---------------------------------------------------------------------------
55 然后将上面从home分区拿出的100G放到/分区下
56 [root@localhost ~]# vgdisplay
57   --- Volume group ---
58   VG Name               centos
59   System ID           
60   Format                lvm2
61   Metadata Areas        1
62   Metadata Sequence No  9
63   VG Access             read/write
64   VG Status             resizable
65   MAX LV                0
66   Cur LV                3
67   Open LV               3
68   Max PV                0
69   Cur PV                1
70   Act PV                1
71   VG Size               930.80 GiB
72   PE Size               4.00 MiB
73   Total PE              238285
74   Alloc PE / Size       211456 / 826.00 GiB
75   Free  PE / Size       26829 / 104.80 GiB
76   VG UUID               a5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF
77
78 [root@localhost ~]# lvextend -L +100G /dev/mapper/centos-root
79   Size of logical volume centos/root changed from 205.00 GiB (52480 extents) to 305.00 GiB (78080 extents).
80 [root@localhost ~]# xfs_growfs /dev/mapper/centos-root
81 meta-data=/dev/mapper/centos-root isize=256    agcount=5, agsize=13107200 blks
82          =                       sectsz=512   attr=2, projid32bit=1
83          =                       crc=0        finobt=0 spinodes=0
84 data     =                       bsize=4096   blocks=53739520, imaxpct=25
85          =                       sunit=0      swidth=0 blks
86 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
87 log      =internal               bsize=4096   blocks=25600, version=2
88          =                       sectsz=512   sunit=0 blks, lazy-count=1
89 realtime =none                   extsz=4096   blocks=0, rtextents=0
90 data blocks changed from 53739520 to 79953920
91 [root@localhost ~]# df -hT        
92 文件系统                 类型        容量  已用  可用 已用% 挂载点
93 /dev/mapper/centos-root xfs       305G  2.2G  203G    2% /
94 devtmpfs                devtmpfs   32G     0   32G    0% /dev
95 tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
96 tmpfs                   tmpfs      32G   49M   32G    1% /run
97 tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
98 /dev/sda1               xfs       197M  139M   59M   71% /boot
99 tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0
100 /dev/mapper/centos-home xfs       618G   73M  578G    1% /home

----------------------------------------温馨提示--------------------------------------------
若是减小分区空间,减小前必须要先卸载这个分区。如果卸载有问题,解决如下:

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

原文:https://www.cnblogs.com/kevingrace/p/5825963.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
G。 1. 首先,在虚拟机的设置中添加两块虚拟磁盘,假设它们的设备名为sdb和sdc。在Linux系统中使用fdisk命令查看硬盘信息: ``` sudo fdisk -l ``` 可以看到已经存在的硬盘为/dev/sda。现在需要对sdb进行分区。 ``` sudo fdisk /dev/sdb ``` 按照提示依次输入n(新建分区)、p(主分区)、1(分区号)、2048(起始扇区,默认)、+1G(分区大小),依次输入n、p、2、(默认)、+5G、n、p、3、(默认)、+8G,最后输入w保存分区表。 接下来需要创建逻辑卷文件系统。先安装LVM相关软件: ``` sudo apt-get update sudo apt-get install lvm2 ``` 使用pvcreate命令将sdb上的分区加入LVM: ``` sudo pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 ``` 使用vgcreate命令创建卷组: ``` sudo vgcreate linux /dev/sdb1 /dev/sdb2 /dev/sdb3 ``` 使用lvcreate命令创建逻辑卷: ``` sudo lvcreate -L 2G -n redhat linux sudo lvcreate -L 1G -n centos linux ``` 分别使用mkfs.xfs和mkfs.ext4命令创建文件系统: ``` sudo mkfs.xfs /dev/linux/redhat sudo mkfs.ext4 /dev/linux/centos ``` 创建挂载点并挂载: ``` sudo mkdir /mnt/redhat sudo mkdir /mnt/centos sudo mount /dev/linux/redhat /mnt/redhat sudo mount /dev/linux/centos /mnt/centos ``` 编辑/etc/fstab文件,添加以下两行: ``` /dev/linux/redhat /mnt/redhat xfs defaults 0 0 /dev/linux/centos /mnt/centos ext4 defaults 0 0 ``` 重启机器后,使用df命令查看挂载情况,应该可以看到: ``` /dev/mapper/linux-redhat 2.0G 33M 2.0G 2% /mnt/redhat /dev/mapper/linux-centos 976M 33M 876M 4% /mnt/centos ``` 2. 调整逻辑卷大小可以使用lvresize命令。例如,将redhat卷的大小调整为5G: ``` sudo lvresize -L 5G /dev/linux/redhat ``` 将centos卷的大小调整为8G: ``` sudo lvresize -L 8G /dev/linux/centos ``` 3. 扩容卷组需要扩展物理卷和卷组。先使用fdisk命令对sdb进行分区,将剩余空间全部分配给一个新的分区sdb4。然后使用pvcreate命令将sdb4加入卷组: ``` sudo pvcreate /dev/sdb4 ``` 使用vgextend命令扩展卷组: ``` sudo vgextend linux /dev/sdb4 ``` 使用lvresize命令扩展逻辑卷: ``` sudo lvresize -l +100%FREE /dev/linux/redhat sudo lvresize -l +100%FREE /dev/linux/centos ``` 使用xfs_growfs和resize2fs命令扩展文件系统: ``` sudo xfs_growfs /mnt/redhat sudo resize2fs /dev/linux/centos ``` 4. 在sdc上创建分区可以使用fdisk命令,方法与sdb类似。将一个分区分配给根分区,将另一个分区做成swap: ``` sudo fdisk /dev/sdc n p 1 (default) +64G t 1 82 w ``` 将新分区加入LVM: ``` sudo pvcreate /dev/sdc1 sudo vgextend linux /dev/sdc1 ``` 使用lvresize命令扩大根分区: ``` sudo lvresize -L 60G /dev/mapper/linux-root ``` 创建swap分区: ``` sudo mkswap /dev/sdc1 ``` 编辑/etc/fstab文件,添加以下一行: ``` /dev/sdc1 none swap sw 0 0 ``` 重启机器后使用free命令查看swap分区是否生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值