nvme

Linux中nvme驱动详解

匿名 (未验证) 提交于 2019-12-02 21:59:42
NVMe离不开PCIe,NVMe SSD是PCIe的endpoint。PCIe是x86平台上一种流行的bus总线,由于其Plug and Play的特性,目前很多外设都通过PCI Bus与Host通信,甚至不少CPU的集成外设都通过PCI Bus连接,如APIC等。   NVMe SSD在PCIe接口上使用新的标准协议NVMe,由大厂Intel推出并交由nvmexpress组织推广,现在被全球大部分存储企业采纳 1. NVMe Command NVMe Host(Server)和NVMe Controller(SSD)通过NVMe Command进行信息交互。NVMe Spec中定义了NVMe Command的格式,占用64字节。 NVMe Command分为Admin Command和IO Command两大类,前者主要是用于配置,后者用于数据传输。   NVMe Command是Host与SSD Controller交流的基本单元,应用的I/O请求也要转化成NVMe Command。 2. PCI总线 在系统启动时,BIOS会枚举整个PCI的总线,之后将扫描到的设备通过ACPI tables传给操作系统。当操作系统加载时,PCI Bus驱动则会根据此信息读取各个PCI设备的Header Config空间,从class code寄存器获得一个特征值。 class code是PCI

【转载】什么是NVMe?

a 夏天 提交于 2019-12-02 05:10:11
什么是NVMe? 【转载】什么是NVMe : http://storage.it168.com/a2018/0921/5045/000005045252.shtml NVMe是Non-Volatile Memory express(非易失性内存主机控制器接口规范)的简称,它是一种协议,能够使固态硬盘(SSD)运行得更快,如今在企业用户中已越来越流行。   理解什么是NVMe的最简单的方法就是打个比方——假设你刚买了一辆跑车,速度能达到400公里每小时,是你以前那辆老汽车的3到4倍。唯一的问题是,普通的道路是无法允许以这样的速度行驶的,而且一般城市道路限速几十公里每小时,往往还得考虑车流的问题。如果你想要让跑车更快,就需要换一条路开。   这个场景有点像制造商推出基于闪存技术的SSD之后,存储行业的情况。闪存技术比传统机械硬盘快很多倍(快多少倍取决于你使用的设备),但是早期的设备都使用与硬盘驱动器相同的SATA或SAS连接到系统和网络。虽然这些接口对于硬盘驱动器(HDD)所能提供的性能来说已经足够了,但是它们为SSD带来了瓶颈。这对于企业大数据分析和其他数据密集型工作负载来说,尤其是个问题。   这些性能问题促使人们寻找更好的方式将SSD连接到服务器,这正NVMe的用武之地。 1、什么是NVMe?   NVMe协议标准由NVM Express公司监管

关于存储设备尺寸、接口和协议常见的组合方式

旧街凉风 提交于 2019-12-02 04:56:27
关于存储的概念 尺寸外形 也就是设备的形状和大小,通常存储设备的尺寸外形包括如下: 2.5寸或者3.5寸驱动器 (在SFF标准中定义) M.2 和 PCI Express(PCIe) (在PCI-SIG标准中定义) 接口 也 就是设备如何与计算机通信。常见的存储设备接口包括: SATA接口 ,通常用于2.5寸和3.5寸硬盘,有时候一些M.2设备也会使用PCI Express(PCIe)接口。 用于 M.2和PCIe设备SAS(串行SCSI)和FC(Fibre Channel)接口 ,仅用于服务器领域和数据中心 PCIe接口要比SATA接口快的多,SATA3最大带宽是6Gb/s,而基于4X PCIe的M.2接口最大可以达到32Gb/s。 协议 定义了如何在计算机与设备之间传输数据。常见的协议包括: 用于 SATA接口的AHCI或者ATA协议 ,用于 PCIe接口的NVMe协议 NVMe是运行在某种接口上的通信协议,用于规范计算机与存储设备的数据传输。 集中组合形式 SATA接口的SSD 一个2.5寸SSD硬盘,基于SATA接口,通信协议是AHCI或者ATA。 M.2的SSD 一个M.2的SSD, 基于PCIe接口,通信协议是NVMe。 PCIe的SSD 一个PCIe的SSD,基于PCIe接口,通信协议是NVMe。 来源: https://www.cnblogs.com/cainiao

