![将磁盘空间从 /dev/sda3 移动到 /dev/sda4](https://linux22.com/image/217627/%E5%B0%86%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%BB%8E%20%2Fdev%2Fsda3%20%E7%A7%BB%E5%8A%A8%E5%88%B0%20%2Fdev%2Fsda4.png)
这是我当前的设置:
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