使用SPDK压缩特性
spdk压缩特性通过设置dpdk的zlib驱动,再在初始化创建压缩盘进行使用
- 分配大页内存。
请根据实际需求进行分配,此处以分配40000个2MB的大页为例。
echo 0 >/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages echo 20000 >/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages echo 20000 >/sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
- 设置环境变量,能够加载KAE的zlib动态库从而进行KAE卸载。
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/kaezip/lib:/usr/local/lib64:$LD_LIBRARY_PATH
- 纳管用来存储数据的nvme盘。
export PCI_ALLOWED="0000:84:00.0" ./scripts/setup.sh
"0000:84:00.0" 是该nvme盘的pci号,请根据实际环境进行修改,可以通过下述命令查看。
./scripts/setup.sh status
示例如下,BDF列即为nvme的pci号。
[root@ceph1 spdk_ksal]# ./scripts/setup.sh status Type BDF Vendor Device NUMA Driver Device Block devices NVMe 0000:84:00.0 19e5 3714 1 vfio-pci - - NVMe 0000:86:00.0 19e5 3714 1 nvme nvme1 nvme1n1
- 启动spdk进程。
./build/bin/nvmf_tgt --wait-for-rpc
- 设置dpdk的zlib压缩驱动。
./scripts/rpc.py bdev_compress_set_pmd -p 3 ./scripts/rpc.py compressdev_zlib_module_set_wbits --wbits 31
- bdev_compress_set_pmd -p是指定压缩驱动,“3”意味着指定为zlib驱动。
- compressdev_zlib_module_set_wbits --wbits 是设置zlib压缩的位宽。
- 位宽设置为-15~-8会使用deflate-raw压缩格式(在鲲鹏920处理器上无法进行KAE卸载,使用cpu进行计算,在鲲鹏920高性能处理器上可以进行kae卸载)。
- 位宽设置为8~15会使用zlib压缩格式。
- 位宽设置为25~31会使用gzip压缩格式。
- 初始化程序框架。
./scripts/rpc.py framework_start_init
- 使用被纳管的nvme盘来创建bdev设备。
./scripts/rpc.py bdev_nvme_attach_controller -b NVMe1 -t PCIe -a 0000:84:00.0
- 创建压缩盘。
./scripts/rpc.py bdev_compress_create -b NVMe1n1 -p /dev/pmem0n1 -l 512
- -b 参数是指定存储压缩数据的bdev设备,NVMe1n1 是步骤7中命令执行后创建的bdev设备名称。
- -p 参数是指定持久化内存盘存储元数据,/dev/pmem0n1 是持久化内存盘的名称。
- 对创建的压缩盘进行测试。
- 挂载nvme。
./scripts/rpc.py nvmf_create_transport -t TCP -u 16384 -m 8 -c 8192 ./scripts/rpc.py nvmf_create_subsystem nqn.2017-06.io.spdk:cnode2 -a -s SPDK00000000000001 -d SPDK_Controller1 ./scripts/rpc.py nvmf_subsystem_add_ns nqn.2017-06.io.spdk:cnode2 COMP_NVMe1n1 ./scripts/rpc.py nvmf_subsystem_add_listener nqn.2017-06.io.spdk:cnode2 -t TCP -a 96.10.57.104 -s 4521 nvme discover -t tcp -a 96.10.57.104 -s 4521 nvme connect -t tcp -n "nqn.2017-06.io.spdk:cnode2" -a 96.10.57.104 -s 4521 -g -G
执行nvme 命令会依赖nvme-cli,使用yum安装该依赖:
yum install nvme-cli
nvme discover 命令和 nvme connect 命令会把spdk的压缩bdev设备挂载成本地的nvme盘,-t tcp 参数表示使用tcp协议,-a 96.10.57.104 表示spdk所在主机的ip地址,这里使用本机ip 96.10.57.104,-s 4521 则是表示使用端口号4521,可以使用其它端口号,需要保证该端口号没有被占用。
nvme connect 命令中-n "nqn.2017-06.io.spdk:cnode2" 则是前面创建的NVMe-oF子系统名称。
- 进行fio测试。
fio -filename=/dev/nvme0n1 -direct=1 -iodepth=64 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -group_reporting -name=mytest --verify_pattern=0x12345678 -verify=pattern -do_verify=1 fio -filename=/dev/nvme0n1 -direct=1 -iodepth=64 -thread -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -group_reporting -name=mytest --verify_pattern=0x12345678 -verify=pattern -do_verify=1
- 挂载nvme。
父主题: 特性使用