SATA、PCIe、AHCI、NVMe

点点圈 提交于 2019-12-01 16:41:51
SATA、PCIe是两种不同的物理接口,一般大家看到最多的是sata连接光驱和机械硬盘,PCIe连接显卡。 AHCI、NVMe是接口标准,是驱动程序层面的。AHCI 适用于机械硬盘和SSD。NVMe 只适用于 SSD(SSD和主板也要支持 NVMe 才行)。 下面按传输效率做个排序,希望对大家有帮助。 PCIe NVMe。 这个是最高大上的,速度最快。 PCIe AHCI。 效能比 1 稍低,是由于 AHCI 协议的滞后性决定的。 SATA AHCI。 效能最低,但兼容性最好,老式的机子也能用。 来源: https://www.cnblogs.com/zkb9604/p/11693753.html

NVMe over Fabrics 概况

拜拜、爱过 提交于 2019-11-29 09:45:19
NVMe over Fabrics 技术特征 跨网络传输NVMe命令需要特殊的考虑,而不仅仅是针对本地存储内存。例如,为了远距离传输NVMe协议,理想的底层网络或fabric技术将具有以下特性: 可靠的、基于可信的流程控制和交付机制。 这种流控制允许网络或Fabric进行自身限流,提供了可靠的连接,可以保证在硬件级别进行传输,而不需要由于拥塞而丢弃帧或包。对FC,InfiniBand和PCI Express传输来说,基于可信的流量控制是天然具备的。 一个最优化的客户端 。客户机软件应该能够直接向fabric发送和接收本机NVMe命令,而不需要使用SCSI之类的翻译层。 一个低延迟的fabric。 fabric本身应该优化为低延迟。包括交换在内,fabric的端到端延迟不应超过10µs。 减少延迟和CPU利用率适配器或接口卡。 适配器应该能够为应用程序注册直接内存区域,以便将传输的数据直接传递到硬件fabric适配器。 Fabric扩展。 这种fabric应该能够扩展到成千上万个或更多的设备。 多主机支持。 fabric应该能够支持多个主机同时主动发送和接收命令。这也适用于多个存储子系统。 多端口支持。 主机服务器和存储系统应该能够同时支持多个端口。 多路径支持。 fabric应该能够同时支持任何NVMe主机initiator和任何NVMe存储target之间的多个路径。 独立I

在linux系统中配置NVMe over TCP

别来无恙 提交于 2019-11-28 15:37:58
1. 准备环境 1.1 准备linux系统 要求的linux系统可以是运行在物理机上,也可以是虚拟机上; 建议有个linux系统,一个做host,一个做target,如果资源紧张也可以把host和target运行在一个linux系统里; 要求linux系统的内核版本为linux-4.1之后的版本,早期版本不支持NVMe over TCP;作者实验时用的是linux-5.0.7版本。 为host主机端准备NQN相关名称(连接target时使用): 注意设置主机的 NQN,可以手动指定,也可以命令产生( nvme gen-hostnqn命令产生也可以。要求编译 nvme命令时定义 LIBUUID才能使用此命令)。 示例如下截图: 1.2 准备硬盘 如果使用的是物理机,则需要准备一个或多个硬盘资源,如果使用的是虚拟机,则可以多添加几块盘; 对硬盘类型无要求,只要能够被linux系统所识别的,任何类型接口的硬盘都可以。 1.3 系统运行检查 登陆linux系统后,做如下检查: 在target环境上,使用lsmod |grep nvme命令,查看nvmet内核模块和nvmet_tcp内核模块确保都已经被正常加载; 在target环境上,使用ls /sys/kernel/config/命令确保此目录中已经有了nvmet目录; 在host环境上,使用lsmod |grep nvme命令

[转]NVME

本秂侑毒 提交于 2019-11-28 15:28:35
转自 蛋蛋读NVMe之一 https://mp.weixin.qq.com/s/vbRl0IG73aL-gY3oMkBmFQ NVMe有三宝:Submission Queue (SQ),Completion Queue(CQ)和Doorbell Register (DB)。SQ和CQ位于Host的内存中,DB则位于SSD的控制器内部。上图: 来源: https://www.cnblogs.com/yi-mu-xi/p/11412581.html

SPDK官方文档中文版

