ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单机CEPH安装部署与对象存储

2022-06-18 10:06:06  阅读:187  来源: 互联网

标签:ceph 存储 deploy -- 单机 s3cmd CEPH zuiyumeng osd


个人记录,仅供参考
本文只记录操作流程以及我遇到的报错和解决手段,不包含CEPH知识
报错若没遇到可以不看,遇到其他问题可以去附录里的链接找找

1. 单机CEPH安装部署

(1) 准备

虚拟机:VMware WorkStation 16 Pro
系统:Ubuntu 20.04.3 LTS
安装ceph-deploy:

sudo apt -y install ceph-deploy

ceph-deploy是一个ceph的简易部署工具,先装这个

(2) 创建新集群

创建一个文件夹 myceph 在其内部打开终端输入:

ceph-deploy new zuiyumeng-virtual-machine

其中zuiyumeng-virtual-machine为我的主机名(后面改成了zuiyumeng),主机名可以输入hostname命令查看
这个命令可能会出现下面的报错1、2
修改配置
因为是单节点集群,需要修改配置把集群的副本数量设置为1,就是将以下内容加入ceph.conf中(在myceph中)

[global]
osd pool default size = 1
osd pool default min size = 1

报错1:

[ceph_deploy][ERROR ] RuntimeError: AttributeError: module 'platform' has no attribute 'linux_distribution'

原因是python3.7后不再支持platform.linux_distribution

解决:

修改/usr/lib/python3/dist-packages/ceph_deploy/hosts/remotes.py中对应位置为如下所示(需要对应权限,可以在终端中sudo vim修改)

def platform_information(_linux_distribution=None):
    """ detect platform information from remote host """
    """
    linux_distribution = _linux_distribution or platform.linux_distribution
    distro, release, codename = linux_distribution()
    """
    distro = release = codename = None
    try:
          linux_distribution = _linux_distribution or platform.linux_distribution
          distro, release, codename = linux_distribution()
    except AttributeError:
          pass

修改后如图:
image.png

报错2:

[zuiyumeng-virtual-machine][DEBUG ] IP addresses found: ['192.168.218.128']
[ceph_deploy.new][DEBUG ] Resolving host zuiyumeng-virtual-machine
[ceph_deploy][ERROR ] UnableToResolveError: Unable to resolve host: zuiyumeng-virtual-machine
解决:

不清楚什么情况,但试了一下,重新设置了一个主机名就好了

hostnamectl set-hostname zuiyumeng

其中zuiyumeng是新设置的主机名
然后输入

ceph-deploy new zuiyumeng

就成功了= =

(3) 安装ceph软件包

安装Ceph软件,这里安装L版本(luminous),命令:

ceph-deploy install --release luminous zuiyumeng

**初始化 mon **Ceph的整个集群的状态和配置信息等都是通过一个名为Monitor的集群管理的,因此首先需要启动Monitor服务。可以执行如下命令完成:

ceph-deploy mon create-initial 
ceph-deploy admin zuiyumeng

启动Monitor节点后Ceph集群就可以访问了,通过ceph -s命令可以查看集群的状态。
部署ceph mgr ceph mgr也是一个必须部署的组件,可以通过如下命令部署。

ceph-deploy mgr create zuiyumeng

**部署ceph osd **osd是Ceph中存储数据的节点,这里就构建一个只有一个逻辑卷的OSD实验一下。
部署前先查看当前节点可用磁盘信息(重点看/的信息而不是\的信息)

ceph-deploy disk list zuiyumeng

这个命令可能发生下面的报错3
可以看到有/dev/sda 、/dev/sdb等等
当然,我这次实验所有节点都在这个虚拟机上所以也可以直接使用命令lsblk查看磁盘
如果没有sdb的话需要去再挂载一个(保险起见,为了不影响sda,但我也没试过直接用sda),操作过程见报错3后面
确认有sdb后先擦除磁盘

ceph-deploy disk zap zuiyumeng /dev/sdb

