NAS 磁盘文件系统如何设计

ZGeek · 2025-1-16 11:42:48 · 322 次点击

现状

  1. 4 块 4TB HDD 硬盘
  2. 1 块 512GB SSD 硬盘
  3. 64GB 内存(没有 ECC )

目的

  1. 能够实现快照
  2. 能够自动检测文件错误并修复
  3. 能够使用 SSD 作为缓存,加速读写

前两条为强需求

场景

  1. 家庭用户,资料数据、照片数据不期望损坏,期望不丢失
  2. 电影随意,可以随时丢失
  3. 读写频次并不高
  4. 可以接收因为缓存损坏导致的 1-3 天数据丢失(近期数据或照片都在电脑或手机上有备份,不怕丢失近期数据)

方案

方案 1

raid1->bcache->btrfs

  1. 2 块 HDD 组 raid1(使用 mdadm) -> md0
  2. 1 块 SSD 和 md0 结合使用 bacache 创建缓存后的块设备 -> bcache0
  3. 把 bcache0 格式化为 btrfs

缺点:

  1. 数据损坏的时候不知道哪一块上的数据是好的,而且因为 raid1 处于底层,brtfs 也无法进行数据修复

  2. bcache 设备损坏不清楚会不会导致整个 btrfs 磁盘损坏

方案 2

bcache->btrfs+raid1

  1. 1 块 HDD 和 1/2 块 SSD 组缓存后的块设备 -> bcache0
  2. 1 块 HDD 和 1/2 块 SSD 组缓存后的块设备 -> bcache1
  3. bcache0 和 bcache1 使用 brtfs 组成 raid1

缺点:

  1. bcache 设备损坏不清楚会不会导致整个 btrfs 磁盘损坏
  2. 缓存盘浪费,写入的是一样的数据,但是却缓存了两份

方案 3

raid5(mdadm) -> bcache -> btrfs

大家经常说 raid5 重建很痛苦,而且不一定成功,有些害怕

方案 4

ZFS

缺点:资源消耗大,磁盘性能下降严重(听说的,不清楚实际情况)

方案 5

LVM ,因为其缓存也是工作在块设备这一层的,和方案 1 和 2 类似,就不考虑了

问题:

各位朋友什么建议?大家一般怎么规划自己的文件系统?

举报· 322 次点击
登录 注册 站外分享
2 条回复  
kiracyan 小成 2025-1-16 11:47:56
SSD 缓存 2 块 HDD 做普通数据盘 2 块 HDD 做 raid 1 普通盘可以定期备份到 raid1 里
waifu2x 初学 2025-1-16 11:49:03
目前手持 zfs-raidz1 4X8T, 性能下降还行, 快照很爽, 数据损坏暂时未遇到 其他硬盘也基本 all in zfs 了, zfs 性能下降是大文件会被切成块, 然后碎片又无法整理, 不在乎大文件高速顺序写, 问题不大
返回顶部