一、背景
《机器学习平台统一化分布式存储Ceph的进阶优化》一文提及,网易云音乐常将 CephFS 用于AI训练的共享存储,通过 Kubernetes 调用创建 PV/PVC 对接 CephFS 存储。目前使用的 Ceph 版本是 Luminous。
为满足业务方防误删的诉求,网易数帆存储团队为 CephFS 开发了一个类似回收站的防误删兜底功能。
二、理解 CephFS 的删除流程
假定有一个深度为2的目录
➜ ~ tree dir
dir
├── dir1
│ ├── file1
│ └── file2
└── dir2
├── file3
└── file4
2 directories, 4 files
如果执行 rm -rf dir 来删除整个文件夹,实际的调用会是
unlinkat(5, "file2", 0) = 0
unlinkat(5, "file1", 0) = 0
unlinkat(4, "dir1", AT_REMOVEDIR) = 0
unlinkat(5, "file4", 0) = 0
unlinkat(5, "file3", 0) = 0
unlinkat(4, "dir2", AT_REMOVEDIR) = 0
unlinkat(AT_FDCWD, "dir", AT_REMOVEDIR) = 0
可以看到也就是一棵目录树每一枝从叶子节点开始向上逐级删除,直到目录树的根。
客户端会发送这些请求到 CephFS 后端的 MDS,MDS