我“继承”了一个系统的管理,其“/opt”(以及其他一些大型目录树)存储在根文件系统中。
我现在的愿望是在 rpool 中为 /opt 创建一个新的文件系统(足够简单),但我希望有一些 zfs 魔法,将 /-filesystem 的 /opt 目录树有效地移动到新文件系统 - 这意味着:无需复制然后删除原件。
我对 zfs 的天真的理解是它非常棒,并且已经可以在快照之间共享存储的信息,并且我希望它也可以重新排列目录以显示在不同的文件系统中,而无需移动任何批量数据。
有直接的办法吗?如果实在不行,我还可以做“cp & rm”。
PS:如果有人想知道“为什么”?将其从Solaris 上的引导环境中取出。
答案1
与此同时,我可以回答我自己的问题:
假设 /opt(“非常大”)需要移离根文件系统。
重要的!!!关闭所有服务可能在 /opt 上打开文件,例如甲骨文数据库服务器- 如果恰好安装在 /opt 下)
本质上,我所做的是:
zfs snapshot -r rpool@opt-out
(创建了一个快照 - 一个用于当前启动环境的快照就足够了,但无论如何,快照可能不会有什么坏处)zfs clone rpool/ROOT/11.4.23.69.3@opt-out rpool/opt
(从当前引导环境的快照中克隆了一个新的文件系统,该文件系统最初安装到 /rpool/opt - 11.4.23.69.3 是我当前的引导环境,对于后来的读者来说可能是不同的)mv /opt /OPT; mkdir /opt
(移走并在根文件系统上重新创建挂载点 /opt - /OPT 可以稍后删除)cd /rpool/opt; mkdir rest; mv * rest; mv rest/opt/* .
(“rest”稍后将被删除。请确保还检查“.dot-entries”并在每一步手动移动它们)zfs set mountpoint=/opt rpool/opt
(在 /opt 上重新安装新文件系统)
完毕。
最后重新启动之前关闭的那些服务。