将磁盘空间从 /dev/sda3 移动到 /dev/sda4

将磁盘空间从 /dev/sda3 移动到 /dev/sda4

这是我当前的设置:

Disk /dev/sda: 546.8 GiB, 587127480320 bytes, 1146733360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3C89EF9D-3E76-4949-8989-AA8C05C3BF77

Device         Start        End   Sectors   Size Type
/dev/sda1       2048       4095      2048     1M BIOS boot
/dev/sda2       4096   41947135  41943040    20G Linux swap
/dev/sda3   41947136  775950335 734003200   350G Linux filesystem
/dev/sda4  775950336 1146730495 370780160 176.8G Linux filesystem

lsblk -f
NAME   FSTYPE LABEL    UUID                                 MOUNTPOINT
sda
├─sda1
├─sda2 swap            7624e18c-da83-45ac-aeae-9c0864209d7e [SWAP]
├─sda3 ext4            bf9be40b-0aca-4332-8070-820a5373ac6b /var
└─sda4 ext4            d06d9bbf-210b-4df2-8f05-d9a53ed43b3c /
sdb
└─sdb1 vfat   USB DISK DEF8-5885
sr0

Filesystem      Size  Used Avail Use% Mounted on
udev             12G     0   12G   0% /dev
tmpfs           2.4G  1.3M  2.4G   1% /run
/dev/sda4       173G   59G  106G  36% /
tmpfs            12G     0   12G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            12G     0   12G   0% /sys/fs/cgroup
/dev/sda3       344G   56G  271G  17% /var
tmpfs           2.4G     0  2.4G   0% /run/user/1000
tmpfs           2.4G     0  2.4G   0% /run/user/1001

如何将一些磁盘空间从 /dev/sda3 移至 /dev/sda4?是否可以?

我可能需要在 / 分区中添加一些额外的空间,而分配给 /var 的空间对于我的需求来说太多了

答案1

虽然我最初的反应与 ctrl-alt-delor 相同(你不能移动空间 - 你可以移动数据),但它并不那么简单。大多数操作系统都期望某些东西位于某些路径上。 Ubuntu 也不例外。因此,虽然您可以将某些内容从 sda4 (/) 移动到 sda3 (/var),但您可能会因此破坏某些内容。或许可以通过添加符号链接来解决此问题。例如:

mv /usr/local /var/userlocal
ln -s /var/usrlocal /usr/local

应该大部分工作但是如果你想尝试......

mv /home /var/newhome
ln -s /var/newhome /home

...然后您会发现 AppArmor 遇到很多问题。

但还是有解决方案的——我稍后会再讨论这个问题。

首先要做的是找出目录树中所有空间都被用完的位置。但是看看你的 'df' 输出 - 还不错(在我的日常驱动程序上, / 约为 11G,我的服务器运行在 5G 左右)。所以看起来你想为未来提供空间 - 所以你应该知道它的去向。跑很多du -sh /通常就是答案。

通常在 Linux 系统上,/var 和 /home 会累积数据。由于 /var 已位于其自己的分区上,因此 /home 可能会成为您需要更多空间的地方。因此,您需要缩小 sda3,然后在当前 sda3 和 sda4 之间创建一个新的分区/文件系统。

但在你尝试之前,还有一些额外的事情要做......

您的磁盘是 GPT,所以幸运的是您不必担心主分区和扩展分区。

怀疑当您插入新分区时,新分区将变为 sda4,而您的根文件系统将移至 sda5。您需要更新 fstab 以使用 UUID 或标签而不是分区号。您还需要将 grub 指向新位置。

就我个人而言,我什至不会尝试这样做。

我会购买/借用另一张磁盘,确保数据已正确备份,然后擦除旧磁盘并重新安装/恢复。如果需要多个分区,我会确保“/”位于新磁盘的前面。

OTOH 您当前有足够的空间,您可以轻松地交换 /var 和 /home (在单用户模式下最安全):

cd /
cp -r -p /var/* /newvar/
umount /var
rmdir /var
mv /newvar /var

然后在/etc/fstab中注释掉/var的挂载。确保您的计算机顺利重新启动并正常工作,然后对 /home 应用相反的过程(再次在单用户模式下):

mkdir /newhome
mount /dev/sda3 /newhome
# get rid of the old /var content...
rm -r -f /newhome/*

cp -r -p /home/* /newwhome/
mv /home /oldhome

然后返回 fstab,取消注释 sda3 条目并将挂载点更改为 /home。重新启动并测试。如果一切顺利,删除 /oldhome

相关内容