Open-Channel SSD文档翻译:
https://github.com/OpenChannelSSD/documentation/blob/master/docs/gettingstarted.md
要使用Open-Channel SSD,操作系统内核的支持是必要的。通过LightNVM 子系统的引入,Linux内核在4.4及以后的版本添加了Open-Channel SSD支持。OpenChannelSSD 这个项目仍在开发中,推荐使用最新的 release 版本或者RC版。最新的源码可以参见https://github.com/OpenChannelSSD/linux
启动一个受支持的内核后,需要满足下列条件:
- 一个兼容的设备,如QEMU NVMe或者一个Open-Channel SSD,如 CNEX Labs LightNVM SDK.
- 驱动之上的媒体管理器。媒体管理器负责管理设备的分区表。
- 块设备管理器之上暴露Open-Channel SSD。
安装4.4+内核
LightNVM 在 Linux kernel 4.4+有直接支持.如果你还没有安装,可以参考: http://linuxdaddy.com/blog/install-kernel-4-4-on-ubuntu/ .
安装nvme-cli工具
nvme-cli是用来管理 nvme 设备的工具。它可以通过以下命令安装。
1 2 |
sudo apt-get install nvme-cli |
或者从 https://github.com/linux-nvme/nvme-cli 安装。
如果你用的不是Ubuntu发行版,可以参见nvme-cli 的github 项目寻求指导。
使用Open-Channel SSD硬件
如果你有一个来自 CNEX Labs的LightNVM SDK, 或者其他的Open-Channel SSD, 你可以通过以下命令查看设备:
1 2 |
sudo nvme lnvm list |
大概会有一个这样的输出:
1 2 3 4 5 |
nvme lnvm list Number of devices: 1 Device Block manager Version nvme0n1 gennvm (0,1,0) |
如果Block manager为none,设备需要首先通过以下命令初始化
1 2 |
sudo nvme lnvm init -d nvme0n1 |
使用QEMU
使用Keith Busch的 QEMU 分支,可以通过文件暴露一个兼容LightNVM的设备。参见以下向导来安装他的版本。
配置QEMU
创建一个空文件来放置你的NVMe设备。
1 2 |
dd if=/dev/zero of=blknvme bs=1M count=1024 |
这个命令创建了1GB名为 "blknvme"的文件。你可以通过以下命令启动你最喜欢的Linux镜像。
1 2 3 4 5 6 |
qemu-system-x86_64 -m 4G -smp 1 --enable-kvm -hda $LINUXVMFILE -append "root=/dev/sda1" -kernel "/home/foobar/git/linux/arch/x86_64/boot/bzImage" -drive file=blknvme,if=none,id=mynvme -device nvme,drive=mynvme,serial=deadbeef,namespaces=1,lver=1,nlbaf=5,lba_index=3,mdts=10 |
这里替换$LINUXVMFILE 为你预先安装的 Linux 虚拟机。
QEMU支持以下的LightNVM参数:
1 2 3 |
- lver=<int> : version of the LightNVM standard to use, Default:1 - lbbtable=<file> : Load bad block table from file destination (Provide path to file. If no file is provided a bad block table will be generation. Look at lbbfrequency. Default: Null (no file). |
QEMU中的LightNVM 参数可以在$QUEMU_DIR/hw/block/nvme.c
的 Advanced optional options 注释中找到。
实例化媒体管理器和目标设备
当安装完成启动内核后,可以通过以下枚举设备
1 2 |
sudo nvme lnvm list |
并且通过以下初始化:
1 2 3 |
sudo nvme lnvm init -d nvme0n1 sudo nvme lnvm create -d nvme0n1 --lun-begin=0 --lun-end=3 -n mydevice -t pblk |
假设nvme0n1在 "nvme lnvm list"中列出了, 他会暴露块设备 /dev/mydevice 并作为后端。注意pblk只在 Linux kernel 的Github仓库可以获取到。
源码安装
编译最新内核
最新的内LightNVM核可以在以下URL找到
git clone https://github.com/OpenChannelSSD/linux.git
在for-next分支。
请确保.config 包括以下:
1 2 3 4 5 6 7 8 9 10 11 12 |
CONFIG_NVM=y # Expose the /sys/module/lnvm/parameters/configure_debug interface CONFIG_NVM_DEBUG=y # Target support (required to expose the open-channel SSD as a block device) CONFIG_NVM_PBLK=y # Do not perform recovery upon boot (Disables recovery of the mapping table upon boot. Disable when using across boots) CONFIG_NVM_PBLK_NO_RECOV=y # generic media manager support (required) CONFIG_NVM_GENNVM=y # For NVMe support CONFIG_BLK_DEV_NVME=y |
按照你的发行版的说明编译安装这个内核。
QEMU安装
QEMU对Open-Channel SSD的支持基于 Keith Busch的qemu-nvme分支,它实现了一个兼容NVMe的设备。
从以下克隆qemu源码
1 2 |
git clone https://github.com/OpenChannelSSD/qemu-nvme.git |
并如下配置
1 2 |
./configure --enable-linux-aio --target-list=x86_64-softmmu --enable-kvm |
并通过make和install编译安装
常见问题
打开 LightNVM时失败 mgmt /dev/lightnvm/control. Error: -1
你可能需要使用root用户运行nvme或者你使用了低于4.4的内核。
NVMe启动时Kernel panic
- 清零 nvme 的文件 .dd if=/dev/zero of=backend_file bs=1M count=X
- 记得同时升级qemu-nvme分支。linux和qemu-nvme的仓库是互相跟进的
[Dr.Lib@ASTL]开始使用Open-Channel SSD by Liqueur Librazy is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.