问题标签 [nvme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何通过 USB 桥接器向 NVMe 驱动器发送命令?
我一直在使用自加密驱动器,我希望能够发送命令以在用户空间中识别和解锁。我已经能够使用sg
和nvme_admin_cmd
结构和ioctls
以及使用 USB->SATA 适配器通过直接主板连接向 NVMe 和 SATA 驱动器发送命令。
但是,我似乎无法通过 USB 桥接器向 NVMe 驱动器发送命令。就像一个健全性检查一样,我曾经sedutil
尝试查询驱动器,它也无法向它发送命令。
我应该使用某个驱动程序来处理 USB/NVMe 用例吗?任何帮助表示赞赏。
c# - 如何使用c#获取nvme序列号
直到最近我一直在使用 wmi 来获取这些信息,但结果却很慢。在互联网上寻找一些替代方案,我找到了一个:DeviceIoControl。
使用以下代码,我可以获得除 Nvme 类型之外的任何硬盘驱动器的序列号。我在这里查找了信息,但我不太擅长 c++,所以我不知道是否应该更改当前代码中的某些类型的数据。
我已经在 windows cmd 中阅读了一个更简单的替代方案,比如 wmic,但这不是我想要的。我真的很想实现一个更优雅、更精致的替代方案。
请帮忙
代码:
mysql - 如何将 MySQL 数据库与 NVMe SPDK 一起使用?
我查看了文档,并没有在示例中看到任何实际的实现案例。
有人知道如何确保通过英特尔 NVMe SPDK 处理对我的数据库服务器的传入请求吗?
linux - 如何删除 nvme 中的现有命名空间并将其分解为两个较小的命名空间?
我有一个 NVME SSD。它上面有一个现有的命名空间,如下所示。
但这需要全部容量。我想把它分成两个更小的命名空间。我这样做了,
如你所见,他们都失败了。如何处理?
amazon-web-services - Instance Store 和 EBS - 默认使用哪个?
我了解实例存储和 EBS 之间的区别。
但是,如果我使用了一个m5d.4xlarge
由 nvme 实例存储支持的实例,并且我还附加了一些 EBS,那么默认情况下使用哪种类型的存储?是否有确定首先使用哪种存储类型的流程?
low-level - 我可以在 NVMe 存储设备上执行计算吗?
我首先要说这不是我在生产系统中做的事情,只是一个个人项目,只是编写代码来学习和尝试找到具有挑战性的任务。
因此,NVMe 驱动器用于计算机中存储信息,它们具有控制器并执行一组标准操作,我一直在阅读规范 ( https://nvmexpress.org/developers/ ) 试图找出是否有任何方法以一种实际上会让它们计算信息的方式使用它们。我一直在阅读规范,他们可以执行很多不同的命令。但是我还没有找到任何人已经尝试过的东西,但也许我只是使用了错误的搜索词。我想检查是否有人知道这是否已经完成,使用 NVMe 存储作为计算设备?
有些东西我以为我可能能在哪里找到?
- 也许一个写入选项相当于一个逻辑 OR,它会在 0 上写入 1,但不会更改其他值?
- 也许是一种在值被覆盖时比较值的方法,所以如果有一个状态代码正在跟踪磨损均衡,或者如果数据在写入时实际发生了变化,那么就有可能知道写入的值是否已经设置为我刚刚写的值?
- 也许检查数据是否为空白或全零命令?
- 也许是一个返回数据而不是数据的哈希或奇偶校验位的命令?
- 我希望找到一些组合或 Move 或 BitShift 或逻辑运算符,它们被链接在一起以在不返回数据的情况下对数据进行计算。
- 或者可能是一个操作的状态码,它会给我关于数据的信息。
caching - NVMeOF/RDMA 同步文件修改
我只是设置了 NVMeOF/RDMA 环境来玩。我有一个目标节点,一些客户端节点可以访问 NVMe SSD。但是,当我test
在一个客户端节点上删除文件时,其余节点看不到此操作,仍然可以test
正常读取内容。我知道 RDMA 绕过内核,所以我猜这是因为缓存?然后我尝试使用以下命令清理缓存:
sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
sudo sync; echo 1 | sudo tee /proc/sys/vm/drop_caches
sudo sync; echo 2 | sudo tee /proc/sys/vm/drop_caches
不幸的是,其他节点仍然保留此文件。
所以实际上我有两个问题:
- 真的是因为缓存吗?它是如何工作的?
- 清理缓存以便其他节点无需重新挂载即可看到删除的正确方法是什么?
任何帮助将不胜感激!
linux-kernel - nvme 的“dd”会使用 mmio 还是 dma?
最近我正在尝试调试一个 nvme 超时问题:
经过一番挖掘,我发现根本原因是 pcie-controller 的 range dts 属性,该属性用于 pio/outbound 映射:
无论根本原因如何,这里的超时似乎都受到 mmio 的影响,因为0x02000000
代表非预取 mmio。这是真的吗?是否有可能dd
触发 dma 和 nvme 控制器作为主控?
linux-kernel - 当 dd 时,nvme 超时如何受 pcie 控制器“范围”dts 属性的影响
最近我正在尝试调试一个 nvme 超时问题:
经过一番挖掘,我发现根本原因是 pcie-controller 的 range dts 属性,该属性用于 pio/outbound 映射:
如上图,唯一的区别就是总线地址,一个是0x8000000
,一个是0x04000000
,前者在dd的时候会导致nvme超时,而后者不会。PCIE IP是cadence的,控制器的平台驱动是https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/cadence/pcie -cadence-plat.c
所以,我的问题是
- 为什么总线地址
0x08000000
会导致 nvme 超时? - 当 dd 时,nvme 超时如何受到 pcie 控制器“范围”dts 属性的影响
python - 使用 boto3 附加的 EBS 卷没有 NVMe 块设备
我需要创建多个 EBS 卷并使用 python+boto3 将一些数据放在那里。
总的来说,我的流程是:
- 创建卷。
- 等待他们的
available
状态。 - 附上一卷。
- 等待它的
attached
状态。 - 列出 NVMe 设备,检测卷的设备。<-- 问题发生在这里。
- 挂载 NVMe 设备。
- 复制数据。
- 卸载并分离卷。
- ...下一卷。
大多数时候它工作正常。卷正确附加并链接到 NVMe 设备(如/dev/nvme2p1
)。但是在某些时候linux没有为卷设置块设备:卷状态是attached
但nvme list
不显示它。
如果使用 boto3 或在 AWS 控制台中手动重新附加此类卷,则它将具有块设备。
例如,它发生在us-east-2
region 但不在ap-south-1
.
我尝试在单线程和多线程模式下附加/分离。在多线程模式下,我为每个线程使用了单独的 boto3 客户端和一个锁来顺序附加。还尝试了不同的boto3版本并在附加后等待一段时间。没有任何帮助。
我的环境:
- EC2 实例:
t3a.small
,AMI:ubuntu 20.04.2
。 python2
(是的,我们仍在使用它)。botocore==1.12.253
boto3==1.9.199
有没有人遇到过同样的问题?