clickhouse Volume Types

 


卷类型说明

卷类型是存储策略中 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)。
posted @   小吉猫  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2023-02-21 k8s部署jenkins
点击右上角即可分享
微信分享提示