安装和运行 Ceph 文件系统

完全可以以单机版且通过 Docker 的方式来安装和运行 Ceph 文件系统。

这种方式非常适合用于学习、开发和测试,因为它让你无需准备多台物理机或虚拟机就能体验和使用 Ceph 的核心功能。但请务必记住,这种单机部署不具备高可用性和数据冗余,绝对不能用于生产环境。

下面介绍两种主流的 Docker 化单机部署 Ceph 的方法。


方法一:使用 cephadm(官方推荐的现代方法)

cephadm 是 Ceph 官方从 Octopus 版本开始引入的部署和管理工具,它通过容器来部署和管理所有 Ceph 组件。即便是单机环境,它也是目前最推荐的方式,因为这能让你学习到最现代、最接近生产环境的 Ceph 管理方法。

部署步骤概览:

1. 准备环境
  • 一台安装了 Docker 的 Linux 主机(推荐使用 CentOS Stream, Ubuntu, or Debian)。

  • 主机 IP 地址是固定的。

  • 需要一个额外的裸块设备(Block Device)来作为 OSD。如果没有物理磁盘,可以创建一个 loop device 来模拟。

创建模拟磁盘(如果需要):

Generated bash

# 创建一个 10GB 的稀疏文件
truncate -s 10G /ceph-osd.img

# 将文件设置为 loop 设备
sudo losetup -f /ceph-osd.img

# 查看创建的 loop 设备名,比如 /dev/loop0
losetup -a

Use code with caution.Bash

2. 安装 cephadm

cephadm 是一个独立的脚本,可以直接下载使用。

Generated bash

# 下载新脚本
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm

Use code with caution.Bash

3. 引导(Bootstrap)Ceph 集群

这是最关键的一步,它会在你的单机上创建第一个 MON 和 MGR 服务。

Generated bash


#sudo ./cephadm --image quay.io/ceph/ceph:v17.2.7 bootstrap --mon-ip <your ip>
sudo ./cephadm --image quay.io/ceph/ceph:v17.2.7 bootstrap --mon-ip 192.168.3.116

Use code with caution.Bash

这个命令执行成功后,会输出一些重要信息,包括:

  • Ceph Dashboard 的访问地址和登录凭据。

  • 如何进入 Ceph Shell 的命令(通常是 sudo ceph -s 或 sudo cephadm shell)。

过程信息如下:

./cephadm install cephadm
Installing packages ['cephadm']...
root@node116:/mnt/newdisk/github# ./cephadm bootstrap --mon-ip 192.168.3.116
Creating directory /etc/ceph for ceph.conf
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit systemd-timesyncd.service is enabled and running
Repeating the final host check...
docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK
Cluster fsid: c1b44dce-71d2-11f0-b9e3-f3de7df843ba
Verifying IP 192.168.3.116 port 3300 ...
Verifying IP 192.168.3.116 port 6789 ...
Mon IP `192.168.3.116` is in CIDR network `192.168.3.0/24`
Mon IP `192.168.3.116` is in CIDR network `192.168.3.0/24`
Internal network (--cluster-network) has not been provided, OSD replication will default to the public_network
Pulling container image quay.io/ceph/ceph:v16...
Ceph version: ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start...
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf...
Restarting the monitor...
Setting public_network to 192.168.3.0/24 in mon config section
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr...
Verifying port 9283 ...
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/15)...
mgr not available, waiting (2/15)...
mgr not available, waiting (3/15)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for mgr epoch 5...
mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys...
Adding host node116...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for mgr epoch 9...
mgr epoch 9 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

	     URL: https://node116:8443/
	    User: admin
	Password: hvmivsdr48

Enabling client.admin keyring and conf on hosts with "admin" label
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:

	sudo ./cephadm shell --fsid c1b44dce-71d2-11f0-b9e3-f3de7df843ba -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Or, if you are only running a single cluster on this host:

	sudo ./cephadm shell 

Please consider enabling telemetry to help improve Ceph:

	ceph telemetry on

For more information see:

	https://docs.ceph.com/en/pacific/mgr/telemetry/

Bootstrap complete.
4. 添加 OSD (Object Storage Daemon)

Ceph 需要 OSD 来存储数据。我们将之前准备的块设备添加为 OSD。

Generated bash

# 进入 cephadm shell 环境
sudo cephadm shell
 
# 列出所有可用的磁盘设备
ceph orch device ls
 
# 查看集群管理的主机列表
ceph orch host ls
 
# 将你的设备(例如 /dev/loop0)添加为 OSD
# cephadm 会自动处理格式化等所有事情
# ceph orch daemon add osd <主机名>:<设备路径>  (记得使用 raw 模式,如果是 loop 设备)
ceph orch daemon add osd node116:/dev/loop13 raw


 
# 可以通过 ceph -s 查看状态,会发现 OSD 已经上线
sudo ceph -s

Use code with caution.Bash

5. 部署 Ceph 文件系统 (CephFS)

现在集群核心组件已经就绪,可以创建 CephFS 了。

Generated bash

# 1. 创建 CephFS 需要的元数据服务 (MDS)
# cephfs 是你给文件系统起的名字,可以自定义
ceph orch apply mds cephfs


# 2. 创建 CephFS

# 2.1. 创建数据池 (data pool)
# 通常数据池会使用纠删码(erasure code),但在单机测试环境中,使用默认的副本(replicated)模式更简单。
# 'cephfs-data' 是池的名称。
# '8' 是 PG (Placement Group) 的数量。对于单 OSD 测试环境,8 或 16 是一个合理的起始值。
ceph osd pool create cephfs-data 8