这时可能出现报错4
之后就可以创建一个运行在整个盘上的OSD

ceph-deploy osd create zuiyumeng --data /dev/sdb

这时可能出现报错5
到此,CEPH以及安装并部署完毕了

报错3

[zuiyumeng][INFO  ] Running command: sudo fdisk -l
[ceph_deploy][ERROR ] Traceback (most recent call last):
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/util/decorators.py", line 69, in newfunc
[ceph_deploy][ERROR ]     return f(*a, **kw)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/cli.py", line 166, in _main
[ceph_deploy][ERROR ]     return args.func(args)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/osd.py", line 434, in disk
[ceph_deploy][ERROR ]     disk_list(args, cfg)
[ceph_deploy][ERROR ]   File "/usr/lib/python3/dist-packages/ceph_deploy/osd.py", line 375, in disk_list
[ceph_deploy][ERROR ]     if line.startswith('Disk /'):
[ceph_deploy][ERROR ] TypeError: startswith first arg must be bytes or a tuple of bytes, not str
[ceph_deploy][ERROR ] 
解决:
sudo vim /usr/lib/python3/dist-packages/ceph_deploy/osd.py

修改

if line.startswith('Disk /'):

if line.startswith(b'Disk /'):

我的在375行

VMware加载新磁盘

先关闭客户机(关机)
操作一图览,注意磁盘大小不用这么大,我最终好像就用了几十M,或者用完后跟据磁盘文件路径直接删除即可
image.png

报错4:

