![是否可以在同一根目录内重新定位 btrfs 子卷的挂载点?](https://linux22.com/image/787686/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%90%8C%E4%B8%80%E6%A0%B9%E7%9B%AE%E5%BD%95%E5%86%85%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D%20btrfs%20%E5%AD%90%E5%8D%B7%E7%9A%84%E6%8C%82%E8%BD%BD%E7%82%B9%EF%BC%9F.png)
我在/docker/nc/data路径下创建了一个btrfs子卷。如下图:
$ sudo btrfs subvolume list /
ID 256 gen 13908 top level 5 path docker
ID 257 gen 13877 top level 256 path docker/nc/data
是否可以将子卷移动到子卷面板中的某个位置?例如
/docker/nc/config/data
里面有将近90GiB的数据,不复制的话能完成吗?
答案1
是的,可以在同一根目录内重新定位 Btrfs 子卷而无需复制数据。Btrfs 提供了使用带有“-r”选项的 Btrfs subvolume set 命令执行子卷重新定位的功能。以下是实现方法:
确保目标子卷(docker)内有足够的可用空间来容纳要移动的子卷(docker/nc/data)中的数据。
继续操作之前,请确保没有活动进程正在访问或修改要重新定位的子卷。如果子卷当前已挂载,建议将其卸载。
打开终端或 shell 并运行以下命令来执行子卷重定位:
sudo btrfs subvolume set-default <new_path> <old_path>
对于您来说,命令看起来应该是这样的:
sudo btrfs subvolume set-default /docker/nc/config/data /docker/nc/data
执行该命令后,子卷将重新定位到新路径,但不复制数据。需要注意的是,该过程是即时的,因为它只是更新子卷的元数据。
最后,您可以通过再次列出子卷来验证重定位:
sudo btrfs subvolume list /
您应该看到子卷 docker/nc/data 已被重定位到新路径 docker/nc/config/data,同时保留了数据。
请记住更新任何依赖旧路径的引用或配置以反映新路径。
请注意,始终建议在对文件系统结构进行任何修改之前备份数据。