释放挂载后无法访问的分区上未使用的空间

释放挂载后无法访问的分区上未使用的空间

最初我有一个 50GB 的磁盘,其中根 / 被安装到其上的 6GB 分区。该分区的空间不足,因此我使用剩余的可用空间 (44 GB) 创建了第二个分区。这是它最初的样子

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  50G  0 disk
└─xvda1 202:1    0   6G  0 part /

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  6.0G   20K 100% /
devtmpfs         30G     0   30G   0% /dev
tmpfs            30G     0   30G   0% /dev/shm
tmpfs            30G  121M   30G   1% /run
tmpfs            30G     0   30G   0% /sys/fs/cgroup

在根文件系统中,我有一个目录 /opt,它使用了 3.4 GB 的空间,并且是我进行大部分工作的地方,因此 /opt 将继续增长。备份完所有文件后,我将第二个分区安装到 /opt

mount /dev/xvda2 /opt

执行此操作后,新的 /opt 为 0 GB,而分区 1 仍然为 6 GB,我无法访问原来位于 /opt 中的 3.4 GB。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  6.0G   20K  100% /
devtmpfs         30G  6.1G   24G  21% /dev 
tmpfs            30G     0   30G   0% /dev/shm
tmpfs            30G  129M   30G   1% /run
tmpfs            30G     0   30G   0% /sys/fs/cgroup
/dev/xvda2       44G     0   44G   0% /opt

我已经从备份中恢复了文件,但如何删除分区 1 中未使用的 3.4 GB 空间?为了将来参考,将新分区安装到当前位于另一个分区内的目录的正确方法是什么?

答案1

当您在 上挂载另一个文件系统时/opt,无法通过该路径访问 的先前内容/opt,但它不会消失。在 Linux 上,您可以通过将其安装在其他地方来使其可用,这要归功于mount --bind.

mkdir /whole-root
mount --bind / /whole-root
mv /whole-root/opt/* /opt/
umount /whole-root

当然还有一种替代方法:将新分区临时挂载到一个空目录(/mnt传统上用于此目的:短暂的挂载点),移动文件,然后卸载新分区并将其挂载到其最终位置。

相关内容