配置bcache
以下以sdb盘为例说明操作步骤,读者请根据实际盘号操作。
为数据盘创建bcache盘
- 删除磁盘上原有的数据,创建bcache盘,格式化bcache盘为ext4文件系统格式。
wipefs -a /dev/sdb --force make-bcache -B /dev/sdb --wipe-bcache mkfs.ext4 /dev/[bcache]
- 修改bcache盘参数。
- 获取max_sectors_kb(设备允许的最大请求大小)实际参数。
cat /sys/block/sdb/queue/max_sectors_kb
回显结果为数据盘最大扇区数量,示例如下:
1024
- 获取read_ahead_kb(预读数据大小)实际参数。
cat /sys/block/sdb/queue/read_ahead_kb
回显结果为数据盘预读数量,示例如下:128
- 根据获取到的实际参数配置max_sectors_kb和read_ahead_kb。
echo 数据盘最大扇区数量 > /sys/block/[bcache]/queue/max_sectors_kb
echo 数据盘预读数量 > /sys/block/[bcache]/queue/read_ahead_kb
针对以上步骤命令中涉及的[数据盘最大扇区数量]、[数据盘预读数量]和[bcache]有如下两条说明。
- [数据盘最大扇区数量]和[数据盘预读数量]以具体的数据盘的值为准,不同的数据盘,其参数可能不一样。
- 具体[bcache]值需根据“/sys/block/”目录下内容进行设置,该目录下所有[bcache]设备都需要按此处理。
- 获取max_sectors_kb(设备允许的最大请求大小)实际参数。
为Ramdisk缓存盘创建bcache盘
- 创建Ramdisk盘。
modprobe brd rd_nr=12 rd_size=$((1048576))
命令中,12表示缓存盘数量;1048576表示缓存盘大小为1G,具体大小请根据业务自己配置,一般大数据场景配置1G大小即可。
- 将缓存盘格式化为bcache盘。
make-bcache --wipe-bcache -b 262144 -C /dev/ram0
命令中,262144表示缓存盘block大小为256K。
- 挂载缓存盘到对应的bcache盘。
echo $uuid > /sys/block/[bcache]/bcache/attach
命令中的$uuid值取其结果的cset.uuid对应的uuid值,查看$uuid值。bcache-super-show /dev/ram0
- 修改bcache策略。
echo writearound > /sys/block/[bcache]/bcache/cache_mode
echo 1 > /sys/block/[bcache]/bcache/clear_stats
echo 0 > /sys/block/[bcache]/bcache/readahead
echo 10 > /sys/block/[bcache]/bcache/writeback_percent
echo 0 > /sys/block/[bcache]/bcache/cache/congested_read_threshold_us
echo 0 > /sys/block/[bcache]/bcache/cache/congested_write_threshold_us
echo 1 > /sys/block/[bcache]/bcache/read_bypass
echo lru > /sys/block/[bcache]/bcache/cache/cache0/cache_replacement_policy
命令中涉及的具体[bcache]值需根据“/sys/block/”目录下内容进行设置,该目录下所有[bcache]设备都需要按此处理。
创建完Ramdisk缓存盘后,系统会划分对应的内存给bcache使用,如果运行的业务需要使用大量内存,建议调整业务内存资源配置,以免业务运行因为内存不足而失败。比如Spark Kmeans,应用会消耗大量内存,此时需要调整Yarn的内存资源配置,确保业务不会因为内存不足而失败。
为SSD缓存盘创建bcache盘
- 确保有空闲的SSD缓存盘。
举例说明:
- 格式化缓存盘为bcache盘。
make-bcache --wipe-bcache -b 262144 -C /dev/nvme0n1p1
echo /dev/nvme0n1p1 > /sys/fs/bcache/register
262144表示缓存盘block大小为256K。
- 挂载缓存盘到对应的bcache盘。
echo $uuid > /sys/block/[bcache]/bcache/attach
命令中的$uuid值取其结果的cset.uuid对应的uuid值,查看$uuid值。bcache-super-show /dev/nvme0n1p1
- 修改bcache策略。
echo writeback > /sys/block/[bcache]/bcache/cache_mode echo 1 > /sys/block/[bcache]/bcache/clear_stats echo 0 > /sys/block/[bcache]/bcache/readahead echo 10 > /sys/block/[bcache]/bcache/writeback_percent echo 0 > /sys/block/[bcache]/bcache/cache/congested_read_threshold_us echo 0 > /sys/block/[bcache]/bcache/cache/congested_write_threshold_us echo 0 > /sys/block/[bcache]/bcache/cache/read_bypass echo 0 > /sys/block/[bcache]/bcache/sequential_cutoff echo lru > /sys/block/[bcache]/bcache/cache/cache0/cache_replacement_policy
- 修改bcache的queue目录参数。在以下命令中,根据后端盘修改max_sectors_kb的参数为适合值。
echo 1024 > /sys/block/[bcache]/queue/max_sectors_kb
命令中涉及的具体[bcache]值需根据“/sys/block/”目录下内容进行设置,该目录下所有[bcache]设备都需要按此处理。
挂载数据盘对应的bcache盘
创建完成bcache磁盘后,原先“/etc/fstab”中的操作系统默认启动挂载数据盘的配置需要删除,以免重启服务器后数据盘被重新格式化成非bcache盘。
手动装载bcache盘对应的数据盘,请根据实际数据盘目录配置[bcache]和[data]。
mount /dev/[bcache]/ data/[data]
父主题: 启动大数据智能预取