卷类型说明
卷类型是存储策略中 volume 配置的一个属性,用于定义卷的存储行为。包括 JBOD、SINGLE_DISK、UNKNOWN三种。默认类型为JBOD。
JBOD (Just a Bunch Of Disks)
设计目标:将多个磁盘组合为一个逻辑卷,不提供冗余,但支持数据分布和并行读写。核心特性:数据分布:数据按轮询(Round-Robin)或权重(Weight)分布在卷内的磁盘上。无冗余:单个磁盘故障可能导致数据丢失。高性能:通过多磁盘并行 I/O 提升吞吐量。适用场景:需要大容量存储且容忍单点故障的场景。非关键数据(如日志、临时表)的存储。
<!-- ClickHouse 配置文件(config.xml 或 storage.xml) -->
<storage_configuration><disks><disk1> <!-- 磁盘定义 --><path>/data/disk1/</path></disk1><disk2><path>/data/disk2/</path></disk2></disks><policies><jbod_policy> <!-- 存储策略 --><volumes><jbod_volume> <!-- 卷类型为 JBOD --><disk>disk1</disk><disk>disk2</disk><volume_type>JBOD</volume_type></jbod_volume></volumes></jbod_policy></policies>
</storage_configuration>
SINGLE_DISK
设计目标:仅使用单个磁盘,数据不跨磁盘分布。核心特性:简单性:数据全部写入指定磁盘。无冗余:磁盘故障会导致数据丢失。适用场景:单磁盘环境或测试环境。数据量小且无需分布的场景。
<storage_configuration><disks><single_disk><path>/data/single/</path></single_disk></disks><policies><single_policy><volumes><single_volume><disk>single_disk</disk><volume_type>SINGLE_DISK</volume_type></single_volume></volumes></single_policy></policies>
</storage_configuration>
UNKNOWN
设计目标:未明确指定卷类型时的默认值,通常表示配置不完整或需要外部处理。核心特性:灵活性:允许动态分配存储策略。警告:需谨慎使用,可能导致未定义行为。适用场景:临时配置或动态存储策略的场景。需要后续程序逻辑干预的复杂存储管理。
<volumes><custom_volume><disk>custom_disk</disk><volume_type>UNKNOWN</volume_type> <!-- 需外部逻辑处理 --></custom_volume>
</volumes>
总结
特性 |
JBOD |
SINGLE_DISK |
UNKNOWN |
数据分布 |
多磁盘轮询/权重分布 |
单磁盘存储 |
未定义,依赖外部逻辑 |
冗余能力 |
无 |
无 |
依赖配置 |
性能 |
高(并行 I/O) |
低(单磁盘) |
不确定 |
适用场景 |
大容量非关键数据 |
简单存储或测试环境 |
动态或复杂存储策略 |
可靠性 |
低(单磁盘故障导致数据丢失) |
低 |
依赖实现 |
最佳实践
冗余与备份:JBOD 和 SINGLE_DISK 均无冗余,需结合副本(如 ReplicatedMergeTree)或定期备份提高可靠性。冷热分层:在存储策略中定义多个卷(如 hot_volume 和 cold_volume),通过 TTL 规则将旧数据迁移到低成本存储(如 S3)。