fio使用以下设置在新服务器上运行了一些测试:
这些磁盘的顺序读取速度高达 3,200 MB/s。从理论角度来看,最大带宽应为 19.2 GB/s。
fio在 ZFS RAID上运行时numjobs=1,我得到的结果范围为 ~2,000 - 3,000 MB/s(在没有 ZFS 或任何其他开销的情况下进行测试时,例如,在运行 Crystal Disk Mark 时,磁盘能够达到完整的 3,200 MB/s)在直接安装在其中一个磁盘上的 Windows 中):
fio --name=Test --size=100G …Run Code Online (Sandbox Code Playgroud) 我从 AWS Backup 恢复了 EBS 卷并将其附加到新的 EC2 实例。当我lsblk可以在名字下看到它时/dev/nvme1n1。
更具体地说,输出lsblk是:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nloop0 7:0 0 25M 1 loop /snap/amazon-ssm-agent/4046\nloop1 7:1 0 55.4M 1 loop /snap/core18/2128\nloop2 7:2 0 61.9M 1 loop /snap/core20/1169\nloop3 7:3 0 67.3M 1 loop /snap/lxd/21545\nloop4 7:4 0 32.5M 1 loop /snap/snapd/13640\nloop5 7:5 0 55.5M 1 loop /snap/core18/2246\nloop6 7:6 0 67.2M 1 loop /snap/lxd/21835\nnvme0n1 259:0 0 8G 0 disk \n\xe2\x94\x94\xe2\x94\x80nvme0n1p1 259:1 0 8G 0 part /\nnvme1n1 259:2 0 …Run Code Online (Sandbox Code Playgroud) 我有一个 SuperMicro 服务器,带有一个 NVMe 启动驱动器和一个用于数据的额外 SSD。我试图在 NVMe 启动驱动器上安装 ubuntu,即使安装成功并且在 BIOS 中设置了正确的启动设备,服务器似乎无法启动新安装的操作系统。
我一直试图剖析我通过谷歌搜索找到的信息,但得出的结论是,我无法确定地找到以下问题的答案:
鉴于您知道自己的桌面系统的基础知识,我怎么知道它支持 NVMe 驱动器?
我从我之前的问题中了解到,任何 PCIe v3 设备也适用于 PCIe v2 设备,显然最大速度较低,NVMe 也是如此吗?
我知道这些是一堆问题,也许我应该一次问他们一个,但我认为它们很好地结合在一起,可能会帮助那些难以理解所有新技术嗡嗡声的人。
背景:
我们需要随时访问 30TB 的音频数据,尽管只有其中的一小部分需要播放,即使是多年旧数据也需要立即播放。数据驻留在多个阵列的 SAN 中,并对新数据执行夜间备份。一些数据也会每晚删除。由于两者都是写入事件,因此称其为每晚 20GB。总体趋势是写入的新数据多于删除的旧数据。
每周巡逻读取 (PR) 和一致性检查 (CC) 占阵列上的大部分磁盘活动,除了它们只是旋转直到它们失败。
问题:
我想弄清楚是否应该将基于磁盘的 SAN 替换为使用 NVMe 的 SAN,要考虑什么 RAID 级别,以及降低 VNAND 技术的 PR 或 CC 活动频率是否有意义?
根据我的理解,杀死 VNAND 的是写入,即使考虑到一致性检查,我们在大多数驱动器上写入的数据也将少于每日最小值。
我几乎没有在 NVMe 甚至 SSD 上找到 RAID 5/6 的测试。我主要追求长期可用性。
研究:
与此主题相关的大多数其他问题早于 NVMe 技术,并且已有 6-7 年的历史。这是一个例外,但也没有真正涵盖这种情况。
了解 NVMe 存储和硬件要求
目前我在 ZFS 上运行 Proxmox 5.3-7,几乎没有空闲的 debian 虚拟机。我在 RAID 1 中使用了两个 SSDPE2MX450G7 NVME 驱动器。运行此设置 245 天后,SMART 值很糟糕。
SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
Critical Warning: 0x00
Temperature: 27 Celsius
Available Spare: 98%
Available Spare Threshold: 10%
Percentage Used: 21%
Data Units Read: 29,834,793 [15.2 TB]
Data Units Written: 765,829,644 [392 TB]
Host Read Commands: 341,748,298
Host Write Commands: 8,048,478,631
Controller Busy Time: 1
Power Cycles: 27
Power On Hours: 5,890
Unsafe Shutdowns: 0
Media and Data Integrity Errors: 0
Error …Run Code Online (Sandbox Code Playgroud) 我在 RAID 0 配置中有四个 NVMe 驱动器。
我正在尝试确定阵列正在处理多少 IOPS。
当我运行时iostat,似乎一个驱动器处理的 IO 比其他三个驱动器多。
这是iostat收集数据方式的错误、mdadm 的已知问题,还是我错误地配置了阵列?
使用详情。
# iostat
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 1669.12 22706.35 13975.13 63422465065 39034761844
nvme3n1 753.28 13228.56 12185.39 36949483692 34035736524
nvme1n1 635.93 13781.47 14014.10 38493855272 39143630456
nvme2n1 744.35 14704.94 14283.13 41073264648 39895068820
md0 4291.15 72863.78 56468.04 203520212237 157724286024
Run Code Online (Sandbox Code Playgroud)
软件 RAID 设备详细信息
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Feb 19 22:45:06 2021
Raid Level : raid0
Array …Run Code Online (Sandbox Code Playgroud) 在我拥有的带有 HDD 或 SSD 的服务器上,我有一个定期运行的 cron:
/usr/sbin/smartctl --test=short/long /dev/sd1
Run Code Online (Sandbox Code Playgroud)
(对于每个磁盘)
当它运行时,它只是查看 的输出/usr/sbin/smartctl -c /dev/sd1,循环直到它不再包含:
[0-9]+% of test remaining.
Run Code Online (Sandbox Code Playgroud)
然后检查它是否完成且没有错误:
( 0) The previous self-test routine completed
Run Code Online (Sandbox Code Playgroud)
smartctl但是,从版本 7.0 开始,似乎尚不支持 NVMe 测试:https : //www.smartmontools.org/wiki/NVMe_Support
它确实这么说
smartd 守护进程跟踪运行状况 (-H)、错误计数 (-l error) 和温度 (-W DIFF,INFO,CRIT)
但实际运行测试的是什么?我不确定 和 的输出是否会-H更新-l,除非我们运行短/长测试?
我还阅读了有关 的内容nvme-cli,但我似乎没有找到用它在磁盘上运行运行状况测试的方法。
有任何想法吗?
这里使用 CentOS 7。
所以已经几天了,我仍然无法连接到运行 Ubuntu 16 的 EC2 的新 HVM 实例。作为参考,我正在尝试将我们的服务器从运行 Ubuntu 16 的 m3 实例升级到运行 Ubuntu 16 的 C5 实例。对于几乎我尝试过的所有方法,我都可以停止我的新 C5 实例,分离所有卷,并将新更新的源卷附加为/dev/sda1,但是当我去连接到实例时,我总是最终超时。亚马逊的状态检查也失败了,因为它说实例无法访问。但是,系统日志在启动时没有显示任何问题。
我已经尝试在这篇文章中做所有事情。我也试过这个帖子。我看过其他网站,并尝试过这个和这个。我什至尝试过 ec2 命令行工具方法和从 ec2 控制台(在线)转换 AMI,但是我要么无法使用转换后的 AMI 启动 C5 实例,要么实例将停止并失败(在通过命令行转换)。
我真正能想到的唯一原因可能是 C5 实例上的分区的命名约定。我见过的每一个指南都使用xvda/xvdf/xvdg. 我可能是错的,但我没有这些分区或磁盘,而是有nvme0n1、nvme0n1p1、(新的 HVM 根)nvme1n1、 和nvme1n1p1。当我尝试 HVM / 源 / 目标磁盘方法时,我有nvme0n1/nvme0n1p1,nvme1n1(目标 - 一切都应该结束的地方)和nvme2n1/nvme2n1p1(源 - 一切来自哪里,在 m3 上)。我发现了这篇关于 nvme 的亚马逊帖子,所以我不认为这应该是一个问题,因为我只是在使用时使用了正确的磁盘/分区/mnt/,即。我打电话 …
我的SuperMicro X13SAE具有针对其支持的三个 m.2 NVME 驱动器的硬件 raid。我的问题是它如何处理这些驱动器的固件更新?如果驱动器没有暴露给操作系统,那么我认为fwupdmgr并且fwupdtool不会将它们视为不同的驱动器。那么固件默认是如何更新的呢?除了关闭硬件 RAID 或将驱动器插入其他地方之外,您还有哪些更新固件的选项?
我从 supermicro 购买了x13sae 主板,其广告为
M.2 接口:3 PCIe 4.0 x4 (RAID 0, 1, 5) M.2 外形规格:2280 M.2 键:M-Key
我的 m.2 端口中有两个 NVME 干机。我想将它们设置为 RAID 1,这样我就可以抵御驱动器故障。我在 BIOS 中没有看到该选项。你在哪里配置这个?我正在使用Linux。有没有配置硬件 RAID 的实用程序?
我了解队列深度,即存储控制器可以处理的未完成 I/O 请求的数量(https://www.tomshardware.com/reviews/ssd-gaming-performance,2991-3.html)即,这是对处理 I/O 请求并将命令发送到磁盘 (r/w) 的存储控制器的限制,如果有超过它可以处理的请求(将由客户端重新提交),它(不严格?)会丢弃请求想必)。
并且具有高过期 I/O 请求的原因可能是多个客户端连接请求 I/O 或多个进程甚至来自请求 I/O 的单个主机(我认为,但似乎操作系统使用 I/O 调度程序合并 I/O O 请求 - 在执行定期或按需同步时源自缓冲区,并且仅发送固定数量的过期请求,以便它不会使存储设备过载?)
现在,来到 fio 手册页中 iodepth 的定义:
要针对文件保持运行的 I/O 单元数。请注意,将 iodepth 增加到 1 以上不会影响同步 ioengines(使用 verify_async 时的小度数除外)。
这符合我对队列深度的理解。如果 IO 是同步的(阻塞 IO),我们只能有一个队列。
即使是异步引擎也可能施加操作系统限制,导致无法实现所需的深度。在 Linux 上使用 libaio 并且未设置“direct=1”时可能会发生这种情况,因为缓冲 I/O 在该操作系统上不是异步的。
对这整个声明感到困惑。
密切关注 fio 输出中的 I/O 深度分布,以验证实现的深度是否符合预期。默认值:1。
我为每种 iodepth 和设备类型运行了多个测试,有 22 个并行作业,因为 CPU 数量为 24,并且使用 rwtype:顺序读取和顺序写入。Iodepths 是 1,16,256,1024,32768(我知道 32 或 64 应该是最大限制,我只是想尝试一下)。
对于所有深度和所有磁盘(RAID 6 SSD、NVME 和 NFS),结果几乎相同:除了在 32768 深度的 NVME 磁盘上顺序读取。
IO …Run Code Online (Sandbox Code Playgroud) 我目前正在使用通过 Virtuozzo 虚拟化的 VPS,有时我的博客开始在150 毫秒到 350 毫秒(服务器响应)内交付。
我认为虚拟化是瓶颈,因为我读到 Virtuozzo 确实只有一个内核,这也会导致性能问题。可能我错了,我不是那个专家,这就是我在这里问的原因。;)
一个新想法在我的脑海中出现:我希望我的wordpress 博客快速运行(每天 500 个独立访问者,并且还在该 VPS 上运行 Confluence、JIRA 和 Nextcloud)。那么租用带有 NVMe 的专用服务器呢?性能优势也将是 Dedication 和一个额外的 NVMe SSD。你怎么看?或者我应该只照顾不使用 Virtuaozzo 的主机?你会推荐什么?
我希望我能从你的经验和知识中受益。
谢谢!:)
坦率
PS:在 wordpress 博客网站上,我所知道的一切都是为了页面速度优化。(合并、缩小CSS/JS、优化图片等等...)
nvme ×13
raid ×3
ssd ×3
supermicro ×3
zfs ×2
amazon-ebs ×1
amazon-ec2 ×1
bios ×1
block-device ×1
centos ×1
ext4 ×1
firmware ×1
hard-drive ×1
healthcheck ×1
hvm ×1
io ×1
iostat ×1
linux ×1
mdadm ×1
mount ×1
openvz ×1
pci-express ×1
performance ×1
proxmox ×1
smart ×1
smartctl ×1
storage ×1
virtuozzo ×1