前提条件:
- 三台及以上 NAS
- 每台 NAS 都有双网口
- 每台 NAS 每块物理盘大小相似
- NAS bios 支持来电自启
- NAS 系统盘 ssd 或 nvme 与数据盘 hdd / 或者你能够区分系统盘数据盘,测试高可用时别拔错
简易家庭网络图如下所示
光猫与三台 NAS 网口 1 通过千兆交换机进行连接
三台 nas 网口 2 通过 2.5G 交换机组成内网
确保每台 NAS 的 proxmox 设置了单独的 vmbr0 vmbr1
每台绑定的网口也一致
vmbr0 与虚拟机共享,所以是 lan
vmbr1 就是 wan 了,连接光猫
确保三台 nas 设置的 lan ip 在一个网段
组成集群
组好后选择一个节点建一台 ikuai 虚拟机
添加 lan 以及 wan,lan 在上面 (也就是 vmbr0)
虚拟机磁盘设置小一点 8 个 G 就够了,随便放在三台的哪台上
装好 ikuai, 安装完成后设置 lan 网段与 NAS 一致,进行拨号,拨号设置完之后三台 NAS 应该都会有网,每台都先更新下系统,然后重启下.
上述只是为了保证装 ceph 时有网
组成集群后点数据中心的 ceph 按步骤安装 ceph, 最好选择
osd_pool_default_min_size = 2
osd_pool_default_size = 2
管理员与监视器三台都加上
每个 node 上装好大容量机械盘后先初始化一下
添加为 osd
建一个 ceph_fs
数据中心存储里建一个 RBD
另外重要的需要关注的点,ceph 存储需要每台节点的时间定期同步避免时钟不一致
于是你需要在每个 node 上在系统页面装好 systemd-timesyncd
登录每个 node
crontab -e
*/10 * * * * /usr/sbin/ntpdate ntp.aliyun.com
十分钟同步一次时间
好了,接下来可以愉快的玩超融合了
例如刚才建好的 ikuai 拨号虚拟机,我们把它的磁盘从本地移到刚建好的分布式存储 ceph 上,移动完之后删除源,重启
由于 nas 型号一致,网口一致,所以可以达到一个神奇的效果,我的 ikuai 拨号虚拟机可以做到不断网秒级切换物理节点 (其它虚拟机也可以,主要是迁移内存中的数据,存储是在分布式存储 ceph 上所以无需迁移,模板方式的 lxc 由于限制迁移后需要重启)
可以说是做到了无感热迁移
配置下高可用 HA
接下来就简单了,可以随意折腾,比如建台虚拟机 (虚拟机磁盘及数据盘都放到 ceph rbd 上), 建好 smb 分享
测试高可用:
随机拔掉一块数据盘,你会发现你的 smb 分享仍然没有任何异常,虚拟机运行没有任何异常,并且你还能够正常通过 smb 写数据
ceph 选项卡里会出现告警告诉你一块 osd 离线,过一会数据写入完成,再将数据盘插回,
osd 过一段时间会刷新状态为可用并自动平衡刚才写入的数据
终极测试:
随机关掉一台 nas 模拟坏掉一台的情况
如果配置了 ha 并且关掉的一台上面存在虚拟机或者 lxc, 那么会在短暂的重试后自动迁移到存活的节点上并启动,你的 smb 分享也会正常工作并且可以读取写入
过一段时间再启动关掉的 nas,ceph 也会自动开始平衡
当然,更极端的情况比如三台 NAS 全坏了或者同时坏了两台不在我们的考虑范围内
那就得上更高一级别的异地多活了
在家庭环境中,若 NAS 用于存储重要数据,如代码、家庭照片、博客文章、密钥等,依赖单一台机器的硬件 RAID 或软件 RAID 存在一定的风险。即使能够成功重建,但在今天常见的 10TB 以上的机械硬盘中,重建时间可能会相当长。而在这段时间内,你的存储服务将完全不可用并且是否能够重建成功也是需要你担心的,这种情况显然是无法接受的。
因此,分布式存储系统如 Ceph 在家庭市场上有着很大的潜力。期望有厂商能够尝试多节点方案,以满足极客用户的需求。采用多节点方案还可以提供更大的扩展性,因为单一节点的硬盘位是有限的。
即使是对于最极客的用户,在家庭环境中也不应完全依赖 RAID。RAID 只是一种容错机制,而不是备份。企业级的解决方案是采用分布式存储,即使是仅三个节点也可构成分布式系统的一部分。