[zuiyumeng][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-volume lvm zap /dev/sdb
解决:

手动查看并删除原osd创建的lvm信息

dmsetup ls

删除ceph osd lvm映射关系

dmsetup remove ceph--7438e419--a9e4--430c--98e2--64c9a7506562-osd--block--01320314--335f--4b9c--b310--015b9aab8ff6

这里后面ceph-.....替换成你的遗留信息名字
删除lv

lvremove /dev/mapper/ceph--7438e419--a9e4--430c--98e2--64c9a7506562-osd--block--01320314--335f--4b9c--b310--015b9aab8ff6

删除相关文件(如果还有的话)

rm –rf /dev/ceph--7438e419--a9e4--430c--98e2--64c9a7506562

PS: 这个解决方法我找了5个小时....

报错5:

[zuiyumeng][WARNIN] Running command: /usr/bin/ceph-authtool --gen-print-key
[zuiyumeng][WARNIN] Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 41f1c070-8a32-43c6-ad44-964bf8757cbc
[zuiyumeng][WARNIN] Running command: lvcreate --yes -l 25 -n osd-block-41f1c070-8a32-43c6-ad44-964bf8757cbc ceph-d657d83a-bc89-4ebd-a0b7-24fa754d6c16
[zuiyumeng][WARNIN]  stderr: Volume group "ceph-d657d83a-bc89-4ebd-a0b7-24fa754d6c16" has insufficient free space (0 extents): 25 required.
[zuiyumeng][WARNIN] --> Was unable to complete a new OSD, will rollback changes
[zuiyumeng][WARNIN] Running command: /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring osd purge-new osd.0 --yes-i-really-mean-it
[zuiyumeng][WARNIN]  stderr: 2022-06-17T23:26:53.831+0800 7f2fee202700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.bootstrap-osd.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
[zuiyumeng][WARNIN] 2022-06-17T23:26:53.831+0800 7f2fee202700 -1 AuthRegistry(0x7f2fe8059360) no keyring found at /etc/ceph/ceph.client.bootstrap-osd.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,, disabling cephx
[zuiyumeng][WARNIN]  stderr: purged osd.0
[zuiyumeng][WARNIN] -->  RuntimeError: command returned non-zero exit status: 5
[zuiyumeng][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy.osd][ERROR ] Failed to execute command: /usr/sbin/ceph-volume --cluster ceph lvm create --bluestore --data /dev/sdb
[ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs
解决:

方法同报错4

2. 对象存储

**部署ceph rgw **

ceph-deploy rgw create zuiyumeng

验证rgb,浏览器访问 http://192.168.218.128:7480/
其中192.168.218.128为你文件夹中ceph.conf文件中mon_host后面的ip,端口号不变
可以看到输出以下内容

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

部署ceph mds

ceph-deploy mds create zuiyumeng

查看 mds 状态

ceph mds stat

可以看到输出

 1 up:standby

**创建ceph账号 **

radosgw-admin user create --uid=admin --display-name=admin --admin

可以看到输出的(你的值和我的不一样),这两个等下要用

"access_key": "02ZC6NZW5FMET8FVDIAW",
"secret_key": "NuO951B79lBlA72qlUGMBMIBsYDtA5wVfr2omdRj"

可以随时用

radosgw-admin user info --uid admin

查看这两个key
使用s3cmd工具管理ceph桶

sudo apt-get install s3cmd

配置

s3cmd --configure

输入刚才的两个key,其他的全部回车,最后会有retry....填n,save.....填y
修改配置

vim /root/.s3cfg

修改以下内容:

host_base = 192.168.218.128:7480
host_bucket = 192.168.218.128:7480/%(bucket)
use_https = False

使用对象存储
执行创建桶操作

s3cmd mb s3://test

查看桶是否创建成功

s3cmd ls

上传一个文件夹到刚才的桶中(在存有文件的文件夹打开终端)

s3cmd put /home/zuiyumeng/文档/tmp/* s3://test/

从桶中下载文件(需要先创建文件夹)

s3cmd get s3://test/* /home/zuiyumeng/文档/tmp1/

常用命令

1、配置,主要是 Access Key ID 和 Secret Access Key
s3cmd --configure
2、列举所有 Buckets。(bucket 相当于根文件夹)
s3cmd ls
3、创建 bucket,且 bucket 名称是唯一的,不能重复,默认创建的 bucket 是公开的。
s3cmd mb s3://my-bucket-name
4、删除空 bucket
s3cmd rb s3://my-bucket-name
5、列举 Bucket 中的内容
s3cmd ls s3://my-bucket-name
6、上传
s3cmd put file.txt s3://my-bucket-name/file.txt
支持批量上传,直接指定多个文件,如
s3cmd put t.py s3://tccpoc/t.py up.py s3://tccpoc/up.py
如果上传终断,比如ctrl+c,会显示upload-id,按照指示,带上`--upload-id`就可以实现断点上传
7、上传并将权限设置为所有人可读
s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt
--acl-private,也可以是私有
8、批量上传文件
s3cmd put ./* s3://my-bucket-name/
9、下载文件
s3cmd get s3://my-bucket-name/file.txt file.txt
支持批量下载,直接指定多个文件,如
s3cmd get s3://tccpoc/t.py s3://tccpoc/up.py
如果下载终断,比如ctrl+c,带上参数`--continue`,可以实现断点下载
10、批量下载
s3cmd get s3://my-bucket-name/* ./
11、删除文件,
s3cmd del s3://my-bucket-name/file.txt
支持批量删除,直接指定多个 bucket 对象,如
s3cmd del s3://my-bucket-name/file.txt s3://my-bucket-name/file2.txt
12、来获得对应的bucket所占用的空间大小
s3cmd du -H s3://my-bucket-name

附录:主要参考文章

单机版Ceph环境部署,Linux平台
Ceph分布式存储系列(三):Ceph集群在线扩容及OSD相关命令
k8s学习笔记——ceph集群安装
Rook Ceph OSD异常,格式化osd硬盘重新挂载
Ceph 基础篇 - 对象存储使用
Ceph对象存储单机部署
s3cmd使用介绍

标签:ceph,存储,deploy,--,单机,s3cmd,CEPH,zuiyumeng,osd
来源: https://www.cnblogs.com/zuiyumeng/p/16387733.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有