NAS 磁盘文件系统如何设计
现状
4 块 4TB HDD 硬盘
1 块 512GB SSD 硬盘
64GB 内存(没有 ECC )
目的
能够实现快照
能够自动检测文件错误并修复
能够使用 SSD 作为缓存,加速读写
前两条为强需求
场景
家庭用户,资料数据、照片数据不期望损坏,期望不丢失
电影随意,可以随时丢失
读写频次并不高
可以接收因为缓存损坏导致的 1-3 天数据丢失(近期数据或照片都在电脑或手机上有备份,不怕丢失近期数据)
方案
方案 1
raid1->bcache->btrfs
2 块 HDD 组 raid1(使用 mdadm) -> md0
1 块 SSD 和 md0 结合使用 bacache 创建缓存后的块设备 -> bcache0
把 bcache0 格式化为 btrfs
缺点:
数据损坏的时候不知道哪一块上的数据是好的,而且因为 raid1 处于底层,brtfs 也无法进行数据修复
bcache 设备损坏不清楚会不会导致整个 btrfs 磁盘损坏
方案 2
bcache->btrfs+raid1
1 块 HDD 和 1/2 块 SSD 组缓存后的块设备 -> bcache0
1 块 HDD 和 1/2 块 SSD 组缓存后的块设备 -> bcache1
bcache0 和 bcache1 使用 brtfs 组成 raid1
缺点:
bcache 设备损坏不清楚会不会导致整个 btrfs 磁盘损坏
缓存盘浪费,写入的是一样的数据,但是却缓存了两份
方案 3
raid5(mdadm) -> bcache -> btrfs
大家经常说 raid5 重建很痛苦,而且不一定成功,有些害怕
方案 4
ZFS
缺点:资源消耗大,磁盘性能下降严重(听说的,不清楚实际情况)
方案 5
LVM ,因为其缓存也是工作在块设备这一层的,和方案 1 和 2 类似,就不考虑了
问题:
各位朋友什么建议?大家一般怎么规划自己的文件系统?
SSD 缓存 2 块 HDD 做普通数据盘 2 块 HDD 做 raid 1 普通盘可以定期备份到 raid1 里
目前手持 zfs-raidz1 4X8T, 性能下降还行, 快照很爽, 数据损坏暂时未遇到
其他硬盘也基本 all in zfs 了, zfs 性能下降是大文件会被切成块, 然后碎片又无法整理, 不在乎大文件高速顺序写, 问题不大
4 块 4T 硬盘,重建一次 raid5 ,我用时从 12 小时到 22 小时。重点是要用功率余量大性能可靠的电源。很多山寨和自己组装存储服务器的玩家都不舍得在电源上多花点儿钱。
既然考虑了 raid5 不如试试 zfs 的 raidz ,用着很舒服,不开 dedup 消耗也没那么大,快照和擦洗很方便,也可以添加 vdev 当缓存(虽然单 ssd 做缓存加速读写可能不稳
没带缓存的阵列卡就别用 raid5 了,性能会很差
u 盘里塞个 freenas ,zfs 就可以
我是 3 块 2t 盘做的 zfs raidz1 ,外加一 480 的 ssd 走了缓存,所有都是默认配置,然后发现一个奇怪的现象就是通过 dd 测试但块硬盘的速率大概是 200M 左右,然后 zfs 只有 100M 以下,甚至偶尔 50-60M ,结果运行了一段时间之后,发现 zfs 的 dd 测试速率达到了 200M 。。。也不知道是为啥。。。反正用做挂 pt ,smb 共享电影,倒也没啥特别影响体验的,就再也没怎么关注速率了。
ZFS 组镜像条带就完事了,SSD 缓存都不需要。
zfs 就完事了,资源消耗?磁盘性能?没听说过。
群晖的 btrfs+md+lvm 倒是可以互相引用冗余和 checksum 修复错误
A 日常存储
B+C+D snapraid, 定时同步
搞个 ZFS 用用,听说有个屁用。
哥们,你这强需求基本就把范围锁死了,还能怎么选。。。
你在 v2 上问这个问题那就在 v2 搜
site:hesudu.com/t btrfs
前五行两个丢数据一个建议观望,这你真敢用?
虽然我不用 zfs 而且我对 zfs 的刻板印象停留在某些知名油管主被搞炸自己主存储的阶段。。。
但是你没得选了。。。
都用 bcache 了为什么不直接用 bcachefs 直接组建?
snapraid+云盘同步?
#9 并不行,我的数据最初是放在群晖里的,raid1+brtfs ,结果有张照片坏了
我已经实现好并正在用的方案,可参考一下:
nvme0: SSD ext4
zpool: 4xHDD zfs
mergerfs: 2xHDD mergerfs over ext4
tier0: (nvme0) 临时文件,通常是 Cache 、BT 下载途中的文件
tier1: (nvme0/zpool) 需要经常快速读写的重要文件,比如代码和配置文件,定期备份到 zpool
tier2: (zpool) 收集起来不太容易的资源文件、比较喜欢的音乐电影、日剧录像
tier3: (zpool/mergerfs) 重要但不太需要经常读写的大文件,比如照片录像,定期备份到 mergerfs
tier4: (mergerfs) 非常容易重新下载的东西,大热门电影电视剧
- zpool 每个季度要做 scrub
- 大热门影视真的没必要做冗余,留个种放在 tier1 就好了
存在 mergerfs 里,任何一个盘坏了都不会损失全部数据,只会损失坏掉哪个盘的数据。
我发现你们都研究的好深....
先说明我认为,一旦数据损坏,大概率可能无法被发现,这里前提,损坏是指文件被修改。也就是你在复制或者移动文件时,文件本身已经被损坏了,这个我认为是软级别(系统)的问题而不是硬级别(盘格式)的问题。
我有两个常用的 nas ,一个是基于 raid5 。一个则全部是 basic ,对,也就是啥也不干,裸奔。basic 常年开机,用于日常数据,而 raid5 的 nas 单纯用于备份,备份之后关机。
我定期会对同步的照片进行备份,随我心情,可能是几周或者半年。而为了解决,在备份过程中,文件已经损坏的情况,无论是在 copy 前还是 copy 后的损坏。于是我买了几百块钱的光盘,打好压缩包,定期把图片备份到光盘。
对,我认为解决文件损坏的办法,只有备份,而且还不能是基于文件变动检测的实时备份,因为你被污染的源数据也会同步污染备份数据。
当然我的方案也可能存在我一起床,发现数据都没了的惨状,所以还得辅佐其他类型的实时备份或者数据校验什么的。
多备份到多个介质才是最安全的做法。
v2 内也能搜索到 是有情况无法修复的 lishouzhong.com/article/note/uncategoried/%E7%BE%A4%E6%99%96%E7%9B%B8%E5%85%B3/#%E7%BE%A4%E6%99%96%E5%AE%9A%E5%88%B6%E5%90%8E-btrfs-%E5%8F%AF%E4%BB%A5%E5%88%A9%E7%94%A8-mdadm-%E7%9A%84%E5%86%97%E4%BD%99%E6%95%B0%E6%8D%AE%E4%BF%AE%E5%A4%8D-data-extent
各种 raid 、fs 都使用过最少半年,最终直接挂上去,比如下载就挂 /dev/sda => /volume/downloads ,然后用 timeshift 定时备份重要数据到网盘(大部分数据都可以重建或重新下载),目前除了一次地震的时候坏了 1 块盘暂未出现其它问题
首先,肯定要可以支持快照
其次,要软 Raid 而不是硬件 Raid
那么,剩下的选择就只有 ZFS 和 btrfs
个人的话会选择 ZFS
没有 ecc 大概率不需要考虑 2 ) 能够自动检测文件错误并修复
因为理论上你写的,或者其他情况造成内存位反转就 gg 了。
我看了下场景,其实你完全可以 (类似群晖的玩法) 做俩 zfs: z1+z0
硬盘分区,
每个盘分 1T 出来,组 raidz10, 2T 的空间,重要资料和数据放这里
剩下 3T 组 raidz0 (12T raw), 放电影,盘坏了,丢了就丢了。
对于资料和照片等,cache 没啥必要,因为你大部分 io 都是媒体文件顺序 io ,而且也不会反复读写,命中率不高,ssd cache 加速不如你 64G ram 给 zfs 做 arc 。
ssd 单盘单独用吧,做系统,或者临时缓存。
ps: 只有 btrfs 和 zfs 有快照
小白的话,无脑群晖+btrfs+raid10 完事。
喜欢折腾可以玩多分区 zfs.
全用 ZFS 的话,这些问题都能解决。首先个人电脑上单盘的 ZFS 可以校验文件是否损坏,而且 ZFS 快照很容易,所以即使中勒索病毒之类文件被加密,找回之前版本的文件也是举手之劳。NAS 上 ZFS 组成 raidz 更不用说,一个盘有物理坏道导致校验错误,ZFS 会自动从好盘恢复相关数据。
我是方案 4 ZFS /t/979429
4 块 16T HDD 3 块 SSD 64G 内存无 ECC
如果只有一块 SSD ,建议 512G SSD 分 32G 给 PVE ,32G 给 ZFS 写缓存,256G 给 ZFS 读缓存,剩下空间给 PVE 的 swap 和虚拟机的 swap
4 块机械硬盘 RaidZ1 / RaidZ2
ZFS 用了快十年了,随时增减硬盘,感觉良好。但重要数据,还是建议使用可靠云厂商,直接 OSS 备份。
zfs 就可以,
- 我是自己写的脚本快照,如果你需要更简便的管理,可以用 TrueNas Scale
- 文件被系统读取的时候才会发现错误,所以一般都会设置定期扫描,有冗余就会修复错误
经过我的研究,对于 zfs ,ECC 不是那么有必要,但是大内存有很多好处。
性能没感觉有多少下降,确实需要更多内存,但是是用于读取缓存了,会有加速
一块 ssd 可以分成两个盘,一个给系统,一个 zfs 加速,不过你已经有 64g 内存了,ssd 加速可能不明显,都给系统,用于跑应用比较好
在公司分的一台 i7-12700 64G 的 window 电脑上用 vmware 虚拟出一台 16c16g 的 Ubuntu 装上 Docker 跑 gitlab-runne…
搬瓦工的两个节点,一个日本的一个美国的,虽然可以登录,但每发一条就会弹出图形验证码,整整连续十个! imgur.com/a/bAVNRK0我自建的梯子,也不是机场,怎么就被识别…
打印质数的算法应该是学习计算机编程的一个经典的问题,在这里想给大家展示一些方法,相信这些方法会对你的编程有一定的启发作用。请你注意几点, 实际应用和教学应用有很大的差别。 最…