更新:/dev/sda6 是交换区。

更新:/dev/sda6 是交换区。

好吧,我在主目录中创建了一个目录,以便从硬盘驱动器复制一些书籍,但我发现主目录上没有足够的空间。

如下所示,我在根目录[dev/sda5]上安装了377G(可用),但在主目录[dev/sda7]上仅安装了38G,其中只有16G可用。

如何将根目录中的所有大空间放入我的主目录中,以便我可以利用该空间!?

 $ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.7G     0  1.7G   0% /dev
tmpfs           339M  1.8M  337M   1% /run
/dev/sda5       413G   16G  377G   5% /
tmpfs           1.7G   59M  1.6G   4% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
/dev/loop0       98M   98M     0 100% /snap/core/9289
/dev/loop2       55M   55M     0 100% /snap/core18/1754
/dev/loop1       97M   97M     0 100% /snap/core/9436
/dev/loop3      161M  161M     0 100% /snap/gnome-3-28-1804/116
/dev/loop4      162M  162M     0 100% /snap/gnome-3-28-1804/128
/dev/loop5      256M  256M     0 100% /snap/gnome-3-34-1804/33
/dev/loop6      256M  256M     0 100% /snap/gnome-3-34-1804/36
/dev/loop8       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop7       44M   44M     0 100% /snap/riseup-vpn/159
/dev/loop9       44M   44M     0 100% /snap/riseup-vpn/161
/dev/loop10      31M   31M     0 100% /snap/snapd/7777
/dev/loop11      30M   30M     0 100% /snap/snapd/8140
/dev/loop12     2.8M  2.8M     0 100% /snap/telegram-cli/25
/dev/loop13     124M  124M     0 100% /snap/tusk/29
/dev/loop15      92M   92M     0 100% /snap/youtube-dl/2846
/dev/loop14      92M   92M     0 100% /snap/youtube-dl/2840
/dev/sda1       256M   54M  203M  21% /boot/efi
/dev/sda7        38G   21G   16G  57% /home
tmpfs           339M   72K  339M   1% /run/user/1000

gparted 上的分区布局

答案1

通常,您应该调整分区大小,减少分配给 的空间/dev/sda5并增加分配给/dev/sda7.这是最好的长期策略。

显然这是很尴尬的并且没有考虑可能发生的情况/dev/sda6


更新:/dev/sda6 是交换区。

既然/dev/sda6是交换分区,那么您可以安全地执行以下操作。注意:如果您可以临时备份sda6某处(可能使用 )在根文件系统中的文件上,则几乎同样适用dd

  • 禁用交换/etc/fstab
  • 用于swapoff卸载交换区,sda6如果不是交换区则进行备份。
  • (受到推崇的)重新启动到单用户模式。
  • 用于resize2fs收缩/文件系统(但不收缩分区)
  • 调整根分区的大小以匹配较小的文件系统
  • /dev/sda6从分区表中删除无用的内容。
  • sda6从可用空间加上旧分区留下的空间创建一个新分区sda6
  • 格式化结果sda6并 rsync/home到它。
  • 使用 获取新 sda6 分区的 UUID blkid,将其挂载为 fstab 中的 /home。
  • 卸载 /dev/sda7 中的旧 home。验证新的 /home 是否安装正常。现在/dev/sda7已经变得多余了。
  • 消除/dev/sda7
  • 增加 /dev/sda6 的大小进入新创建的可用空间,留出足够的空间用于交换
  • /dev/sda7从减少的空间中重新创建一个较小的交换空间。
  • 使用 resize2fs 调整 sda6 中文件系统的大小以匹配更大的分区大小。
  • mkswap /dev/sda7并在 fstab 中使用其 UUID 进行设置;激活它swapon(或从备份恢复)
  • (受到推崇的)重新启动并运行fsck以确保一切正常。

您现在有一个更大的 /home in/dev/sda6和一个 swap in /dev/sda7。其他一切保持不变。小心的话,您甚至可能不需要重新启动,但我建议您使用它来捕获您可能犯下的任何错误(例如,fstab 中的错误 UUID 等)。

分区/文件系统大小匹配错误可能会导致总数据丢失除非你对自己很有信心,还强烈建议进行完整备份


某些分区编辑器可以让您分裂 /dev/sda5并在内部创建另一个分区。您将拥有无序分区:5、8、6 和 7。格式化分区 8,rsync home 到分区 8,将 home 挂载到那里,现在您拥有一个 200 GB 的 home,以及一个可用的 /dev/sda7,您可以使用它可以与 /dev/sda6 合并(记得随后扩大文件系统)。

另一种可能性是创建/dev/sda5一个用户可写入的区域,例如/opt/books。打开 时/dev/sda5,该区域有 377 GB 的可用空间。在 home 中创建一个符号链接(books -> /opt/books),您将似乎你家里有 377 GB 的书,但实际上并没有。又快又脏,但它可能对你有用。

请注意,几种备份策略(例如基于“时间机器”rsync + 硬链接)假设 /home 是全部位于单个文件系统上rsync,通过像s 这样的标志-x或显式使用硬链接。这些策略现在要么失败,要么默默地忽略备份内容好像目录/home/user/books。该备份可能会或可能不会添加到 / 的备份中(但 /opt 通常被省略并卸载到不同的备份。例如,在一个系统上,我有单独的/etc、和 备份,/opt/usr/local/ 否则根本不备份 -一个标准发行版,给定配置和软件包列表,我只是从头开始重新安装它)。

还存在其他更高级的方法。

答案2

你没有 LVM,所以一个简单的方法是在 / 分区上创建一个目录链接到 /home 后面的子目录...

更好的方法是使用高级分区工具,例如 gparted 等...尝试缩小 sda5 并为 sda7 提供大小,或者至少将 sda8 安装为 /home 的子目录(所有这些都来自 live-光盘)

如果你绝对没有数据或全部备份&如果你可以使用 LVM 重新安装&更智能的分区,那就真的更好了......

为了例子LVM 已激活

/     2g
/boot 1g
/usr  16g
/var  8g
/home 200g

相关内容