在Ubuntu18.04上安装部署使用Ceph块存储。
环境准备
配置节点名称
配置集群各节点的hostname,互相可以通过hostname来解析节点ip,不需要通过dns
配置免密登录
配置节点ssh免密登录
添加安装源
添加安装源。如果使用系统默认的安装源ceph-deploy版本太低,后续操作会有问题。
$ wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
$ echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list # 选择安装的Ceph版本是 luminous
创建集群
安装ceph-deploy
$ sudo apt update
$ sudo apt -y install ceph-deploy
创建配置文件和key文件
$ mkdir myceph
$ cd myceph
$ ceph-deploy new ubuntu1804-1 # 指定节点名称
修改ceph.conf
先配置单节点ceph集群,因此将集群的副本数量设置为1
[global]
osd pool default size = 1
osd pool default min size = 1
安装ceph软件
$ ceph-deploy install --release luminous ubuntu1804-1
初始化mon
初始化mon,生成相关文件。
$ ceph-deploy mon create-initial # 可以指定多个host。
推送keyring
将当前目录下的ceph.client.admin.keyring推送到各个远程主机的/etc/ceph目录下。
$ ceph-deploy admin ubuntu1804-1 # 可以指定多个host。
至此,可以 ceph -s 查看集群
部署mgr
$ ceph-deploy mgr create ubuntu1804-1 // 可以指定多个host。
部署osd
最简单的情况就是一块硬盘全部给一个osd管理,例如sdb是一块空闲硬盘
$ ceph-deploy osd create ubuntu1804-1:/dev/sdb # 将硬盘sdb创建为osd
$ sudo ceph osd tree # 查看osd
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.00479 root default
-3 0.00479 host ubuntu1804-1
0 hdd 0.00479 osd.0 up 1.00000 1.00000
$ lsblk
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 49G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 24.5G 0 lvm /
sdb 8:16 0 5G 0 disk
├─sdb1 8:17 0 100M 0 part /var/lib/ceph/osd/ceph-0 # 数据data分区
└─sdb2 8:18 0 4.9G 0 part # 日志journal分区。 create osd 时不指定分区,则默认将data和journal放在同一个盘上。
查看集群
一个单节点的Ceph集群已经OK
$ sudo ceph -s
cluster:
id: 1c4f5996-dee5-4b25-8dd1-05a3dd1cdbb7
health: HEALTH_OK
services:
mon: 1 daemons, quorum ubuntu1804-1
mgr: ubuntu1804-1(active)
osd: 1 osds: 1 up, 1 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 1.00GiB used, 3.90GiB / 4.90GiB avail
pgs:
新增mon节点
修改配置
配置文件的global字段,增加扩容信息
- mon_initial_members 和 mon_host 补充新mon节点
- public network 补充描述public network的网段
$ vi /etc/ceph/ceph.conf
[global]
fsid = 1c4f5996-dee5-4b25-8dd1-05a3dd1cdbb7
mon_initial_members = ubuntu1804-1, ubuntu1804-2
mon_host = 192.168.195.128, 192.168.195.129
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 1
osd pool default min size = 1
public network = 192.168.195.0/24
推送配置
把配置文件推送到集群的所有节点
$ ceph-deploy --overwrite-conf config push ubuntu1804-1 ubuntu1804-2
执行新增操作
$ ceph-deploy mon add node2
查询结果
$ ceph -s
cluster:
id: 1c4f5996-dee5-4b25-8dd1-05a3dd1cdbb7
health: HEALTH_OK
services:
mon: 2 daemons, quorum ubuntu1804-1,ubuntu1804-2 # mon扩容到2节点
mgr: ubuntu1804-1(active)
osd: 2 osds: 1 up, 1 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 1.01GiB used, 3.90GiB / 4.90GiB avail
pgs:
新增osd
新创建osd
$ ceph-deploy --overwrite-conf osd create ubuntu1804-2:/dev/sdb
[ubuntu1804-2][INFO ] checking OSD status...
[ubuntu1804-2][DEBUG ] find the location of an executable
[ubuntu1804-2][INFO ] Running command: /usr/bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ubuntu1804-2 is now ready for osd use.
查询节点disk状态
$ ceph-deploy disk list ubuntu1804-2
[ubuntu1804-2][DEBUG ] /dev/sda :
[ubuntu1804-2][DEBUG ] /dev/sda1 other, 21686148-6449-6e6f-744e-656564454649
[ubuntu1804-2][DEBUG ] /dev/sda2 other, ext4, mounted on /boot
[ubuntu1804-2][DEBUG ] /dev/sda3 other, LVM2_member
[ubuntu1804-2][DEBUG ] /dev/sdb :
[ubuntu1804-2][DEBUG ] /dev/sdb1 ceph data, prepared, cluster ceph, block /dev/sdb2
[ubuntu1804-2][DEBUG ] /dev/sdb2 ceph block, for /dev/sdb1
激活data分区
$ ceph-deploy osd activate ubuntu1804-2:/dev/sdb1 # 激活
$ ceph osd tree # 新增id=1的osd.1
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.00958 root default
-3 0.00479 host ubuntu1804-1
0 hdd 0.00479 osd.0 up 1.00000 1.00000
-5 0.00479 host ubuntu1804-2
1 hdd 0.00479 osd.1 up 1.00000 1.00000
$ ceph osd status # 新增id=1的osd
+----+--------------+-------+-------+--------+---------+--------+---------+-----------+
| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |
+----+--------------+-------+-------+--------+---------+--------+---------+-----------+
| 0 | ubuntu1804-1 | 1030M | 3988M | 0 | 0 | 0 | 0 | exists,up |
| 1 | ubuntu1804-2 | 1030M | 3988M | 0 | 0 | 0 | 0 | exists,up |
+----+--------------+-------+-------+--------+---------+--------+---------+-----------+
activate曾出现报错,可能是以前有osd.1相关信息:
[ubuntu1804-2][WARNIN] command_with_stdin: Running command with stdin: ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 2cb6d197-1e2b-4731-939a-7bae1bab1d49
[ubuntu1804-2][WARNIN] command_with_stdin:
[ubuntu1804-2][WARNIN] command_with_stdin: Error EEXIST: entity osd.1 exists but key does not match
[ubuntu1804-2][WARNIN]
[ubuntu1804-2][WARNIN] mount_activate: Failed to activate
解决方法是删除以前的osd.1相关信息:
$ ceph auth del osd.1
$ ceph osd rm 1
参考资料
https://zhuanlan.zhihu.com/p/67832892 单机版Ceph环境部署,Linux平台
http://t.zoukankan.com/chris-cp-p-4822655.html ceph基本操作整理
https://www.cnblogs.com/sisimi/p/7693130.html mon节点扩容