|
本帖最后由 jerrytsao 于 2022-4-7 04:08 编辑
关于存储, 讨论的实在太多了, 我这里也分享一些个人感受
A. 单盘各自使用 vs 多盘以某种方式混在一起使用
在此之前, 我的HDD数据一直都以单盘的形式存在, 从12年前的1TB/2TB到后来的4TB, 8TB以及16TB, 且一直保留容量X2递增更换
主要原因有两点
1) 早期对各种RAID以及存储文件系统没有做深入研究, 只是觉得空气单盘如果坏了大不了开盘拿数据, 如果不重要的数据甚至可以直接不要了换新
2) 软RAID特别是Win OS RAID等脱离系统之后就要重新弄, 且OS出问题就容易挂, 硬RAID则直接不考虑, 卡贵而且折腾起来太麻烦
最近几年, 随着网速的加快, 下载4K UHD原盘文件夹动不动超80GB, 加上qBittorrent这个吃资源的家伙对单盘HDD造成了很大压力
日益觉得存储和PC一起有很重的累赘感和拖累感, 剥离开来是势在必行, 而和PC分家也意味着和单盘说再见
B. 磁盘冗余阵列(RAID)用什么模式, 普通标准RAID, 非标准RAID, 还是专门的存储文件系统?
说到RAID, 一个基本知识但很多人依旧混淆的概念 - RAID不是备份, RAID是为了Storage阵列有更强的Data Resiliency
Resiliency可以从好几方面来看, 冗余模式, 数据完整性, 纠错性能, 容错能力, 以及存储分层等
Win下软RAID刚上面提到了是一个相当不靠谱的选择, 除非上硬RAID, Storage Spaces虽不是传统RAID但差异不算太大且性能悲催
Linux下软RAID有众所周知的mdadm, 群晖的Synology Hybrid RAID(SHR)其实就是Linux软RAID魔改版
非标准RAID里面近年来比较火的有UnRAID, SnapRAID, FlexRAID等, 但总体来说这几个有各自的缺点, 且大多数对性能几乎无提升
存储文件系统方面则有Linux下的Btrfs, 多平台企业级存储ZFS, 以及近年来很多大规模阵列采用的分布式存储Ceph
选择建议
1) Budget用户或存储小白, 喜欢一块盘一块盘的添加, 且不关心性能, 可以选择SnapRAID
2) 不差钱且不喜欢太折腾, 直接无脑群辉, 利用其强大的软件优势
3) 喜欢折腾且精通Linux选择就很多了, ZFS, mdadm, Btrfs等等都可以
4) 喜欢折腾但不喜欢代码输入, 同时需要GUI可视化界面, 追求性能, 那就用TrueNAS CORE或者TrueNAS SCALE
TrueNAS CORE基于FreeBSD, 而基于Linux的TrueNAS SCALE随着将来效能优化会变得越来越强大, 推荐TrueNAS新用户直接上SCALE
C. 关于ZFS/OpenZFS/TrueNAS
TrueNAS是iXsystems下OpenZFS GUI操作系统品牌名, 旗下主要产品有TrueNAS CORE(原先的FreeNAS)和刚发布正式版没多久的TrueNAS SCALE
ZFS是Oracle甲骨文开发的文件系统, 自家用的专有文件系统叫Oracle ZFS, 而Port过来的开源版本就叫做OpenZFS, 目前依然在积极开发中
ZFS应该是当今最健壮的HDD存储文件系统, 但要玩爽ZFS有几个前提一定要先了解
1) 影响性能最大的因素永远是RAM主存, 所以成本计算上内存一定不能省, 具体容量根据你HDD Pool大小定, 但个人认为不应小于64GB
2) ZFS最早是针对HDD开发的文件系统, SSD并非最佳搭档, 特别是高性能PCIe Gen 4 SSD无法发挥其全部性能
好消息是即将推出的OpenZFS 3.0(TrueNAS要等到23年)对NVMe SSD甚至PMem做了大量新功能和优化, 今后用于SSD存储文件的前景相当乐观
3) ZFS在盘位上最好提前部署, 比如一期的实际可用容量是否够你用, 以及今后准备如何扩展加容量
从上图可以看到3.0版本会更新期待已久的RAID-Z单盘扩展, 虽然从目前测试看来我觉得体验一般, 但对预算紧缺组ZFS的人来说这绝对是天大的好消息
这里顺带说一下OpenZFS 2.1新增的dRAID vs RAID-Z
dRAID适合于一次性固定投入大量盘数的环境, 比如你一次性弄24-96盘, 以后不再增加
低于20盘数就没有必要走dRAID了, 而且短期内dRAID在同Pool下也无法扩展磁盘数量
RAID-Z适合分批次加同样磁盘vdev的用户, 比如第一次先弄12盘Vdev 1, 等钱包充足或者容量不够了再弄12盘在同Pool下添加Vdev 2
dRAID主要解决了很多人担忧的长时间Resilvering(ZFS重组)使得中途另外磁盘挂掉, 进而导致整个Pool Degraded的问题
但RAID-Z同样也有办法来减少风险, 那就是前几年新增的Allocation Classes
将Metadata放在专门的SSD Special Vdev大大加速了Resilvering时间, 同时可以指定<某个Block Size的文件运行在IOPS高太多的SSD上
另外注意RAID-Z适合于视频等大文件为主的流文件(也就是持续读写), 如果Pool纯粹用于数据库+小Block Size毫无疑问还是选择Mirror镜像
扯了这么多下面进入正文, 先来看下这台基本拉满的服务器配置
Case: Fractal Design Define 7 XL
PSU: Super Flower LEADEX G1000W
CPU: AMD EPYC Milan 7T83
MB: Supermicro H12SSL-NT Or ASRock Rack ROMED8-2T
HBA: 2*Broadcom 9400-16i
DRAM: 8*64GB=512GB Samsung DDR4-3200 2R RDIMM M393A8G40AB2-CWE
OS Boot: 2*Samsung PM9A3 1.92TB M.2 2-Way Mirror
Metadata Vdev: 3*Samsung PM9A3 3.84TB U.2 3-Way Mirror
Slog Vdev: 2*Intel Optane 900P 280GB U.2 2-Way Mirror
L2ARC: N/A
Data SSD: Memblaze PBlaze5 D700 11TB U.2
Data HDD: 24*Seagate X18 18TB
2块OS盘M.2 22110以及用于各种Vdev的6块2.5" U.2 SSD全家福
三块9400-16i, 上面两块是原厂货, 最上面那块之前故障了所以跑去海鲜市场买了一块
收到后发现"国产OEM仿品"(最下面那块)泛滥TB/海鲜/eBay, 不过固件/BIOS/EFI更新都正常, 也就将就着用吧
7XL总览
开机两块HBA检测
此处强烈推荐OS安装神器Ventoy, 只需点击一次安装, 放入ISO文件即可, 再也不用反复rufus做启动盘...
这次24块X18 ST18000NM000J有去年7月和去年11月两个Batch, 自带都还是SN01固件, 而官网有新固件SN02, 所以需要一个个手动升级
TrueNAS SCALE安装界面选择磁盘
新建Pool界面, 可以看到1个数据池下有Data, Cache, Log, Hot Spare, Metadata和Dedup共6种Vdev类型
Data顾名思义就是数据
Cache就是L2ARC二级读缓存, 一级缓存当然就是RAM
Log指的是Slog用于加速Sync同步写入速度
Hot Spare就是大家熟知的热备
Metadata即上面已经提到的Allocation Classes, 统称Special Vdev
Dedup AKA De-duplication数据去重, 属于变相的数据压缩, 一般不建议使用, 一方面会占用大量主存, 另一方面会降低性能
具体Vdev配置, 这里顺便说明选择上述硬件配置的理由
RAM: 8条64GB DDR4-3200 2R RDIMM, 512GB能满足500TiB Pool(1GB/1TB)的"坊间最佳要求", 无论科学与否内存越大对ZFS只有正作用
OS启动盘: 2块Samsung PM9A3 1.92TB M.2做2-Way镜像, 评测见此, 主要考虑22110+防掉电保护
Metadata Vdev: 3块Samsung PM9A3 3.84TB U.2做3-Way镜像, 评测见此, 一般来说Metadata容量可按0.3%去算
如果基本都是视频大文件所需要百分比更小, 但假如很多随机小块的话则可选择1%, 可以运行以下命令获取更准确的块大小统计
由于此Vdev是将原本放在HDD的Metadata移到随机IOPS快很多的SSD上, 一旦坏了整个Pool的数据也毁了, 需要至少2块组镜像, 推荐3-4块也不为过
Slog Vdev: 2块Intel Optane 900P 280GB U.2做2-Way镜像, 自从Optane SSD发布之后便成为ZFS Slog御用盘, 没有之一
最佳Slog盘当属P4801X 100GB, 这里选择900P 280GB主要同时兼顾容价比和耐久度
此Vdev可以随时删除, 因此镜像不是必须, 而容量则和网络直接相关, 10GbE理论上只需要5s*1.25GB/s=6.25GB
注意Slog只在Sync同步写时起作用, Async异步写时就是靠主存, 以下是关于Standard, Sync Always和Sync Disabled三者的区别
sync=standard: sync writes are written 2 times (first to LOG, second as normal write every ~5 seconds) async write are written only once (every ~5 seconds) sync=always: sync & async writes are written 2 times (first to LOG, second as normal write every ~5 seconds) sync=disabled: sync & async writes are written only once (every ~5 seconds)
Cache Vdev: 无, L2ARC只在主存不够的情况下建议使用, 否则很可能会起反作用
Data SSD Vdev: 1块Memblaze PBlaze5 D700 11TB U.2, 评测见此
单独新建一个SSD单盘Pool, 主要原因是为了BT软件, 第一次组ZFS很容易忽略的情况是P2P所导致的磁盘碎片
一旦HDD池里用BT软件, 只有重写文件才能Defrag, 而由于ZFS本身COW特性就是"碎片"式文件系统, 等到后期容量不够用再整理是不可能的
有了SSD Pool, 意味着可以在qBittorrent里设置"Keep incomplete torrents in:"指向到SSD, 下载完毕后自动完整移到HDD Pool, 完美解决碎片化问题
Data HDD Vdev: 一期24盘组2个12-Wide RAID-Z2 Vdevs, 最大可用空间为325.2TiB(1MiB Record Size)和299.1TiB(128KiB Record Size)
家用一般只推荐Z2(Z1太危险, Z3没有必要), 12盘通常来说是Z2的宽度极限, 像16-24盘这样太宽的单Z2 Vdev只有可怜的单盘IOPS且安全系数直线下降
未来容量扩展其实相当方便, 添加12块同型号磁盘组新的Vdev, 然后加入到原有的Pool当中
如36盘组3个Vdevs可以达到487.8TiB(1MiB)和448.7TiB(128KiB), 而96盘组8个Vdevs则可以达到1,301.5TiB(1MiB)和1,197TiB(128KiB)
此种扩展方式的另一个优点是, 新增1个Vdev的同时可以增加一个单盘的IOPS, 对整个HDD Pool的随机性能都有帮助
Pool Status页面可以清晰查看Pool和Vdev的完整结构
Disks页面可以找到各磁盘的序列号, 容量, 以及所属Pool
开启SMART Tests后, 即可在Reporting页面查看各磁盘的温度信息
这里建议Scrub和SMART Long岔开两周各一次, 第1周某日Scrub, 第2周同日SMART, 第3周同日Scrub, 第4周同日SMART, 每月如此循环
Storage主页可以查Pool和Dataset的基本数据, 注意这里的可用容量299.1TiB是基于128KiB Record Size的预估
改成1MiB之后实际可用容量为325.2TiB, 但不会在ZFS上显示, 可以在文件信息里看到实际磁盘占用, 会比原本小一些
设置里的Boot页面可以看到当前OS盘里的TrueNAS系统版本和体积, 如果有过升级会保留之前的版本
Dataset页面设置一览, 主要修改Compression Level, Record Size, ACL Type和Metadata (Special) Small Block Size
首页信息全览
下一步是设置Sharing, 先弄个简单的SMB
为了不影响Root用户设置, Credentials下新建一个User, 默认打钩Samba Authentication
然后在Windows上映射磁盘即可
C8DH上只有2.5GbE, 随便测一下稳定在极限280MB/s上下
除了SMB之外, 还可以给ATV整个WebDAV, 或者弄个iSCSI Block Storage折腾更高的带宽和更低的延迟
SCALE的一大特点就是更多的Application, 默认很少只有7个(包括Plex, Nextcloud, Chia等), 需要在里面添加TrueCharts Catalog
添加完之后, 就拥有了多达194个App, 包括常用的TrueCommand, qBittorrent, Emby等等, 能涵盖各类需求, 比FreeBSD的Jail强大太多
SCALE相比CORE另一个优势当然就是Linux KVM了, 虽然目前还没法和VMWare之类相比, 但SCALE的潜力很大, 同OpenZFS一起拥有很高的天花板
2022-03-29 Update 10GbE
连上12900K默认+Z690 Formula的AQC113
未作任何巨帧等优化Windows 11初步跑10GbE SMB, 1MiB Record Size下LZ4要比ZSTD更快一些
Windows SMB默认Async写入, 所以不会经过900P加速, 但可以看到PM9A3的Special Vdev加速让整个HDD Pool随机性能直接变成SATA SDD级别
HDD Pool持续读取稳稳被10GbE限制
2022-04-06 Update 40GbE
因为有了sunneyboy的这个SCALE vs CORE帖子, 开始折腾之前扔在垃圾堆N年的"古董级"网卡
由于之前两块ConnectX-4 VPI MCX456A-ECAT 2*100GbE Lenovo OEM(4年前的测试见此)不知为何闲置着就挂了
反倒是更早eBay买的ConnectX-3 Pro VPI MCX354A-FCCT 2*40GbE还活着, 只能先将就用着
一上机发现网卡显示不出来, 但是Shell里输lspci能看到设备, Google后发现大概率是端口类型默认是IB的原因
突然想起来上次用mlxconfig改过端口是坏掉的100G, 这两块40G之前只在Windows下改过端口类型, 但并没有用mlxconfig修改并写入EEPROM
果断拔下插到Windows, 下载安装MFT(Mellanox Firmware Tools)工具包, 输入mlxconfig命令修改默认VPI(InfiniBand)为ETH(Ethernet)
- mlxconfig -d mt4103_pciconf0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2
复制代码
另外其实默认不改端口也可以显示出来, 就是需要在系统设置->高级里的Sysctl添加Variable, 和FreeBSD TrueNAS CORE下Tunables是一个道理
不过还是建议上面直接EEPROM里写入以太网的方法兼容性更好
- sys.device.mlx4_core0.mlx4_port0 = eth
- sys.device.mlx4_core0.mlx4_port1 = eth
复制代码
mlxconfig改完后重新插上就可以在TrueNAS SCALE自动显示40G ETH网卡了
手上DAC铜缆只有两条HPE OEM 845406-B21, 对应Mellanox MCP1600-C003 3米, 意外发现QSFP28 100G线材也能用在QSFP+ 40G端口上
由于QSFP+ 40G, QSFP28 100G, QSFP56 200G, QSFP-DD 400G以及QSFP-DD800 800G都采用了相同大小规格的收发器, 线缆向后兼容也并不意外
在Windows的MCX354A网卡上设置单独的网关10.0.0.X和IP 10.0.0.X, 并在TrueNAS端MCX354A改IP地址为10.0.0.X, 即可握手40GbE
如此就可以做到PC和TrueNAS之间走40GbE, 同时不影响PC和TrueNAS已有的10GbE和局域网内其它设备以及WAN外网的互联
这个时候在这台PC上可以通过两个IP地址进入TrueNAS Dashboard, 默认10GbE通过交换机的192.168.X.X, 以及网卡之间互插的10.0.0.X
我这边TrueNAS SCALE HDD 2*Z2 40GbE SMB测出来的极限为27GbE, 毕竟不能和多年FreeBSD优化相比, 加上Win本身的限制, 不过会慢慢会优化的
CDM v8.0.4跑1GiB(SMT On), Special Vdev提升整个HDD Pool部分随机性能>SATA SSD, 在没有RDMA的情况下算是不错了
[Read]
SEQ 1MiB (Q= 1, T= 1): 2242.112 MB/s [ 2138.2 IOPS] < 467.34 us>
SEQ 1MiB (Q= 8, T= 1): 3196.626 MB/s [ 3048.5 IOPS] < 2615.14 us>
RND 4KiB (Q= 1, T= 1): 80.535 MB/s [ 19661.9 IOPS] < 50.75 us>
RND 4KiB (Q= 32, T=16): 435.586 MB/s [ 106344.2 IOPS] < 4803.52 us>
[Write]
SEQ 1MiB (Q= 1, T= 1): 1176.851 MB/s [ 1122.3 IOPS] < 890.14 us>
SEQ 1MiB (Q= 8, T= 1): 1669.667 MB/s [ 1592.3 IOPS] < 4985.51 us>
RND 4KiB (Q= 1, T= 1): 46.335 MB/s [ 11312.3 IOPS] < 88.27 us>
RND 4KiB (Q= 32, T=16): 143.955 MB/s [ 35145.3 IOPS] < 13889.98 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 1, T= 1): 1746.924 MB/s [ 1666.0 IOPS] < 599.57 us>
SEQ 1MiB (Q= 8, T= 1): 2363.504 MB/s [ 2254.0 IOPS] < 3541.11 us>
RND 4KiB (Q= 1, T= 1): 49.138 MB/s [ 11996.6 IOPS] < 83.01 us>
RND 4KiB (Q= 32, T=16): 177.827 MB/s [ 43414.8 IOPS] < 11661.94 us>
TrueNAS SCALE HDD 2*Z2 -> PC拷贝88GB的数个大视频文件, 平均在2.4GB/s上下, 为消除任何Q1T1读写瓶颈PC端采用的磁盘是P5800X 1.6TB
PC -> TrueNAS SCALE HDD 2*Z2拷贝88GB的数个大视频文件, 1MiB Record Size + LZ4实时压缩导致速度稍慢, 平均在1.4GB/s上下
这一波测试之后机器应该不会移到弱电箱而是在书房待着了, 接下来准备换上200GbE互联折腾RDMA和NVMe-oF Target/Initiator Offloads |
评分
-
查看全部评分
|