徘徊边缘 提交于 2019-11-28 07:27:41
SPDK (存储性能开发套件)官方文档中文版 (2019年8月版,译:王海亮) 目录 第一章 简介... 1 1.1.什么是SPDK?... 1 1.2.入门... 1 1.3. Vagrant开发环境... 3 1.4.更新日志(略)... 6 第二章 概念... 6 2.1. 用户空间驱动程序**. 6 2.2. 来自用户空间的DMA**. 7 2.3. 消息传递和并发**. 9 2.4. NAND Flash SSD内部... 13 2.5. 将I / O提交到NVMe设备**. 15 2.5.1 NVMe规范... 15 2.5.2 SPDK NVMe驱动程序I / O路径... 15 2.6. 使用Vhost-user进行虚拟化I / O. 16 2.6.1 介绍... 16 2.6.2 QEMU.. 17 2.6.3 设备初始化... 18 2.6.4 I / O路径... 19 2.6.5 SPDK优化... 20 2.7. SPDK目录结构概述... 20 2.8. SPDK移植指南... 22 第三章 用户指南... 22 3.1. 系统配置用户指南... 22 3.1.1 IOMMU配置... 22 3.2. SPDK应用程序概述... 23 3.2.1 配置SPDK应用程序... 23 3.3. iSCSI Target 26 3.3.1. iSCSI

Amazon EC2 实例类型

江枫思渺然 提交于 2019-11-27 21:49:43
https://aws.amazon.com/cn/ec2/instance-types/ 通用 通用实例提供计算、内存和联网资源三方面的平衡,可用于各种不同的工作负载。这些实例非常适合于以相同比例使用这些资源的应用程序,如 Web 服务器和代码存储库。 A1 T3 T3a T2 M5 M5a M4 Amazon EC2 A1 实例 可以显著节省成本,非常适合广泛的 Arm 生态系统所支持的横向扩展和基于 Arm 的工作负载。A1 实例是最先采用 AWS Graviton 处理器的 EC2 实例,这些处理器配备 64 位 Arm Neoverse 内核和 AWS 设计的自定义硅片。 功能: 定制的 AWS Graviton 处理器,带有 64 位 Arm Neoverse 内核 支持高达10 Gbps 网络带宽的增强型网络 默认情况下已经过 EBS 优化 由 AWS Nitro 系统 (专用硬件和轻量级管理程序的组合)提供支持 型号 vCPU 内存 (GiB) 存储 网络性能 (Gbps) a1.medium 1 2 仅限 EBS 最高 10 a1.large 2 4 仅限 EBS 最高 10 a1.xlarge 4 8 仅限 EBS 最高 10 a1.2xlarge 8 16 仅限 EBS 最高 10 a1.4xlarge 16 32 仅限 EBS 最高 10

LSI MageRAID9460-8i SAS3508磁盘阵列卡

谁说我不能喝 提交于 2019-11-27 04:58:08
型号:LSI MegaRAID SAS9460-8i 产品类型:NVME/SAS/SATA阵列卡 连接器接口:2个Mini-SAS HDx4 SFF8643 I/O处理器/SAS控制器:SAS 3508 RAID-on-Chip(ROC) RAID功能阵列级别:0,1,5,6,50,60 设备支持:多达240个SAS和/或SATA设备、NVME最大支持24颗 一般接入:线缆X4 NVME 2个设备;X2 NVME 4个设备 主机总线类型:X8通道PCI Express3.1标准 PCI电源:13.5W 总线主控DMA 连接数据传输速率:每端口高达12Gb/s 高速缓冲存储器:2GB缓存 应用场景:视频点播,视频监控,视频制作+编辑,医学影像,高性能计算,数字内容归档和虚拟磁带库,存储设备,文件,网络,数据库和电子邮件服务器 主要RAID数据保护功能:可选择逻辑驱动器作为引导驱动器,快速初始化阵列设置,交错启动的SATA驱动器,支持热插拔,支持全局热备份,在线容量扩展(OCE),在线RAID级别迁移(RLM),单控制器多路径(故障转移),自动重建的热备用驱动器,软坏快管理支持错误恢复,磁盘上的DDF标准配置,自动恢复系统电源阵列中丢失后重建或改建(RLM) 操作系统支持:Microsoft Windows,ContactOracle support foe Oracle