---
title: 创建Bcache设备
description: "Bcache盘分为数据盘和Cache盘，一般采用HDD作为数据盘，SSD作为Cache盘。"
url: https://www.hikunpeng.com/document/detail/zh/boostsds/smartwc/kunpengswc_20_0015.html
sourcePath: /source/zh/boostsds/smartwc/kunpengswc_20_0015.html
indexId: 9f6cbfd3ee1cf0bc8d364791ec9e6318cc0bac5ee2e4d33260b54c64487b902651
---
# 创建Bcache设备

Bcache盘分为数据盘和Cache盘，一般采用HDD作为数据盘，SSD作为Cache盘。

以下操作需在3个Ceph节点均执行一遍，脚本中的“/dev/sda-/dev/sdl”12块硬盘均为Bcache设备的数据盘，将NVMe中大小为400G的分区作为Cache盘。本例中以“/dev/nvme0n1p$n”与“/dev/nvme1n1p$n”为例，n的取值为{7..12}，这里的数值与创建磁盘分区分区中的Cache盘对应。


实际情况中可能会遇到OS硬盘位于HDD盘中的情况，例如系统盘安装到了“/dev/sda”，则不能使用以下脚本直接运行，否则部署到make-bcache --wipe-bcache -B /dev/sda时会报错。此时需要重新调整脚本，避免脚本中包含数据盘以外的如OS盘、做DB/WAL分区的SSD盘等。

因此在操作前需先执行以下命令查看磁盘分区情况。

```
lsblk
```

如图1所示，sda盘为系统盘。

图1 lsblk

#### 操作步骤

1. 创建一个用于创建bcache设备的Shell脚本。

  a. 创建“create_bcache.sh”文件。

```
vi create_bcache.sh
```


  b. 按“i”进入编辑模式，新增如下内容。

```
#!/bin/bash
n=7
for disk in {a..f}
do
sudo make-bcache -B /dev/sd${disk} -C /dev/nvme0n1p${n}
((n = $(( $n + 1 ))))
done
n=7
for disk in {g..l}
do
sudo make-bcache -B /dev/sd${disk} -C /dev/nvme1n1p$n
((n = $(($n + 1))))
done
```


    make-bcache -B /dev/sd${disk} -C /dev/nvme0n1p${n}中的参数含义为： -B：指定后端磁盘设备，即数据盘。 -C：指定缓存设备，用于加速数据盘。 示例：后端磁盘为“sdb”，缓存设备为“nvme0n1p7” make-bcache -B /dev/sdb -C /dev/nvme0n1p7

  c. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
2. 执行脚本。
  1 2 chmod 700 create_bcache.sh bash create_bcache.sh

3. 查看Bcache设备是否创建成功。

```
lsblk
```


  Bcache设备可找到对应的数据盘和相对应的Cache盘，则创建成功。
