![为什么Megaraid-sas和mdadm Raid 1+0 = Raid 10 的实际读取速度很慢?](https://linux22.com/image/755102/%E4%B8%BA%E4%BB%80%E4%B9%88Megaraid-sas%E5%92%8Cmdadm%20Raid%201%2B0%20%3D%20Raid%2010%20%E7%9A%84%E5%AE%9E%E9%99%85%E8%AF%BB%E5%8F%96%E9%80%9F%E5%BA%A6%E5%BE%88%E6%85%A2%EF%BC%9F.png)
其中一个 raid 卡出现多位 ecc RAM 模块故障,这就是为什么我要将 60TB 的数据从一台服务器移动到另一台服务器……
获得 60-100 Mb/s 的读取速度 3 Megaraid sas raid1 s 8+8+6 x 10TB 磁盘,并使用 mdadm 将它们与 raid 0 进行跨接,同时使用 tar pigz 将文件夹压缩到另一个网络 raid5 文件夹或同一服务器。我很少在一小时内超过 100mb/s 几秒钟(最高 250mb/s)...
但是当我复制一个 8 GB 的大文件时,它以 10G 以太网 987mb/s 的速度复制。同时hdparm -tT /dev/md0p1
提供 1.5 GB/s 的速度。
磁盘和 RAID 阵列的簇大小全部为 4096 k 75% 的文件大小 >30mb 还有 256 GB 的文件 我怎样才能尽可能快速可靠地压缩 tar.gz 文件... 这台机器出了什么问题
其中一个 RAID 卡出现多位 ECC RAM 模块故障,因此它可能是导致速度慢的罪魁祸首吗?还是因为磁盘是机械的?然而请记住文件分布如下:
Bytes Number of Files:
0 14
16 24
32 21
64 603
128 207
256 1677
512 2361
1024 45
2048 90
4096 112
8192 358
16384 315
32768 235
65536 309
131072 296
262144 2275
524288 1148
1048576 2187
2097152 3204
4194304 2708
8388608 2148
16777216 703
33554432 1585
67108864 906
134217728 259
268435456 71
536870912 42
1073741824 33
2147483648 38
4294967296 16
这是一个稍微容易阅读的版本: https://docs.google.com/spreadsheets/d/15J3LsU5G_km70mW0yE6ehiK4oHZmOLuUxRpBCM25-r0/edit?usp=sharing
在更换故障的 RAID 卡之前,有没有什么实用的解决方法来复制所有数据?
答案1
我发现,使用机械磁盘复制小文件(特别是接近 raid 集群大小的文件)非常困难,复制小文件时速度会大大降低......低于 250Kb/秒。
两种解决方法是启用 512mb 的 raid 卡缓存,当有机会时,它足以传输小文件……更好的是,我们可以使用 nvme 或 sata-ssd 磁盘作为 linux 中的 bcache 缓存,当复制文件大小为 512KB 到 1MB 的文件时,速度可以达到 256 MB/秒到 1GB/秒。可以使用 sysfs 调整 bcache。有一个 sequantial_cutoff 参数,当您将其设置为 1MB 时,小于 1MB 的文件将进入 sata-sdd 或 nvme 缓存,其他文件正常写入。默认 sequantial_cutoff 为 4MB。
事实证明,由于噪音太大,我们拔掉了服务器机箱风扇。然后忘记重新插上,导致 RAID 卡发热,并导致其出现单多位 ECC 错误。!尤其是其他两张 RAID 卡中间的卡出现错误。我猜是因为它们有被动冷却,中间的卡发热最多。不过,复制速度慢与此无关。
最终答案是:当复制接近簇大小的文件或小于簇大小的文件时,机械磁盘 raid 设置的速度非常慢并没有问题。
答案2
您甚至没有提到 FS,也没有提到它是否针对 RAID 布局进行了调整。是的,可能是这样。其次,小文件可能分散在磁盘上,而大文件的区域通常是连续的,这并不奇怪。在这种情况下,旋转存储很难应对。