.. _freebsd_ceph_infra:
=======================
FreeBSD云计算Ceph架构
=======================
作为 :ref:`bsd_cloud_infra` 架构的底层分布式存储:
- 采用 :ref:`thin_jail` 来模拟Ceph多节点
- 为上层 :ref:`bsd_cloud_infra` / :ref:`bsd_cloud_bhyve_infra` 提供支持
.. note::
我最初想要在FreeBSD构建一个类似我之前在Linux的 :ref:`kvm` 环境部署的 :ref:`ovmf_gpu_nvme` ,也就是运行3个 :ref:`bhyve` 虚拟机来构建Ceph集群。不过,由于我攒机的小型服务器 :ref:`pcie` 插槽有限需要全部用于 :ref:`nvidia_gpu` ,最多只能分配2个 :ref:`nvme` ,所以我考虑仅仅作为一个模拟演练,缩小Ceph使用的磁盘(分区),并且也演练 :ref:`gluster` ,仅用来验证方案。
:ref:`llm` 数据量巨大,我没有经费来购买3个副本的存储空间(Ceph),所以会直接采用 :ref:`zfs` 存储提供给Linux bhyve 虚拟机加载。
对于数据实际存储有安全性要求的,我将采用3个 :ref:`pi_5` 来构建 :ref:`ceph` 和 :ref:`gluster` ,存储实际需要确保安全性的数据。
Ceph on FreeBSD当前的实现是基于 :ref:`zfs` pools:
- 所有Ceph数据创建在 ``/var/lib/ceph``
- 日志文件存储在 ``/var/log/ceph``
- PID文件存储在 ``/var/log/run``
- 每个 ``OSD`` 需要分配 **一个 ZFS pool** (也就是说,至少需要准备3个物理分区,每个物理分区创建一个ZFS pool,并分配给一个PSD)
.. warning::
我最初考虑使用轻量级的 :ref:`vnet_jail` 来模拟构建Ceph on FreeBSD,但是 :ref:`zfs-jail` 仅能够访问 ``dataset`` ,即不能直接访问 ``zpool`` : 这对部署Ceph是一个冲突,所以可能不得不构建 ``bhyve`` 虚拟机来部署。
参考
======
- `Ceph docs: Ceph Internals » FreeBSD Implementation details `_
- `NLUUG 2017NJ: Willem Jan Withagen -- Ceph on FreeBSD `_ YouTube上的一个分享,可以了解Ceph在FreeBSD上的业界情况(2017年)