CoreOS Torus分布式存储系统入门指南

CoreOS Torus分布式存储系统入门指南

前言

CoreOS Torus是一个开源的分布式存储系统,专为容器化环境设计。它提供了块存储服务,支持数据复制和一致性校验,能够满足现代云原生应用对持久化存储的需求。本文将详细介绍如何搭建和运行一个基础的Torus集群。

环境准备

1. 获取Torus二进制文件

Torus提供了两种获取方式:

  1. 直接下载预编译版本:官方会定期发布稳定版本的二进制文件包
  2. 从源码编译
    • 需要安装Go语言环境并正确配置GOPATH
    • 使用make命令编译后会生成三个关键二进制文件:
      • torusd:存储守护进程
      • torusctl:集群管理工具
      • torusblk:客户端守护进程,负责挂载卷

编译过程会自动处理依赖关系,首次编译时会安装glide依赖管理工具。

2. 部署etcd集群

Torus依赖etcd作为其元数据存储后端,要求etcd版本必须为v3.0或更高。部署方式包括:

单节点本地部署
etcd --data-dir /tmp/etcd
使用rkt容器运行
rkt fetch coreos.com/etcd:v3.0.0-beta.0
mkdir /tmp/etcd
rkt run coreos.com/etcd:v3.0.0-beta.0 \
     --volume=data-dir,kind=host,source=/tmp/etcd,readOnly=false \
     -- \
    -advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
    -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
    -listen-peer-urls http://0.0.0.0:2380

生产环境建议部署高可用的etcd集群,这需要额外的配置工作。

初始化Torus集群

3. 集群初始化

初始化命令相当于"格式化"整个存储集群:

./bin/torusctl init

如果etcd不在默认位置,可以通过-C参数指定:

./bin/torusctl -C $ETCD_IP:2379 init

初始化过程会设置集群的全局配置参数,大多数情况下使用默认值即可满足需求。

部署存储节点

4. 启动存储节点

Torus支持多种部署方式:

手动运行
./bin/torusd --etcd 127.0.0.1:2379 --peer-address http://127.0.0.1:40000 --data-dir /tmp/torus1 --size 20GiB

可以启动多个节点,只需确保端口和数据目录不冲突。

使用rkt容器
rkt fetch quay.io/coreos/torus
mkdir -p /tmp/torus/{1,2,3}
rkt run --volume=volume-data,kind=host,source=/tmp/torus/1 \
    --set-env LISTEN_HOST=0.0.0.0 \
    --set-env PEER_ADDRESS=http://0.0.0.0:40000 \
    --set-env ETCD_HOST="${ETCD_IP}" quay.io/coreos/torus
使用Docker
docker run \
--net=host \
-v /path/to/data1:/data \
-e STORAGE_SIZE=20GiB \
-e LISTEN_HTTP_PORT=4321 \
-e PEER_ADDRESS=http://127.0.0.1:40000 \
-e ETCD_HOST=127.0.0.1 \
quay.io/coreos/torus

集群管理

5. 查看节点状态

./bin/torusctl list-peers

输出示例:

ADDRESS                 UUID                                  SIZE     USED  MEMBER  UPDATED       REB/REP DATA
http://127.0.0.1:40000  b2a2cbe6-38b7-11e6-ab37-5ce0c5527cf4  5.0 GiB  0 B   Avail   1 second ago  0 B/sec

6. 激活存储节点

./bin/torusctl peer add --all-peers

激活后节点状态会从"Avail"变为"OK",表示它们已开始存储数据。

7. 查看集群拓扑

./bin/torusctl ring get

创建和使用存储卷

8. 创建块存储卷

./bin/torusctl volume create-block myVolume 10GiB

这会创建一个10GB的虚拟块设备,默认配置下会自动进行数据复制和CRC校验。

9. 通过NBD挂载卷

sudo modprobe nbd
sudo ./bin/torusblk --etcd 127.0.0.1:2379 nbd myVolume /dev/nbd0

成功挂载后会看到类似"Attached to XXX. Server loop begins ..."的消息。

10. 格式化并挂载

sudo mkfs.ext4 /dev/nbd0
sudo mkdir -p /mnt/torus
sudo mount /dev/nbd0 -o discard,noatime /mnt/torus

discard选项启用了TRIM命令支持,有助于SSD设备的垃圾回收。

高级管理

节点维护

  • 移除节点

    ./bin/torusctl peer remove $PEER_ADDRESS
    

    节点移除后数据会自动重新复制到其他节点。

  • 硬移除:当节点永久失效时直接移除,但要注意不要超过复制因子限制,否则可能导致数据丢失。

结语

通过以上步骤,我们完成了Torus存储集群的基本部署和使用。Torus的设计非常适合容器化环境,提供了可靠的分布式块存储服务。对于生产环境,建议进一步配置监控告警系统,并考虑部署高可用的etcd集群作为后端存储。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史姿若Muriel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值