当 monitor 运行后, 你需要添加 OSD, 你的集群只有在获得足够的 OSD 数量用于复制对象时候才可能获得 active + clean 状态 例如 osd pool size = 2, 那么至少需要 2 个 OSD,
在启动 MONITOR 后,你的集群具有默认的 CURSH MAP, 当前 CURSH MAP 并没有 CEPH OSD 进程映射到 CEPH 节点
CEPH 提供 CEPH-DISK 工具, 可以准备一次磁盘, 分区或者目录用于 CEPH, ceph-disk 工具通过增加 INDEX 创建 OSD ID, 另外 ceph-disk 将会增加新的 OSD 到 CURSH MAP
目标
为每个电脑中的每个独立的磁盘都创建一个对应的 OSD, 当前数据备份副本数量为 3把打算用于创建 ceph 存储的磁盘进行分区, 并执行格式化, 参考该脚本, 并在每个节点上执行
#!/bin/bash LANG=en_US disk=`fdisk -l | grep ^Disk | grep sectors | grep sd | grep -v sda | awk -F[:\ ] '{print $2}' | sort` yum install -y hdparm for partition in $disk do dd if=/dev/zero of=$partition bs=1M count=100 parted -s $partition mklabel gpt parted $partition mkpart primary xfs 1 100% hdparm -z "$partition"1 mkfs.xfs -f -i size=512 "$partition"1 done每个独立的物理硬盘, 都已经完成格式化, 我们修改 /etc/fstab 把磁盘挂载到对应的目录中, 成为 CEPH 集群存储中的一部分 我们都会为每个独立的 磁盘创建一个独立的 OSD 与其对应,
#!/bin/bash LANG=en_US num=0 for ip in 240.30.128.55 240.30.128.56 240.30.128.57 240.30.128.73 240.30.128.74 240.30.128.75 240.30.128.76 do diskpart=`ssh $ip "fdisk -l | grep GPT | grep -v sda" | awk '{print $1}' | sort` for partition in $diskpart do ssh $ip "ceph osd create" ssh $ip "mkdir /var/lib/ceph/osd/ceph-$num" ssh $ip "echo $partition /var/lib/ceph/osd/ceph-$num xfs defaults 0 0 >> /etc/fstab" let num++ done ssh $ip "mount -a" done重启, 验证挂载是否正常
检测结果
[root@hh-yun-ceph-cinder015-128055 tmp]# ls /var/lib/ceph/osd/ceph* /var/lib/ceph/osd/ceph-0: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-1: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-2: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-3: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-4: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-5: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-6: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-7: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-8: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami /var/lib/ceph/osd/ceph-9: ceph_fsid current fsid journal keyring magic ready store_version superblock whoami参考执行结果
[root@hh-yun-ceph-cinder015-128055 tmp]# ./authosd.sh added key for osd.0 added key for osd.1 added key for osd.2 added key for osd.3 added key for osd.4 added key for osd.5 added key for osd.6 added key for osd.7 added key for osd.8 added key for osd.9 added key for osd.10 added key for osd.11 added key for osd.12 added key for osd.13 added key for osd.14 added key for osd.15 added key for osd.16 added key for osd.17 added key for osd.18 added key for osd.19 added key for osd.20 added key for osd.21 added key for osd.22 added key for osd.23 added key for osd.24 added key for osd.25 added key for osd.26 added key for osd.27 added key for osd.28 added key for osd.29 added key for osd.30 added key for osd.31 added key for osd.32 added key for osd.33 added key for osd.34 added key for osd.35 added key for osd.36 added key for osd.37 added key for osd.38 added key for osd.39 added key for osd.40 added key for osd.41 added key for osd.42 added key for osd.43 added key for osd.44 added key for osd.45 added key for osd.46 added key for osd.47 added key for osd.48 added key for osd.49 added key for osd.50 added key for osd.51 added key for osd.52 added key for osd.53 added key for osd.54 added key for osd.55 added key for osd.56 added key for osd.57 added key for osd.58 added key for osd.59 added key for osd.60 added key for osd.61 added key for osd.62 added key for osd.63 added key for osd.64 added key for osd.65 added key for osd.66 added key for osd.67 added key for osd.68 added key for osd.69参考执行结果
[root@hh-yun-ceph-cinder015-128055 tmp]# ./hostmap.sh added bucket hh-yun-ceph-cinder015-128055 type host to crush map moved item id -2 name 'hh-yun-ceph-cinder015-128055' to location {root=default} in crush map added bucket hh-yun-ceph-cinder016-128056 type host to crush map moved item id -3 name 'hh-yun-ceph-cinder016-128056' to location {root=default} in crush map added bucket hh-yun-ceph-cinder017-128057 type host to crush map moved item id -4 name 'hh-yun-ceph-cinder017-128057' to location {root=default} in crush map added bucket hh-yun-ceph-cinder023-128073 type host to crush map moved item id -5 name 'hh-yun-ceph-cinder023-128073' to location {root=default} in crush map added bucket hh-yun-ceph-cinder024-128074 type host to crush map moved item id -6 name 'hh-yun-ceph-cinder024-128074' to location {root=default} in crush map added bucket hh-yun-ceph-cinder025-128075 type host to crush map moved item id -7 name 'hh-yun-ceph-cinder025-128075' to location {root=default} in crush map added bucket hh-yun-ceph-cinder026-128076 type host to crush map moved item id -8 name 'hh-yun-ceph-cinder026-128076' to location {root=default} in crush map增加 OSD 到 CURSH MAP, 然后你就可以接收数据, 你同样可以重新编译 CURSH MAP, 添加 OSD 到磁盘, 添加主机到 CURSH MAP, 为磁盘添加设备
分配权重, 重新进行编译设定即可
#!/bin/bash LANG=en_US num=0 for ip in 240.30.128.55 240.30.128.56 240.30.128.57 240.30.128.73 240.30.128.74 240.30.128.75 240.30.128.76 do diskpart=`ssh $ip "fdisk -l | grep GPT | grep -v sda" | awk '{print $1}' | sort` for partition in $diskpart do hostname=`ssh $ip hostname -s` ceph osd crush add osd.$num 1.0 root=default host=$hostname let num++ done done