当前位置: 首页 > news >正文

为什么 NFS 不适合作为 TDengine 的数据存储

NFS

NFS 是一种分布式文件系统,允许多台计算机通过网络共享文件。其具有以下优点:

  1. 共享存储:
    多个数据库实例可以共享同一个 NFS 目录,适合分布式数据库或集群环境。
  2. 灵活性:
    数据存储可以集中管理,便于备份和迁移。
  3. 成本低:
    利用现有的网络基础设施,无需专用存储设备(如 SAN)

但其网络文件系统的特性,也存在如下限制:

  1. 缓存机制
  • NFS 客户端会缓存文件的元数据和数据,以减少网络请求,提高性能。客户端读取的文件数据可能会缓存在本地 RAM 中。如果其他客户端修改了文件,当前客户端可能仍然读取旧数据(缓存一致性问题)。
  • NFS 服务器也会缓存数据,提高性能。默认情况下,NFS 服务器不会立即写入磁盘,而是异步写入,以提高写入性能。如果服务器宕机,可能导致数据丢失或写入失败。
  1. 文件锁
    NFS 的文件锁主要分为 fcntl() 的锁 和 flock() 文件锁,以及 NFS 的独立锁管理机制 Network Lock Manager(NFSv3之前版本)。
    在本地文件系统(如 ext4、XFS)上,文件锁是内核管理的,进程锁不会丢失。但在 NFS 上,锁的管理是基于 RPC 远程调用的,容易受网络抖动和服务器宕机的影响。
  • flock() 文件锁
    • 适用于进程间锁定,类似 POSIX flock()。
    • 在 NFSv3 上,flock() 可能不可靠,不同客户端可能无法正确检测到锁。
  • fcntl() 文件锁(POSIX 记录锁)
    • 适用于 NFS 共享存储的多进程并发控制。
    • NFSv4 允许 fcntl() 锁跨客户端生效,但如果 NFS 服务器重启,锁可能丢失。

TDengine

TDengine 作为时序数据库,通常处理是海量的时序数据,对存储的 I/O 有较高的要求。如果使用 NFS 存储数据,可能造成如下问题:

  1. TDengine 使用 fsync() 确保 WAL 落盘,而 NFS 的缓冲机制会导致落盘延迟,无法实现数据持久化,当出现故障时,无法使用 WAL 恢复数据。
  2. 由于 NFS 的缓冲机制,可能会造成 WAL 数据写入乱序,影响数据一致性。
  3. 当多个客户端访问文件时,NFS 文件锁无法保证数据的一致性性。
  4. 网络抖动或延时,造成读写数据文件失败。

综上所述,应避免使用 NFS 作为 TDengine 的数据目录。

相关文章:

  • 在使用element-ui时表单的表头在切换页面时第一次进入页面容易是白色字体解决方法
  • SSR 框架是什么?
  • C#中继承的核心定义‌
  • 创新实践分享:基于边缘智能+扣子的智能取物机器人解决方案
  • PHP语言的开源贡献
  • MFCday01、模式对话框
  • 编译支持 RKmpp 和 RGA 的 ffmpeg 源码
  • 【面试】Redis
  • 数据类设计_图片类设计之5_不规则类图形混合算法(前端架构)
  • Git的详细使用方法
  • 【每日学点HarmonyOS Next知识】路由栈问题、图片圆角、颜色资源转十六进制字符串、数据集变化崩溃、组件声明周期
  • Selenium 中的 alert 处理
  • VLAN和Trunk实验
  • 套接字缓冲区以及Net_device
  • Unity开发的抖音小游戏接入抖音开放平台中的流量主(抖音小游戏接入广告)
  • 全面解析:将采购入库单数据集成到MySQL的技术实施
  • 大模型LLM基于PEFT的LoRA微调详细步骤---第一篇:模型下载篇
  • Mysql 的事务隔离级别相关问题
  • SealOS部署k8s集群(单节点)
  • 视频推拉流EasyDSS案例分析:互联网直播/点播技术与平台创新应用
  • 经济日报:人工智能开启太空经济新格局
  • 俄乌直接谈判结束
  • 颜福庆与顾临的争论:1930年代在中国维持一家医学院要花多少钱
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 反制美国钢铝关税!印度拟对美国部分商品征收关税
  • 书法需从字外看,书法家、学者吴本清辞世