我对基于 PCIe 的存储的最新发展感到有些困惑,特别是因为它与 NVMe 规范及其硬件兼容性有关。
虽然我在磁盘外形尺寸的SSD和一些更高端的 PCIe 设备(如Fusion-io )方面进行了广泛的工作,但我处于不了解 NVMe 基础知识的位置,并且正在寻求有关服务器类型的说明支持硬件。
...高性能 CPU PCI-E Gen3 直接连接到 NVMe 设备。
我正在处理基于 Linux 的软件定义存储解决方案,并希望使用备用 Fusion-io 设备,该设备使用专有驱动程序(向操作系统显示/dev/fioX设备名称)。
当我向供应商寻求帮助时,得到的答复是:
“fioX”设备命名已被新的 NVMe 设备接口淘汰。这意味着我们购买过时的适配器来增加其他人没有要求的支持。
这似乎有点苛刻。我不认为 Fusion-io 适配器已经过时。
我在网上找到的稀缺信息似乎暗示 NVMe 仅支持绝对最新一代的服务器硬件(英特尔 E5-2600v3 CPU 和 PCI 3.0 芯片组?)。但我无法验证这一点。
这是真的?
采用率是多少?这是工程师在他们的设计决策中考虑的事情,还是我们在谈论尚未完全形成的“标准”?
如果 NVMe仅适用于市场上的最新系统,那么(向供应商)建议我的旧系统的安装基础不能与 NVMe 兼容是否合理,因此值得添加我请求的支持?
我正在尝试了解 nvme 的配置。
但我不明白为什么有两个设备:nvme 块和 nvme 字符设备:
crw------- 1 root root 243, 0 Dec 12 16:09 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Jan 14 01:30 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)
每个的目的是什么或何时使用它们?
我在 c5d.2xlarge 硬件上使用来自 AWS 的 Ubuntu 16.04 EC2。它配备了一个 200 GB 的 SSD,称为/dev/nvme1n1.
我可以使用以下方法安装此驱动器:
$ sudo mkfs.ext4 -E nodiscard /dev/nvme1n1
$ sudo mount -o discard /dev/nvme1n1 /home/ubuntu
Run Code Online (Sandbox Code Playgroud)
为了尝试让它自动挂载,我还添加了/etc/fstab:
/dev/nvme1n1 /home/ubuntu/spda ext4 defaults,users,nofail,discard 0 2
Run Code Online (Sandbox Code Playgroud)
我的问题:
当我停止/启动实例时,它似乎不会自动挂载。我不知道如何修复/调试。
当我手动挂载它时,创建的文件夹属于根目录,我无法以用户身份访问它。
我的目标是能够启动实例并且已经安装了驱动器并且用户可以访问。
我正在尝试对全 NVMe ZFS 磁盘阵列进行基准测试。我熟悉极快的基准测试结果,由于高效的 ZFS 缓存,磁盘活动非常少。我遇到了相反的情况:大量的 ZFS 磁盘活动,但 FIO 仅显示很少的带宽。我该如何解释这种行为?
Zpool iostat -v 1仅显示一秒,但每秒输出一致:16 至 20 GiB/s 写入带宽
capacity operations bandwidth
pool alloc free read write read write
------------ ----- ----- ----- ----- ----- -----
my_pool-10 1.92T 19.0T 2 155K 95.7K 16.9G
mirror-0 329G 3.16T 0 26.2K 3.99K 2.84G
nvme2n1 - - 0 13.2K 0 1.42G
nvme3n1 - - 0 13.1K 3.99K 1.42G
mirror-1 328G 3.16T 0 26.0K 0 2.83G
nvme4n1 - - 0 13.0K 0 1.41G
nvme5n1 - …Run Code Online (Sandbox Code Playgroud) 我们即将部署共享存储研究以实现超快速存储以实现 Microsoft SQL Server 故障转移集群 (FCI)。到目前为止,项目开始时,我们将从 8k 块的 500K IOPS 开始,大约 70r/30w 模式。此外,由于 SQL Server 不断增长的期望,我们希望能够在一年左右的时间内将 pefromance 提高到 2M IOPS(对于相同的模式)。
出于该项目的目的,我们将部署 Microsoft Storage Spaces Direct (S2D) 的 4 节点集群。至于硬件,我们已经拥有 2 台戴尔机架式服务器 R730xd,配备 2 台 E5-2697 和 512GB 内存,我们准备再购买 2 台。
至于存储,微软建议使用 NVMe 或 NVMe + SSD 以获得最大性能(来源)。因此,经过一番研究,三星 SSD 很适合搭配。https://www.starwindsoftware.com/blog/benchmarking-samsung-nvme-ssd-960-evo-m-2 http://www.storagereview.com/samsung_960_pro_m2_nvme_ssd_review
我们考虑的设置如下:每个 S2D 主机 1 个三星 960 EVO NVMe + 4 个三星 PM863 SSD。
使用三星 960 EVO NVMe 和三星 PM863 的 S2D 实现能否为 SQL FCI 提供 500k?
编辑: …
我遇到了服务器中 NVMe SSD 条带性能异常低下的情况。硬件如下:
lspci -nvv显示了设备的 8GT/s x4 链路,显示它在 PCIe 3.0 上运行,就像驱动器想要的那样: LnkSta: Speed 8GT/s, Width x4。该驱动器的基准测试表明它能够以 1.4GB/s 左右的写入速度运行。
当我尝试对驱动器进行顺序写入时,我获得了大约三分之一的性能。下面显示了写入期间的 619MB/s,然后又暂停了 50 秒,大概是在数据完全刷新到磁盘时。
$ sudo dd if=/dev/zero of=/dev/nvme1n1 bs=16M count=1k status=progress
16726884352 bytes (17 GB, 16 GiB) copied, 27 s, 619 MB/s
1024+0 records in
1024+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 71.8953 s, 239 MB/s
Run Code Online (Sandbox Code Playgroud)
假设这只是我的综合基准与其他人的综合基准相比的一些怪癖,我将所有 4 个设备放入 MD RAID-0 中并再次尝试:
$ …Run Code Online (Sandbox Code Playgroud) 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) 我有很多 NVMe 磁盘的服务器。我正在fio使用以下方法测试磁盘性能:
fio --name=asdf --rw=randwrite --direct=1 --ioengine=libaio --bs=16k --numjobs=8 --size=10G --runtime=60 --group_reporting
对于单个磁盘,LUKS 对性能影响不大。
我尝试mdadm在raid10+ 一个 XFS 文件系统中使用6 个磁盘。它表现良好。
但是当我在 mdadm 设备上创建一个 LUKS 容器时,我得到了糟糕的性能:
回顾一下:
mdadmRAID10 + XFS = 正常性能的 116%,即与单盘 + XFS 相比,写入吞吐量和 IOPS提高16%mdadmRAID10 + LUKS + XFS = 正常性能的 33%,即与单盘 + XFS 相比,写入吞吐量和 IOPS差67%在所有其他场景中,我没有观察到 LUKS 和非 LUKS 之间的这种性能差异。这包括 LVM 跨越、条带化和镜像。换句话说,mdadm具有 6 个磁盘的 RAID10(我理解这是跨越 3 个 2 磁盘镜像)、一个 …
搭建实验实验室集群,通过10G光纤连接接收数据的写入速度为本地写入速度的10%。
测试两台相同机器之间的传输速度;iperf3显示良好的内存到内存速度为9.43Gbits/s。磁盘(读取)到内存传输的速度(9.35Gbit/s):
test@rbox1:~$ iperf3 -s -B 10.0.0.21
test@rbox3:~$ iperf3 -c 10.0.0.21 -F /mnt/k8s/test.3g
Connecting to host 10.0.0.21, port 5201
Sent 9.00 GByte / 9.00 GByte (100%) of /mnt/k8s/test.3g
[ 5] 0.00-8.26 sec 9.00 GBytes 9.35 Gbits/sec
Run Code Online (Sandbox Code Playgroud)
但是发送超过 10G 的数据并写入另一台机器上的磁盘要慢一个数量级:
test@rbox1:~$ iperf3 -s 10.0.0.21 -F /tmp/foo -B 10.0.0.21
test@rbox3:~$ iperf3 -c 10.0.0.21
Connecting to host 10.0.0.21, port 5201
[ 5] local 10.0.0.23 port …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) nvme ×10
ssd ×3
block-device ×2
fio ×2
raid ×2
storage ×2
zfs ×2
10gbethernet ×1
amazon-ebs ×1
amazon-ec2 ×1
benchmark ×1
device ×1
fiber ×1
fusionio ×1
hardware ×1
linux ×1
luks ×1
mdadm ×1
mount ×1
optimization ×1
performance ×1
ubuntu-16.04 ×1