存储管理
告别磁盘耗尽。在容器持续运行的同时扩容仓库,将已删除的数据块归还给存储池,然后让机器自动完成这两项工作。
观看教程
一个共享池,仓库按需增长
每个仓库都是共享数据存储池中的一个文件。仓库可以在线扩容;在仓库内部删除数据本身并不会释放空间,trim 才是将数据块归还给存储池的操作。
在线扩容,零停机
rdc term connect --machine <machine-name> --repository data-app --command 'dd if=/dev/zero of=big.bin bs=1M count=1200 status=none && df -h .' 向 repository 中填充数据,直到文件系统趋于饱和。
rdc repo expand --name data-app --machine <machine-name> --size 4G 在线扩展 repository:LUKS 容器和文件系统在 containers 运行时同步扩容。
rdc term connect --machine <machine-name> --repository data-app --command 'df -h .' 从 repo 内部检查文件系统,新容量已实时生效。
用 trim 回收空间
rdc term connect --machine <machine-name> --repository data-app --command 'rm big.bin && df -h .' 删除 repository 内的数据,注意 pool 此时尚不会缩小。
rdc repo trim --name data-app --machine <machine-name> 运行 repo trim,将释放的块归还给共享 pool,在线完成,零停机。
开启自动驾驶
rdc repo policy set --machine <machine-name> --name data-app --auto-grow true --max-quota 8G --grow-step 25% --auto-trim true 设置容量策略:自动增长并指定明确上限,同时配置定时 trim。
rdc repo policy get --machine <machine-name> --name data-app 读取当前生效的策略,增长和 trim 现已自动执行。
机器现在会在仓库超过阈值时自动扩容(上限为你设定的最大值),并按计划执行 trim,由存储维护定时器驱动,无需自己配置 cron。
健康视图
rdc machine query --name <machine-name> --storage-health 检查机器存储健康状态:每个 repo 的使用量、pool 状态以及 CoW reflink 节省的空间。
每个仓库的使用量、存储池状态,以及写时复制共享为你节省了多少空间,一条命令全部呈现。
大功告成
十八个教程:安装、连接、部署、随处编辑、放心 fork、妥善保管密钥、真正备份、上线运营、持续监控、版本控制、在线迁移、增量同步,永不耗尽磁盘。你的服务器,重归你手。