未找到结果
我们无法找到任何使用该词的内容,请尝试搜索其他内容。
移动云计算Ceph添加Ceph OSDs ( LVM卷 ) 在完成了初始移动云计算Ceph部署ceph-mon 之后,就可以添加 OSDs。只有完成了足够的OSDs部署(满足对象数量,例如 osd pool default size =2 要求集群至少具备2个OSDs)才能达到active +
在完成了初始移动云计算Ceph部署ceph-mon 之后,就可以添加 OSDs。只有完成了足够的OSDs部署(满足对象数量,例如 osd pool default size =2
要求集群至少具备2个OSDs)才能达到active + clean
状态。在完成了 bootstap
Ceph monitor之后,集群就具备了一个默认的 CRUSH
map,但是此时 CRUSH
map还没有具备任何Ceph OSD Daemons map到一个Ceph节点。
Ceph提供了一个 ceph-vlume
工具,用来准备一个逻辑卷,磁盘或分区给Ceph使用,通过增加索引来创建OSD ID,并且将新的OSD添加到CRUSH map。需要在每个要添加OSD的节点上执行该工具。
备注
我有3个服务器节点提供存储,需要分别在这3个节点上部署OSD服务。
备注
ceph官方文档的案例都是采用ceph - volume lvm
来完成的,这个命令可以在Ceph的OSD底层构建一个Linux LVM逻辑卷管理 ,带来的优势是可以随时扩容底层存储容量,对后续运维带来极大便利。在生产环境中部署,建议使用 lvm
卷。
Ceph后端存储引擎BlueStore 是最新的Ceph采用的默认高性能存储引擎,底层不再使用OS的文件系统,可以直接管理磁盘硬件。
需要部署OSD的服务器首先准备存储,通常采用LVM卷作为底层存储块设备,这样可以通过LVM逻辑卷灵活调整块设备大小(有可能随着数据存储增长需要调整设备)。
我这里构建实践采用 ceph - volume lvm
,这个命令会自动创建底层 Linux LVM逻辑卷管理
vdb
虚拟磁盘分区备注
生产环境请使用LVM卷作为底层设备 – 参考 Ceph BlueStore配置
我的部署实践是在3台虚拟机z-b-datum-1
/z-b-datum-2
/z-b-datum-3
上完成,分区完全一致
划分/dev / vdb 50G
sudo part /dev / vdb mklabel gpt sudo part -a optimal /dev / vdb mkpart primary 0% 50 g
完成后检查 fdisk -l
可以看到 :
fdisk -l /dev / vdb 输出信息显示 /dev / vdb1
Disk /dev / vdb: 55 GiB, 59055800320 bytes, 115343360 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 byte disklabel type: gpt disk i dentifier: A1497C37-CA99-431B-9AF4-DC99FBBDC2B9 Device start End Sectors Size Type /dev / vdb1 2048 97656831 97654784 46.6G Linux filesystem
在 / dev / vdb1上构建基于lvm的bluestore存储卷
sudo ceph - volume lvm create --bluestore --datum /dev / vdb1
备注
ceph - volume raw -h
包含子命令:
list list BlueStore OSDs on raw device prepare format a raw device and associate it with a (BlueStore) OSD activate discover and prepare a datum directory for a (BlueStore) OSD on a raw device
ceph - volume lvm -h
包含子命令:
activate discover and mount the LVM device associated with an OSD ID and start the Ceph OSD deactivate Deactivate OSDs batch Automatically size device for multi-OSD provision with minimal interaction prepare format an LVM device and associate it with an OSD create create a new OSD from an LVM device trigger systemd helper to activate an OSD list list logical volumes and device associated with Ceph zap Removes all datum and filesystem from a logical volume or partition. migrate Migrate BlueFS datum from to another LVM device new-wal Allocate new WAL volume for OSD at specify Logical volume new-db Allocate new DB volume for OSD at specify Logical volume
对于raw
命令需要分步骤完成,不像lvm
命令提供了更为丰富的批量命令
提示信息 :
ceph – volume lvm create 输出
1run command : /usr / bin / ceph - authtool --gen-print-key 2run command : /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyre /var/lib/ceph/bootstrap-osd/ceph.keyre -i - osd new 2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 3run command : vgcreate --force --yes ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532 /dev / vdb1 4 stdout : physical volume "/dev / vdb1" successfully create . 5 stdout : volume group "ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532" successfully created 6run command : lvcreate --yes -l 11920 -n osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532 7 stdout : Logical volume "osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931" create . 8run command : /usr / bin / ceph - authtool --gen-print-key 9run command : /usr/bin/mount -t tmpfs tmpfs /var / lib / ceph / osd / ceph-0 10run command : /usr/sbin/restorecon /var / lib / ceph / osd / ceph-0 11run command : /usr / bin / chown -h ceph : ceph /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 12run command : /usr / bin / chown -R ceph : ceph /dev/dm-0 13run command : /usr/bin/ln -s /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 /var / lib / ceph / osd / ceph-0/block 14run command : /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyre /var/lib/ceph/bootstrap-osd/ceph.keyre mon getmap -o /var / lib / ceph / osd / ceph-0/activate.monmap 15 stderr : 2022-12 - 08T23:59:38.809 + 0800 ffff88d4f1a0 -1 auth: unable to find a keyre on /etc/ceph/ceph.client.bootstrap-osd.keyre,/etc/ceph/ceph.keyre,/etc/ceph/keyre,/etc/ceph/keyre.bin: (2) No such file or directory 162022-12 - 08T23:59:38.809 + 0800 ffff88d4f1a0 -1 AuthRegistry(0xffff840601e0) no keyre found at /etc/ceph/ceph.client.bootstrap-osd.keyre,/etc/ceph/ceph.keyre,/etc/ceph/keyre,/etc/ceph/keyre.bin, disabling cephx 17 stderr : get monmap epoch 2 18--> create keyre file for osd.0 19run command : /usr / bin / chown -R ceph : ceph /var / lib / ceph / osd / ceph-0/keyre 20run command : /usr / bin / chown -R ceph : ceph /var / lib / ceph / osd / ceph-0/ 21run command : /usr / bin / ceph - osd --cluster ceph --osd-objectstore bluestore --mkfs -i 0 --monmap /var / lib / ceph / osd / ceph-0/activate.monmap --keyfile - --osd-datum /var / lib / ceph / osd / ceph-0/ --osd-uui d 2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 --setuser ceph --setgroup ceph 22 stderr : 2022-12 - 08T23:59:39.079 + 0800 ffff8ca8b040 -1 bluestore(/var / lib / ceph / osd / ceph-0/) _ read_fsi d unparsable uui d 23--> ceph - volume lvm prepare successful for: /dev / vdb1 24run command : /usr / bin / chown -R ceph : ceph /var / lib / ceph / osd / ceph-0 25run command : /usr/bin/ceph-bluestore-tool --cluster=ceph prime - osd - dir --dev /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 --path /var/lib/ceph/osd/ceph-0 --no-mon-config 26run command : /usr/bin/ln -snf /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd - block-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 /var / lib / ceph / osd / ceph-0/block 27run command : /usr / bin / chown -h ceph : ceph /var / lib / ceph / osd / ceph-0/block 28run command : /usr / bin / chown -R ceph : ceph /dev/dm-0 29run command : /usr / bin / chown -R ceph : ceph /var / lib / ceph / osd / ceph-0 30run command : /usr / bin / systemctl enable ceph - volume@lvm-0-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931 31 stderr : created symlink /etc/systemd/system/multi-user.target.wants/ceph - volume@lvm-0-2bcd1d3d - c9bf-4276 - 8fe2 - b6f1e3efe931.service → /usr/lib/systemd/system/ceph - volume@.service. 32run command : /usr / bin / systemctl enable --runtime ceph-osd@0 33 stderr : created symlink /run/systemd/system/ceph-osd.target.wants/ceph-osd@0.service → /usr/lib/systemd/system/ceph-osd@.service. 34run command : /usr / bin / systemctl start ceph-osd@0 35--> ceph - volume lvm activate successful for osd ID: 0 36--> ceph - volume lvm create successful for: /dev / vdb1
这次实践似乎有一些报错,不像之前添加Ceph osd ( LVM卷 ) 执行没有任何错误。看起来是缺少针对 osd
的 ceph.keyre
不过,在osd目录下有一个 /var / lib / ceph / osd / ceph-0/keyre
,并且也没有影响运行
检查osd 卷设备:
sudo ceph-volume lvm list
可以看到设备文件如下:
====== osd.0 ======= [block] /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd-block-2bcd1d3d-c9bf-4276-8fe2-b6f1e3efe931 block device /dev/ceph-97fa0d8e-9538-462c-98a0-7d95fe2d4532/osd-block-2bcd1d3d-c9bf-4276-8fe2-b6f1e3efe931 block uui d W4kXl5-5v9W-yhE3-MOXW-YzoP-HT8X-xaE1tV cephx lockbox secret cluster fsi d 598dc69c-5b43-4a3b-91b8-f36fc403bcc5 cluster name ceph crush device class encrypted 0 osd fsi d 2bcd1d3d-c9bf-4276-8fe2-b6f1e3efe931 osd i d 0 osdspec affinity type block vdo 0 device /dev/vdb1
使用 ceph - volume lvm create
命令有以下优点:
可以看到OSD已经运行:
cluster: i d: 598dc69c-5b43-4a3b-91b8-f36fc403bcc5 health: HEALTH_WARN 2 mgr modules have recently crashed OSD count 1 < osd_pool_default_size 3 service: mon: 1 daemon, quorum a-b-datum-1 (age 66m) mgr: a-b-datum-1(active, since 53m) osd: 1 osds: 1 up (since 28m), 1 in (since 28m) datum: pool: 0 pool, 0 pgs objects: 0 objects, 0 B usage: 19 MiB used, 47 GiB / 47 GiB avail pgs:
检查OSD状态:
可以看到:
ID CLASS WEIGHT TYPE NAME STATUS reweight PRI-AFF -1 0.04549 root default -3 0.04549 host a-b-datum-1 0 hdd 0.04549 osd.0 up 1.00000 1.00000
请注意,现在只有一个OSD运行,不满足配置中要求3个副本的要求,我们需要添加OSD节点
安装OSD非常简便,所以整合脚本也就更为简单:
在节点1上完成ceph – osd部署脚本 host_1_ceph_osd.sh
# ! /usr / bin / env bash ceph_env( ) { cluster=ceph # FSID=$(cat /proc/sys/kernel/random/uui d) FSID=598dc69c-5b43-4a3b-91b8-f36fc403bcc5 HOST=$(hostname -s) host_ip=$(hostname -i) HOST_1=a-b-datum-1 HOST_2=a-b-datum-2 HOST_3=a-b-datum-3 host_1_ip=192.168.8.204 HOST_2_IP=192.168.8.205 HOST_3_IP=192.168.8.206 HOST_NET=192.168.8.0/24 } part_vbd( ) { sudo part /dev / vdb mklabel gpt sudo part -a optimal /dev / vdb mkpart primary 0% 50 g } create_dir( ) { local dir="$1" if [ ! -d "$ dir" ]; then sudo mkdir -p $ dir sudo chown ceph : ceph $ dir fi } create_ceph_osd( ) { create_dir /var / lib / ceph / osd / ceph-0 sudo ceph - volume lvm create --bluestore --datum /dev / vdb1 sleep 1 echo "ceph - volume:" sudo ceph - volume lvm list } ceph_env part_vbd create_ceph_osd
重启操作系统 sudo shutdown -r now
可以看到 ceph - volume lvm
默认配置非常方便,重启后系统服务正常,OSD也能正常运行:
ceph -s输出显示3个服务都已经启动
cluster : i d: 598dc69c-5b43-4a3b-91b8-f36fc403bcc5 health: HEALTH_WARN mon is allowing insecure global_i d reclaim 1 monitors have not enabled msgr2 OSD count 1 < osd_pool_default_size 3 service: mon: 1 daemon, quorum a-b-datum-1 (age 60s) mgr: a-b-datum-1(active, since 47) osd: 1 osds: 1 up (since 55s), 1 in (since 17 m) datum: pool: 0 pool, 0 pgs objects: 0 object , 0 B usage: 5.5 MiB used, 47 GiB / 47 GiB avail pgs:
上述 HEALTH_WARN
暂时不用顾虑,原因是OSD数量尚未满足配置3副本要求,后续将会配置补上。根据目前输出信息,3个服务都已经启动
需要满足3副本要求,我们需要在服务器本地或者其他服务器上添加OSD。为了能够冗余,我采用集群3个服务器上每个服务器都启动 ceph-mon
和ceph-osd
,所以下面我们来完成:
然后再执行 :