本帖最后由 zqxinran 于 2024-7-12 00:14 编辑
[讨论]Hetzner多固态独服的接口速率,顺便提醒大家引以为戒
在讨论之前,我先说说我的情况。 我有一台5950x加5个3.84T NVME的hz德国独服。型号都是MZQL23T8HCLS,也就是三星PM9A3。 我相信之前有一些朋友已经在去年9月19日时,看到我当时在MJJ论坛内提过这款机器。 我是PT保种玩家,我这人水平菜,平时没想这么多,就无脑机器上手后直接软raid0安装系统并使用了。 结果没一两天填充了将近10TB数据后,就发现机器怎么平时经常LOAD会飙升,远高于正常值,此时IOWAIT不高,有一个进程(抱歉我忘了是什么进程了)会吃不少CPU。 此时,我保种客户端qb并没有很多传输任务。我可以确定绝对不是因为保种的压力大导致CPU/IO瓶颈。 这个现象经常会出现,然后过一会儿就消失,总之是反反复复。
然后我想起了朋友之前说的,有一些固态用多了用久了,格式化硬盘或者trim都对固态硬盘的性能回复没有任何帮助,唯有全盘写零操作才能彻底解决这个问题,如果还是不能恢复,那么这个固态就只能丢了。因此我进入hz的rescue,进行了所有磁盘的写零操作(这个过程耗时很久,建议用screen或tmux):
- mdadm –stop /dev/md/*
- wipefs -fa /dev/nvme*n1
- blkdiscard -z -f -v /dev/nvme0n1
- blkdiscard -z -f -v /dev/nvme1n1
- 等等
复制代码
写零操作结束后,我继续软raid0重装系统并重复我上述的流程,然后问题依旧。
此时我就开始怀疑可能我不能继续用raid了。我重新回到hz的rescue,不适用raid的前提下,并把系统安装在了第一个磁盘,即nvme0n1内。系统安装完毕后,我第一次进入系统,便直接把剩余的磁盘全部以JBOD的形式制作了一个大的挂载分区:
- mdadm –create –verbose /dev/md0 –level=linear –raid-devices=4 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1
- mkfs.ext4 /dev/md0
- blkid /dev/md0 |awk ‘{print $2 " /md0 ext4 defaults 0 0"}’ >>/etc/fstab
- mkdir /md0
- mount /dev/md0 /md0
复制代码
然后还是老样子使用,并写了脚本输出每分钟一次的uptime的输出。 从此问题消失了,已经快3个月了,LOAD里面无论是1分钟,还是5分钟还是15分钟,从未超过1。
在这里,就已经可以确定之前遇到的问题是软raid的问题了,但原因还需要继续挖掘。
有一天,我突然想起一个朋友之前和我说过,SX133的机器,用了扩展卡来连接机器内的12个磁盘。 我手里正好有一台SX133,就做了一些调查:
得到结果:
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-1 -> ../../sda
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-1.0 -> ../../sda
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-2 -> ../../sdc
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-2.0 -> ../../sdc
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-3 -> ../../sdb
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-3.0 -> ../../sdb
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-4 -> ../../sde
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-4.0 -> ../../sde
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-5 -> ../../sdd
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-5.0 -> ../../sdd
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-6 -> ../../sdf
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:00:17.0-ata-6.0 -> ../../sdf
- lrwxrwxrwx 1 root root 13 Jun 10 23:54 pci-0000:04:00.0-nvme-1 -> ../../nvme0n1
- lrwxrwxrwx 1 root root 15 Jun 10 23:54 pci-0000:04:00.0-nvme-1-part1 -> ../../nvme0n1p1
- lrwxrwxrwx 1 root root 15 Jun 10 23:54 pci-0000:04:00.0-nvme-1-part2 -> ../../nvme0n1p2
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-1 -> ../../sdg
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-1.0 -> ../../sdg
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-2 -> ../../sdh
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-2.0 -> ../../sdh
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-3 -> ../../sdi
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-3.0 -> ../../sdi
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-4 -> ../../sdj
- lrwxrwxrwx 1 root root 9 Jun 10 23:54 pci-0000:07:00.0-ata-4.0 -> ../../sdj
- lrwxrwxrwx 1 root root 13 Jun 10 23:54 pci-0000:b3:00.0-nvme-1 -> ../../nvme1n1
- lrwxrwxrwx 1 root root 15 Jun 10 23:54 pci-0000:b3:00.0-nvme-1-part1 -> ../../nvme1n1p1
- lrwxrwxrwx 1 root root 15 Jun 10 23:54 pci-0000:b3:00.0-nvme-1-part2 -> ../../nvme1n1p2
复制代码
得到扩展卡情况: 04:00.0扩展卡(或者接口)连接了1个固态 b3:00.0扩展卡(或者接口)连接了1个固态 00:17.0扩展卡(或者接口)连接了6个HDD 07:00.0扩展卡(或者接口)连接了4个HDD 先看HDD的接口速率:
- apt install -y smartmontools ; smartctl -a /dev/sda | grep -i sata ; smartctl -a /dev/sdb | grep -i sata ; smartctl -a /dev/sdc | grep -i sata ; smartctl -a /dev/sdd | grep -i sata ; smartctl -a /dev/sde | grep -i sata ; smartctl -a /dev/sdf | grep -i sata ; smartctl -a /dev/sdg | grep -i sata ; smartctl -a /dev/sdh | grep -i sata ; smartctl -a /dev/sdi | grep -i sata ; smartctl -a /dev/sdj | grep -i sata
复制代码
得到的输出结果都是:
- SATA Version is: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
复制代码
再看NVME的接口速率,得到的输出结果有略微不同:
- # lspci -vv -s 04:00.0 | grep -i LnkSta
- LnkSta: Speed 8GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
- # lspci -vv -s b3:00.0 | grep -i LnkSta
- LnkSta: Speed 8GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
复制代码
也就是说SX133这台机器的两个固态的速率是PCIE 3.0×4的。
扯远了,下面用类似的方法看我这台5950x加5个3.84T NVME的hz德国独服。
得到结果:
- lrwxrwxrwx 1 root root 13 Jul 11 16:23 pci-0000:04:00.0-nvme-1 -> ../../nvme0n1
- lrwxrwxrwx 1 root root 15 Jul 11 16:23 pci-0000:04:00.0-nvme-1-part1 -> ../../nvme0n1p1
- lrwxrwxrwx 1 root root 15 Jul 11 16:23 pci-0000:04:00.0-nvme-1-part2 -> ../../nvme0n1p2
- lrwxrwxrwx 1 root root 15 Jul 11 16:23 pci-0000:04:00.0-nvme-1-part3 -> ../../nvme0n1p3
- lrwxrwxrwx 1 root root 13 Jul 11 16:23 pci-0000:08:00.0-nvme-1 -> ../../nvme1n1
- lrwxrwxrwx 1 root root 13 Jul 11 16:23 pci-0000:09:00.0-nvme-1 -> ../../nvme2n1
- lrwxrwxrwx 1 root root 13 Jul 11 16:23 pci-0000:0a:00.0-nvme-1 -> ../../nvme3n1
- lrwxrwxrwx 1 root root 13 Jul 11 16:23 pci-0000:0b:00.0-nvme-1 -> ../../nvme4n1
复制代码
再看NVME的接口速率,得到的输出结果开始变得不太一样了:
- # lspci -vv -s 04:00.0 | grep -i LnkSta
- LnkSta: Speed 8GT/s (downgraded), Width x4
- LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
- # lspci -vv -s 08:00.0 | grep -i LnkSta
- LnkSta: Speed 16GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
- # lspci -vv -s 09:00.0 | grep -i LnkSta
- LnkSta: Speed 16GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
- # lspci -vv -s 0a:00.0 | grep -i LnkSta
- LnkSta: Speed 16GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
- # lspci -vv -s 0b:00.0 | grep -i LnkSta
- LnkSta: Speed 16GT/s, Width x4
- LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
复制代码
因此可以得知,nvme0n1速率是PCIE 3.0×4,其他4个盘速率都是速率是PCIE 4.0×4。 或许,从这里就可以解释,为何我全部固态做软raid0后会导致经常LOAD爆炸的情况。
最后,感谢各位看到这里。我得到的结论不一定对,如果各位有类似的经验,也欢迎分享,让大家共同学习! 谢谢!
以下内容更新于2024.7.12 0:14
今天发帖后,我听朋友建议给hz客服发了工单,申请更换那块降级降速的盘的线。 等了一段时间,hz客服回复说已经更换了这块盘的cable和adapter。我在rescue内检查确认固态速率问题都已解决。 但自己的系统死活进不去(没网络),我只能自行在rescue内排查。发现了PCIE设备的编号几乎全部都更换了。经朋友提醒,改变PCIE顺序会导致网卡名称变更,而我是debian 12系统,如果系统的网卡信息不是DHCP,就无法自动启动网络。 因此要么rescue挂载原先系统并修改网卡名,要么Remote Console直接操作登录正常启动的系统并修改网卡名。 最后我要一提去年9月26日在MJJ论坛发帖说过的另一台5950x加1个480G SATA SSD和6个3.84T NVME的hz德国独服。这个机器的6个NVME盘全部都是降级到PCIE 3.0×4的速率。 那么是不是应该再找hz客服更换硬盘线呢? 答案是否定的,因为5950x只有24条PCIE 4.0通道。 最后,本次问题圆满解决! 我依然建议,速率不同的机器,甚至型号不同的磁盘,不要做raid。 |