最初我有一个 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
传统上用于此目的:短暂的挂载点),移动文件,然后卸载新分区并将其挂载到其最终位置。