# 2.2. 创建元数据池 (metadata pool)
# 元数据池对性能和延迟更敏感,必须使用副本模式。
# 'cephfs-metadata' 是池的名称。
# '8' 是 PG 数量。
ceph osd pool create cephfs-metadata 8


# 这会自动创建所需的 data pool 和 metadata pool
ceph fs new cephfs cephfs-metadata cephfs-data

# 3. 验证 CephFS 是否创建成功
ceph fs ls
ceph fs status cephfs

部分过程输出信息:

oot@ceph fs ls
name: cephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]                                                                                                                                                                 ceph fs status cephfs
cephfs - 0 clients
======
RANK   STATE             MDS           ACTIVITY   DNS    INOS   DIRS   CAPS  
 0    creating  cephfs.node116.gjfmkw              10     13     12      0   
      POOL         TYPE     USED  AVAIL  
cephfs-metadata  metadata     0   15.7G  
  cephfs-data      data       0   15.7G  
     STANDBY MDS       
cephfs.node116.zohebw  
MDS version: ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)

在另一个终端查看docker 的安装情况:

docker ps
CONTAINER ID   IMAGE                                     COMMAND                  CREATED          STATUS                          PORTS                                     NAMES
ac3eed5260ef   quay.io/ceph/ceph                         "/usr/bin/ceph-mds -…"   41 seconds ago   Up 40 seconds                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-mds-mycephfs-node116-qknubx
52063377df15   quay.io/ceph/ceph                         "/usr/bin/ceph-mds -…"   42 seconds ago   Up 41 seconds                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-mds-mycephfs-node116-nxafgy
5bb63cd8dbb9   quay.io/ceph/ceph                         "bash"                   13 minutes ago   Up 12 minutes                                                             eager_black
3c7a21497d6f   quay.io/ceph/ceph-grafana:9.4.7           "/bin/sh -c 'grafana…"   17 minutes ago   Up 17 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-grafana-node116
3b8021f2aad9   quay.io/prometheus/alertmanager:v0.25.0   "/bin/alertmanager -…"   17 minutes ago   Up 17 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-alertmanager-node116
aab9d053928c   quay.io/prometheus/prometheus:v2.43.0     "/bin/prometheus --c…"   17 minutes ago   Up 17 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-prometheus-node116
130b240e72d9   quay.io/prometheus/node-exporter:v1.5.0   "/bin/node_exporter …"   18 minutes ago   Up 18 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-node-exporter-node116
950b7fbbc293   quay.io/ceph/ceph                         "/usr/bin/ceph-crash…"   19 minutes ago   Up 19 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-crash-node116
52d9a341d8d8   quay.io/ceph/ceph:v17.2.7                 "/usr/bin/ceph-mgr -…"   19 minutes ago   Up 19 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-mgr-node116-rgneek
386dece6f56a   quay.io/ceph/ceph:v17.2.7                 "/usr/bin/ceph-mon -…"   19 minutes ago   Up 19 minutes                                                             ceph-bd525476-725c-11f0-b9e3-f3de7df843ba-mon-node116

Use code with caution.Bash

至此,一个单机版的、基于 Docker 的、功能完整的 Ceph 集群(包含 CephFS)就部署好了。你可以通过 Kernel Driver 或 FUSE 在本机上挂载这个 CephFS。


方法二:使用 ceph/demo 镜像(最简单但已过时)

这个方法非常古老,主要用于快速演示。ceph/demo 镜像将 MON, MGR, OSD 等所有组件都打包在一个 Docker 容器里,启动极其简单。

警告: 这个镜像已经很久没有更新,不代表现代 Ceph 的架构,仅适合快速看一眼 Ceph 的样子,不适合学习

部署步骤:

  1. 拉取镜像

    Generated bash
    docker pull ceph/demo

    Use code with caution.Bash
  2. 启动容器

    Generated bash
    # 替换 <your_ip> 为你的主机 IP
    # 替换 <your_network/mask> 为你的网络,例如 192.168.1.0/24
    docker run -d --net=host \
      -v /etc/ceph:/etc/ceph \
      -v /var/lib/ceph/:/var/lib/ceph \
      -e MON_IP=<your_ip> \
      -e CEPH_PUBLIC_NETWORK=<your_network/mask> \
      --name ceph-demo \
      ceph/demo

    Use code with caution.Bash

    这个命令启动后,一个迷你的 Ceph 集群就在运行了。OSD 会使用容器内的一个目录来模拟,性能很差。

  3. 使用
    你可以进入容器内部来执行 Ceph 命令。

    Generated bash
    docker exec -it ceph-demo bash
    root@hostname:/# ceph -s
    root@hostname:/# ceph osd tree

    Use code with caution.Bash

总结与建议

特性方法一 (cephadm)方法二 (ceph/demo)
推荐度强烈推荐不推荐,仅用于快速演示
复杂度中等,但步骤清晰极其简单
现代性最新、官方标准非常过时,架构不正确
学习价值,能学会现代 Ceph 管理低,会产生误导
功能完整性完整,可扩展,可管理有限,所有组件混合
适用场景学习、开发、测试快速验证某个应用是否能连接 Ceph

结论:

如果你想认真学习或在开发环境中使用 Ceph,请务必选择方法一 (cephadm)。虽然步骤多一点,但它能让你掌握正确且可迁移到生产环境的知识和技能。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值