如何在 Centos 7 上合并两个或多个磁盘分区【宝塔面板】

CentOS 合并分区:我一直在使用通过 VMware 的 vrealize 套件配置的 centos 7 虚拟机。我特别不喜欢的一件事是在 VM 配置期间存储磁盘如何被分区为小分区。

国内建站大多数还是选择宝塔面板,简单易用的特点。但是在使用的过程中我们发现,通常宝塔面板默认会把磁盘分两个区,留一个备份区。即使50G的空间,也会强行分10个G给备份。

这时候会遇到一个问题,就是网站所在的磁盘不够用。如何把一个分区删除,然后合并到需要扩展的那个分区呢?如下步骤:

$ df -h
Filesystem                                            Size  Used Avail Use% Mounted on
devtmpfs                                              1.9G     0  1.9G   0% /dev
tmpfs                                                 1.9G     0  1.9G   0% /dev/shm
tmpfs                                                 1.9G  8.9M  1.9G   1% /run
tmpfs                                                 1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-root       6.0G   70M  6.0G   2% /
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-usr        6.0G  1.5G  4.6G  24% /usr
/dev/sda1                                            1014M  232M  783M  23% /boot
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-data        61G   34M   61G   1% /data
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-usr_local  6.0G   33M  6.0G   1% /usr/local
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-home        10G   33M   10G   1% /home
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-var        6.0G  414M  5.6G   7% /var
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-tmp        2.0G   33M  2.0G   2% /tmp
tmpfs                                                 379M     0  379M   0% /run/user/1001

注意vardatahometmpusrusr_local, 和root有自己的分区。我更喜欢有几个但很大的磁盘分区。所以,今天我想出了如何将两个或多个分区合并到根分区中。

合并分区前
实际操作截图:合并分区前

第 1 步 — 确保您以 root 身份登录

第 2 步 — 从要合并到根分区的分区中备份数据

$ rsync -a /home/ /home-old/
$ rsync -a /tmp/ /tmp-old/
$ rsync -a /var/ /var-old/

第 3 步 — 将 VM 重新启动到紧急模式

$ systemctl emergency

第 4 步 — 卸载并删除每个分区的逻辑卷

$ umount /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-data
$ umount /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-home
$ umount /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-var
$ umount /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-tmp
$ lvremove /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-data
$ lvremove /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-home
$ lvremove /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-var
$ lvremove /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-tmp

第 5 步 — 复制备份的数据

$ rsync -a /home-old/ /home/
$ rsync -a /var-old/ /var/
$ rsync -a /tmp-old/ /tmp/

/etc/fstab第 6 步 —通过删除或注释掉我们不需要的分区来编辑文件

$ vi /etc/fstab

步骤 7 — 扩展根分区以填充剩余空间

$ lvextend -l +100%FREE -r /dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-root

步骤 8 — 删除备份

$ rm -rf /home-old/ /tmp-old/ /var-old/

步骤 9 — 重新启动系统

$ reboot

第 10 步 — 以普通用户或 root 用户身份登录 VM 

让我们检查一下我们的/根分区大小是否增加了:

$ df -h
Filesystem                                            Size  Used Avail Use% Mounted on
devtmpfs                                              1.9G     0  1.9G   0% /dev
tmpfs                                                 1.9G     0  1.9G   0% /dev/shm
tmpfs                                                 1.9G  8.9M  1.9G   1% /run
tmpfs                                                 1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-root        85G  474M   85G   1% /
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-usr        6.0G  1.5G  4.6G  24% /usr
/dev/sda1                                            1014M  232M  783M  23% /boot
/dev/mapper/centos_dhcp--zzz--zzz--zzz--zz-usr_local  6.0G   33M  6.0G   1% /usr/local
tmpfs                                                 379M     0  379M   0% /run/user/1001
实际操作截图:合并分区后
实际操作截图:合并分区后

完!

实战截图如下:

CentOS合并分区
CentOS合并分区

实战命令如下:

[root@o-l-a ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                     12G     0   12G   0% /dev
tmpfs                        12G  256K   12G   1% /dev/shm
tmpfs                        12G  539M   11G   5% /run
tmpfs                        12G     0   12G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   35G  489M  99% /
/dev/mapper/ocivolume-oled   10G  2.9G  7.2G  29% /var/oled
/dev/sda2                  1014M  514M  501M  51% /boot
/dev/sda1                   100M  5.9M   94M   6% /boot/efi
tmpfs                       2.3G     0  2.3G   0% /run/user/1003
tmpfs                       2.3G     0  2.3G   0% /run/user/0
tmpfs                       2.3G     0  2.3G   0% /run/user/987
[root@o-l-a ~]# systemctl emergency
[root@o-l-a ~]# umount /dev/mapper/ocivolume-oled
[root@o-l-a ~]# lvremove /dev/mapper/ocivolume-oled
Do you really want to remove active logical volume ocivolume/oled? [y/n]: y
  Logical volume "oled" successfully removed.
[root@o-l-a ~]# vi /etc/fstab
[root@o-l-a ~]# lvextend -l +100%FREE -r /dev/mapper/ocivolume-root
  Size of logical volume ocivolume/root changed from 35.47 GiB (9081 extents) to 45.47 GiB (11641 extents).
  Logical volume ocivolume/root successfully resized.
meta-data=/dev/mapper/ocivolume-root isize=512    agcount=4, agsize=2324736 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=9298944, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=4540, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 9298944 to 11920384
[root@o-l-a ~]# reboot
滚动至顶部