AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1118096
Accepted
Rafik
Rafik
Asked: 2022-12-16 03:48:36 +0800 CST2022-12-16 03:48:36 +0800 CST 2022-12-16 03:48:36 +0800 CST

在 Centos Stream 8 上扩展 /var 分区

  • 772

在安装我的 centos stream 8 操作系统期间,我给 /var 设置了 10GB 的大小,我认为这已经足够了,但是在我开始使用 docker 之后,我发现它在 /var 分区上占用了太多空间,如下所示df 命令:

[root@compute-07 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs              28G     0   28G   0% /dev
tmpfs                 28G     0   28G   0% /dev/shm
tmpfs                 28G  179M   28G   1% /run
tmpfs                 28G     0   28G   0% /sys/fs/cgroup
/dev/mapper/cs-root  371G  8.2G  363G   3% /
/dev/mapper/cs-home  100G  2.0G   98G   2% /home
/dev/mapper/cs-var    10G  9.0G  1.1G  90% /var
/dev/sda2            2.0G  412M  1.6G  21% /boot
/dev/sda1            2.0G  7.3M  2.0G   1% /boot/efi
/dev/mapper/cs-tmp    10G  105M  9.9G   2% /tmp
tmpfs                5.5G   16K  5.5G   1% /run/user/42
overlay               10G  9.0G  1.1G  90% 

/var/lib/docker/overlay2/77f74478297ca61595f0003d35c7323ec627adb44d94cef92c2b4a3c97319a66/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/5eeb399ce4a3c0d8065d63123985269a359fa66f4d20a8486326e466a48a0128/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/08d42ca66e3a5974bc305b502bca2aa4d22aa7ddcab6ea14c6af300b3abb3a70/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/1a45cb32b127fdf8f5c1483385139a865fdc69260ec20f3dcd4c56ad6890f909/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/ebb9af8edee824a4013dcd526e33e22272283bdee508fd43208fade557def728/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/41d55822108d04c85f348dc134fe6929b0e67f6b3bd7e0af147633bfd3a252c1/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/5cf3e8e06e9b4c2e6ed65164d91aed19f63d55e91524d6563e9f16b6709d29be/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/1d1eda94e68596b00d0cabcc75a7c91999a1c845ebd02c733bb9f00ac66a26f0/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/bc9e9a28c6761ad89a9457110642156ebd2b4d77de841f2a3ac9ffbaa90e4b63/merged

tmpfs                5.5G     0  5.5G   0% /run/user/0

这是 lsblk 命令的输出,因为 /var 在一个单独的分区中然后 / 和 /home 我找不到调整它的大小或创建另一个分区然后将它链接到 /var 的方法

[root@compute-07 ~]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 558.4G  0 disk 
├─sda1        8:1    0     2G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0 554.4G  0 part 
  ├─cs-root 253:0    0 370.4G  0 lvm  /
  ├─cs-swap 253:1    0    64G  0 lvm  [SWAP]
  ├─cs-tmp  253:2    0    10G  0 lvm  /tmp
  ├─cs-home 253:3    0   100G  0 lvm  /home
  └─cs-var  253:4    0    10G  0 lvm  /var
sr0          11:0    1  1024M  0 rom  

有什么办法可以在不丢失任何数据的情况下调整此分区的大小。

centos
  • 3 3 个回答
  • 269 Views

3 个回答

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2022-12-16T04:12:01+08:002022-12-16T04:12:01+08:00

    不,实际上,系统中的大部分空间总是被/var通常可变数据所在的地方使用——数据库、 Docker、日志等,而 Linux 的,如果系统管理得当/,很少使用超过 10 GiB 的空间.

    不仅你的 LVM 不是最理想的:我会把整个 Debian 安装和一些服务放入你在 ESP 和/boot. (我习惯于创建为系统分配 4GiB 的 VM。绰绰有余。)

    好吧,最好的解决方案是减少超大的根文件系统,但这无法在线完成。您需要启动一些应急媒体,激活您的 VG,然后减少文件系统和逻辑卷,考虑到分区的大小,这可能会消耗大量时间。也有可能把事情搞砸。如果你赶时间,你可以改变一下:在根目录下创建一些目录,将 Docker 数据移入其中,然后将其绑定挂载到 Docker 数据所在的 var 中。您需要暂时停止 Docker 和所有容器。是这样的:

    systemctl stop docker.service
    mkdir /var-lib-docker
    mv /var/lib/docker/* /var-lib-docker
    mount --bind /var-lib-docker /var/lib/docker
    systemctl start docker.service
    

    这样,Docker 将使用超大根文件系统上的空间,同时在通常的位置可用。在/etc/fstab你需要添加以下条目,所以这个配置将在重启后继续存在:

    /var-lib-docker /var/lib/docker none bind 0 0
    

    但请记住,这是一种非常丑陋的 hack,它可以为您争取一些时间,但也会带来一些问题,因此请寻找机会从根目录回收空间并将其分配给/var适当的位置。

    让这成为教训:永远不要从一开始就分配所有可用空间。保留其中的一些(大部分)未分配。您始终可以轻松地添加空间并在线执行此操作,但回收它非常困难、耗时且容易出错,并且需要停机。最好管理空间,这样您就永远不需要回收它。

    • 6
  2. diya
    2022-12-16T04:34:33+08:002022-12-16T04:34:33+08:00

    作为这个答案的替代方案

    您的系统正在使用 LVM 逻辑卷。

    卷组中可能还有一些未使用的空间,您可以将其分配给 extend var。

    如果没有任何未使用的空间,或者空间太少,您可以减少或删除交换 LVM,并将由此释放的空间用于扩展 /var。

    这将使您的系统完好无损,通常甚至可以在线完成。

    这样做的方法类似于(未经测试的命令,所以不要完全复制它们,但原则应该是合理的)

    • 当您使交换分区脱机时,在超大的根文件系统上创建一个临时或永久交换文件作为替换。

      • dd if=/dev/zero of=/swap-file count=65536 bs=1M
      • mkswap /swap-file
      • swapon /swap-file
    • swapoff /dev/mapper/cs-swap 禁用交换分区

    • lvreducecs-swap 然后再次格式化剩余的 LVM 交换分区mkswap并重新激活较小的交换空间swapon

    • 或者删除它lvremove

    使用新创建的空闲 LVM 空间扩展 /var LVM 卷并扩展文件系统系统

    lvextend -l +100%FREE --resizefs /dev/mapper/cs-var
    
    • 3
  3. iBug
    2022-12-16T22:34:56+08:002022-12-16T22:34:56+08:00

    你的df,lsblk不要告诉我们他们的文件系统是什么。要收缩卷(分区或 LV),必须先收缩其上的文件系统。rootfs 的一个常见选择,ext4,可以离线压缩。然而,CentOS(和类似 RHEL 的发行版)的默认 FS 选择是 XFS,目前无法缩小。

    正如其他人在他们的回答中指出的那样,您的 rootfs 使用 8.2 GB 不难备份。因此,根据您的 rootfs 文件系统类型,您有以下选项:

    如果是 ext4,您可以就地缩小它:

    • 重新启动到另一个系统,例如 ArchISO,因为 ext4 只能脱机收缩。

    • 确保lvs显示您的分区,然后e2fsck -f /dev/mapper/cs-root

    • resize2fs -M -p /dev/mapper/cs-root

      • 或者,如果您知道所需的 rootfs 大小,则可以指定它而不是使用-M:

        resize2fs -p /dev/mapper/cs-root 15G

        请注意,最好为缩小基础卷留出一些空间。

    • 从 LV 回收空间lvreduce -L 16G cs/root

    • 将文件系统的大小调整回卷大小:resize2fs -p /dev/mapper/cs-root

    • 现在可以将可用空间分配给/var:lvextend -l +100%FREE cs/var

    但是,如果是 XFS,最好的办法是备份 rootfs 并重新创建它:

    • 像上面那样启动 ArchISO。
    • rsync -avHAXx /your-rootfs /somewhere(确保/somewhere在另一个卷上 - 很容易找到 8.2 GB 的备用空间 - 您的交换卷很可能过大)
    • lvremove根卷并以适当的大小重新创建它。这次我建议格式化为ext4。
    • rsync -avHAXx /somewhere /your-rootfs把东西复制回去。
    • 如果需要,更新您的 GRUB 配置 - AFAICT LV ID 通常作为提示写入grub.cfg,但我不熟悉 CentOS(在 Debian 上它只是update-grub)。
    • 如上所述在 VG 中分配可用空间。

    我想指出的其他注意事项:

    • 您的 EFI 系统分区 (ESP) 太大。对于典型的 Linux 服务器,256 MB 应该绰绰有余(我在我的 Ubuntu 服务器上使用 128 MB)。它只需要保存 GRUB 二进制文件和一个非常基本的grub.cfg.
    • /boot不必依赖自己的卷。GRUB 可以很好地读取 LVM 和您的 rootfs 文件系统。
    • 根据您的服务器设计,您的服务器/root也可能超大(我的 Proxmox VE 服务器使用 16 GB - 我不打算将数据放在主机上)。
    • 您真的需要 64 GB 的交换空间吗?通常我只有 8 GB 就可以了。
    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve