EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

使用SPDK压缩特性

spdk压缩特性通过设置dpdk的zlib驱动,再在初始化创建压缩盘进行使用

  1. 分配大页内存。

    请根据实际需求进行分配,此处以分配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
  2. 设置环境变量,能够加载KAE的zlib动态库从而进行KAE卸载。
    export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/kaezip/lib:/usr/local/lib64:$LD_LIBRARY_PATH
  3. 纳管用来存储数据的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
  4. 启动spdk进程。
    ./build/bin/nvmf_tgt --wait-for-rpc
  5. 设置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压缩格式。
  6. 初始化程序框架。
    ./scripts/rpc.py framework_start_init
  7. 使用被纳管的nvme盘来创建bdev设备。
    ./scripts/rpc.py bdev_nvme_attach_controller -b NVMe1 -t PCIe -a 0000:84:00.0
  8. 创建压缩盘。
    ./scripts/rpc.py bdev_compress_create -b NVMe1n1 -p /dev/pmem0n1 -l 512
    • -b 参数是指定存储压缩数据的bdev设备,NVMe1n1 是步骤7中命令执行后创建的bdev设备名称。
    • -p 参数是指定持久化内存盘存储元数据,/dev/pmem0n1 是持久化内存盘的名称。
  9. 对创建的压缩盘进行测试。
    1. 挂载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子系统名称。

    2. 进行fio测试。
      • 若没有安装fio依赖,请先执行以下命令进行安装。
        yum install fio
      • nvme盘符可以使用fdisk -l查询,信息中包含SPDK_Controller1是使用spdk创建出的虚拟盘符。

        正常的nvme使用fdisk -l查出来的结果如下图所示:

        挂载出来的nvme使用fdisk -l查出来的结果如下图所示:

      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
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词