---
title: 数据盘调优
description: "通过安装并启用SPDK，可以显著提升数据盘的IO性能并降低延迟，进而提升MySQL数据库的性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/systuningguide/systemtg/kunpengtypical_05_0013.html
sourcePath: /source/zh/kunpengcpfs/systuningguide/systemtg/kunpengtypical_05_0013.html
indexId: 933a92b8f4118b3394e131a4c6597b42c47c21f43852895dbfa665471379351574
---
# 数据盘调优

通过安装并启用SPDK，可以显著提升数据盘的IO性能并降低延迟，进而提升MySQL数据库的性能。

1. 安装SPDK。

```
git clone https://github.com/spdk/spdk -b v21.01.1
cd spdk
git submodule update --init
./configure --with-shared --enable-debug --disable-tests --disable-unit-tests
make -j`nproc`
make -j`nproc` install
ln -s `pwd`/build/bin/vhost /usr/bin/vhost
ln -s `pwd`/scripts/rpc.py /usr/bin/rpc
export LIBRARY_PATH=/usr/local/lib:/home/spdk/dpdk/build-tmp/lib:/home/spdk/dpdk/build/lib:${LIBRARY_PATH}
export LD_LIBRARY_PATH=/usr/local/lib:/home/spdk/dpdk/build-tmp/lib:/home/spdk/dpdk/build/lib:${LD_LIBRARY_PATH}
```


2. 启动vhost进程，并指定用于轮询的CPU编号。例如指定CPU编号8,9,10,11。

```
vhost -S /var/tmp -m [8,9,10,11] &
```


  [8,9,10,11]为用于轮询的CPU编号，可以根据实际需求进行调整。 建议本步骤的绑核与2中的绑核都在同一个NUMA节点上。

3. 创建块设备和控制器。

  a. 创建一个AIO块设备。

```
rpc bdev_aio_create /dev/nvme0n1p5 aio_0 512
```


    /dev/nvme0n1p5为卷名，可以是QEMU的img文件或RBD设备等。 aio_0为块设备的名称。 512为块大小。

  b. 创建一个vhost blk控制器。

```
rpc vhost_create_blk_controller vhost.0 aio_0
```


    vhost.0为socket文件名称，该命令将生成一个位于“/var/tmp/vhost.0”的socket文件。

4. 在虚拟机的XML配置文件中添加SPDK数据盘。
  1 2 3 4 5 6 7 <disk type='vhostuser' device='disk' snapshot='no'> <driver name='qemu' type='raw' queues='8'/> <source type='unix' path='/var/tmp/vhost.0'> <reconnect enabled='yes' timeout='10'/> </source> <target dev='vdb' bus='virtio'/> </disk>

  “queues”的值不能超过虚拟机CPU的数量，否则虚拟机将会无法启动。

  至此，SPDK环境部署完成，并可在虚拟机中使用SPDK提供的数据盘。
