Linux 磁盘扩容 root 分区操作小记

本贴最后更新于 520 天前,其中的信息可能已经天翻地覆

Linux 磁盘扩容 root 分区操作小记

前言

Linux 磁盘扩容是在管理和维护 Linux 系统中常见的任务之一。本文旨在记录扩容 Linux 根分区的操作步骤以及相应注意事项。所述操作基于 AlmaLinux 9.2,但理论上适用于其他基于 REHL 生态的发行版。

AlmaLinux 是一个由 CentOS 分支出来的发行版,它继承了 CentOS 在企业级 Linux 操作系统领域的优秀传统。与 CentOS 相似,AlmaLinux 提供了稳定、可靠的性能和广泛的软件兼容性。在本文中,我们将探索如何在 AlmaLinux 上进行磁盘扩容操作。

此外,RockLinux 也是与 AlmaLinux 有关系的发行版。RockLinux 可被视为 AlmaLinux 的近亲兄弟,它们共享相似的源代码和目标。而 AnolisOS 是国内社区充分支持的发行版之一,它兼容 CentOS,并且在国内社区中拥有广泛的用户群体。

因此,AlmaLinux、RockLinux 和 AnolisOS 可以被视为 CentOS 停止维护后的替代选择。

操作步骤以及说明

1.查看磁盘占用情况

使用 df -lh 命令查看磁盘占用情况。

[root@znas /]# df -lh
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root   70G  5.4G   65G    8% /
/dev/mapper/almalinux-home  398G  2.9G  395G    1% /home
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   52K  761M    1% /run/user/42
tmpfs                       762M   36K  762M    1% /run/user/0

2.解挂 home 文件夹

上面的 df 命令已经展示了/home 目录是硬件目录下的 almalinux-home。

/dev/mapper/almalinux-home  398G  2.9G  395G    1% /home

解挂删除 home 目录前请先备份目录参考操作记录的 cp 命令

  1. 使用 umount /home/命令解挂 /home 目录
  2. 使用 lvremove /dev/mapper/almalinux-home 删除
[root@znas /]# umount /home/
[root@znas /]# lvremove /dev/mapper/almalinux-home
Do you really want to remove active logical volume almalinux/home? [y/n]: y
  Logical volume "home" successfully removed.

3.扩展逻辑卷和扩大文件系统

使用 lvextend -L +200G /dev/mapper/almalinux-root 命令意思在 almalinux-root 逻辑卷空间原有的 70G 基础上在增加 200G,即 almalinux-root 最终大小为 270G 这里扩展的是磁盘大小。
然后使用 xfs_growfs 命令的作用就是对 ext4 文件系统进行扩容。

[root@znas /]# lvextend -L +200G /dev/mapper/almalinux-root
  Size of logical volume almalinux/root changed from 70.00 GiB (17920 extents) to 270.00 GiB (69120 extents).
  Logical volume almalinux/root successfully resized.
[root@znas /]# xfs_growfs /dev/mapper/almalinux-root
meta-data=/dev/mapper/almalinux-root isize=512    agcount=4, agsize=4587520 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=18350080, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=8960, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 18350080 to 70778880

4.查看硬盘剩余大小

  • VG:卷组
  • PV:物理卷
  • LV:逻辑卷
  • VSize:总大小
  • VFree:剩余大小
[root@znas /]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  almalinux   1   2   0 wz--n- 475.35g 197.54g

5.重建 home 目录

  1. 使用 lvcreate 命令创建 home 逻辑卷
  2. 使用 mkfs.xfs 命令格式化 almalinux-home 文件系统
  3. 使用 mount /dev/mapper/almalinux-home /home 将文件系统重新挂载到/home
[root@znas /]# lvcreate -n home -L 197.5G almalinux
  Logical volume "home" created.
[root@znas mapper]# mkfs.xfs /dev/mapper/almalinux-home
meta-data=/dev/mapper/almalinux-home isize=512    agcount=4, agsize=12943360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=51773440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=25280, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
[root@znas mapper]# mount /dev/mapper/almalinux-home /home

6.误区

有些习惯只用 root 账号的操作者,会把所有磁盘空间都分配给 root,第五步就不重建 home 分区了。这样的后果就是系统重启后起不来。一直卡在检测 home 分区这一步半天起不来。我就是中了这个误区,发现起不来连接显示器后才发现这个问题强制进入了系统但是因为异常问题导致 root 分区变成了只读模式,需要 mount -o remount,rw / 解除只读模式。但是磁盘空间已经全部分配给 root 分区了。没有多余的空间建立 home 分区。本身我对 Linux 就停留在了简单的命令,这次的分区都是翻书百度了好久,于是乎没想到的解决方案就直接充装大法好。

操作记录全过程

[root@znas /]# cd home/
[root@znas home]# ls
zhang
[root@znas home]# cp zhang/ /data/zhang
cp: 未指定 -r;略过目录'zhang/'
[root@znas home]# cp -r zhang/ /data/zhang
[root@znas home]# cd /data/
[root@znas data]# ls
dockerimg  zhang
[root@znas data]# cd zhang/
[root@znas zhang]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面
[root@znas zhang]# cd ../
[root@znas data]# cd../
-bash: cd../: 没有那个文件或目录
[root@znas data]# cd ../
[root@znas /]# df -lh
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root   70G  5.4G   65G    8% /
/dev/mapper/almalinux-home  398G  2.9G  395G    1% /home
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   52K  761M    1% /run/user/42
tmpfs                       762M   36K  762M    1% /run/user/0
[root@znas /]# umount /home/
[root@znas /]# lvremove /dev/mapper/almalinux-home
Do you really want to remove active logical volume almalinux/home? [y/n]: y
  Logical volume "home" successfully removed.
[root@znas /]# lvextend -L +200G /dev/mapper/almalinux-root
  Size of logical volume almalinux/root changed from 70.00 GiB (17920 extents) to 270.00 GiB (69120 extents).
  Logical volume almalinux/root successfully resized.
[root@znas /]# resize2fs /dev/mapper/almalinux-root
resize2fs 1.46.5 (30-Dec-2021)
resize2fs: 超级块中的幻数有错 尝试打开 /dev/mapper/almalinux-root 时
找不到有效的文件系统超级块。
[root@znas /]# xfs /dev/mapper/almalinux-root
bash: xfs: command not found...
[root@znas /]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root   70G  5.4G   65G    8% /
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   52K  761M    1% /run/user/42
tmpfs                       762M   36K  762M    1% /run/user/0
[root@znas /]# xfs_growfs /dev/mapper/almalinux-root
meta-data=/dev/mapper/almalinux-root isize=512    agcount=4, agsize=4587520 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=18350080, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=8960, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 18350080 to 70778880
[root@znas /]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root  270G  6.8G  264G    3% /
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   36K  762M    1% /run/user/0
[root@znas /]# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  almalinux   1   2   0 wz--n- 475.35g 197.54g
[root@znas /]# lvcreate -n home -L almalinux
  Size requires number argument.
  Invalid argument for --size: almalinux
  Error during parsing of command line.
[root@znas /]# lvcreate -n home -L 197.5G almalinux
  Logical volume "home" created.
[root@znas /]# cd /dev/mapper/
[root@znas mapper]# ls
almalinux-home  almalinux-root  almalinux-swap  control
[root@znas mapper]# mkfs.xfs /dev/mapper/almalinux-home
meta-data=/dev/mapper/almalinux-home isize=512    agcount=4, agsize=12943360 blk                                    s
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=51773440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=25280, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
[root@znas mapper]# df -lh
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root  270G  6.8G  264G    3% /
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   36K  762M    1% /run/user/0
[root@znas mapper]# mount /dev/mapper/almalinux-home /home
[root@znas mapper]# df -lh
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.8G     0  3.8G    0% /dev/shm
tmpfs                       1.5G   18M  1.5G    2% /run
/dev/mapper/almalinux-root  270G  6.8G  264G    3% /
/dev/sda2                  1014M  291M  724M   29% /boot
/dev/sda1                   599M  7.1M  592M    2% /boot/efi
tmpfs                       762M   36K  762M    1% /run/user/0
/dev/mapper/almalinux-home  198G  1.5G  196G    1% /home
[root@znas mapper]# cd /data/
[root@znas data]# ls
dockerimg  zhang
[root@znas data]# mv zhang/ /home/
[root@znas data]# ls
dockerimg
[root@znas data]# cd /home/
[root@znas home]# ls
zhang
[root@znas home]#

参考文献

[1]鸟哥.鸟哥的 Linux 私房菜[M].人民邮电出版社,2010.

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    945 引用 • 943 回帖 • 1 关注
  • 操作系统
    39 引用 • 56 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...