基于docker搭建cephfs分布式文件
目的
在一台机器上, 利用多块硬盘, 搭建一个cephfs文件系统. 具体来说就是1个mon, 1个mds, 1个mgr, 3个osd
注意
a. 使用vmware会很方便
b. 安装过程中会遇到很多问题,我都没有记录, 尽量安装下面步骤
环境准备
a. vmware虚拟机fedora30
b. 添加3块虚拟机硬盘 /dev/sdb /dev/sdc /dev/sdd (osd最少需要3个,需要有3块磁盘)
c. ceph容器版本 ceph/daemon:latest-luminous
搭建步骤
- 下载镜像
docker pull ceph/daemon:latest-luminous
挂载硬盘
vmware虚拟机添加硬盘很方便, 直接加就可以. fdisk -l 查看硬盘清理硬盘
# 格式化
mkfs.xfs /dev/sdb -f
mkfs.xfs /dev/sdc -f
mkfs.xfs /dev/sdd -f# 如果已经是xfs格式, 上面命令并不能清除已有数据, 需要用zap_device清理
docker run -d --net=host --name=osd0 --rm \
--privileged=true \
-v /dev/:/dev/ \
-e OSD_DEVICE=/dev/sde \ceph/daemon:latest-luminous zap_device
- 准备目录
/root/ceph
/root/ceph/etc
/root/ceph/lib
- 启动mon (监控节点必需)
docker run -d --net=host --name=mon \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib/:/var/lib/ceph/ \
-e MON_IP=192.168.10.125 \
-e CEPH_PUBLIC_NETWORK=192.168.10.0/24 \ceph/daemon:latest-luminous mon
- 启动mgr(可以不用)
docker run -d --net=host --name=mgr \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib/:/var/lib/ceph \
ceph/daemon:latest-luminous mgr
- 启动osd
# 修改-name和OSD_DEVICE启动三个osd
docker run -d --net=host --name=osd0 \
--privileged=true \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib/:/var/lib/ceph \
-v /dev/:/dev/ \
-e OSD_DEVICE=/dev/sdb \
-e OSD_TYPE=disk \ceph/daemon:latest-luminous osd
- 启动mds(cephfs系统必需)
# 一定要在osd之后创建启动, 因为CEPHFS_CREATE=1会创建cephfs文件系统,受osd数量影响
docker run -d --net=host --name=mds \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib/:/var/lib/ceph/ \
-e CEPHFS_CREATE=1 \ # 默认创建cephfs文件系统ceph/daemon:latest-luminous mds
- 进入mon查看ceph状态
# 进入容器
docker exec -it mon bash# 查看状态
[root@localhost /]# ceph -scluster:id: 4d74fd53-84e0-47e6-a06c-5418e4b3b653health: HEALTH_WARN1 MDSs report slow metadata IOs2 osds down34/51 objects misplaced (66.667%)Reduced data availability: 4 pgs inactive, 16 pgs staleDegraded data redundancy: 16 pgs undersizedtoo few PGs per OSD (4 < min 30)services:mon: 1 daemons, quorum localhostmgr: localhost(active)mds: cephfs-1/1/1 up {0=localhost=up:creating}osd: 5 osds: 2 up, 4 indata:pools: 2 pools, 16 pgsobjects: 17 objects, 2.19KiBusage: 4.01GiB used, 75.6GiB / 79.6GiB availpgs: 25.000% pgs not active34/51 objects misplaced (66.667%)12 stale+active+undersized+remapped4 stale+undersized+peered
- ceph调参: too few PGs per OSD (4 < min 30)
存储池的pg_num, pgp_num太小了, 设置大一点
ceph osd pool set cephfs_data pg_num 64
ceph osd pool set cephfs_data pgp_num 64
ceph osd pool set cephfs_metadata pg_num 32
ceph osd pool set cephfs_metadata pgp_num 32
- ceph调参: mds: cephfs-1/1/1 up {0=localhost=up:creating}
mds一直处在creating状态, 因为默认I/O需要的最小副本数是2,我们需要调成1
ceph osd pool set cephfs_metadata min_size 1
ceph osd pool set cephfs_data min_size 1
- 再看ceph状态, mds状态是active表示cephfs搭建好了
mds: cephfs-1/1/1 up {0=localhost=up:active}
- 挂载cephfs目录(直接mount)
# 获取key
cat /root/ceph/etc/ceph.client.admin.keyring
# 直接挂载
mount -t ceph 192.168.10.125:6789:/ /root/abc -o name=admin,secret=AQAvoctebqeuBRAAp+FoatmQ5CUlSlo8dmvGAg==
# 取消挂载
umount /root/abc
- 挂载cephfs目录(ceph-fuse)
# 安装ceph-fuse
yum install ceph-fuse# 挂载(-k指定key -c表示配置文件)
ceph-fuse -m 192.168.10.125:6789 /root/abc1 -k /root/ceph/etc/ceph.client.admin.keyring -c /root/ceph/etc/ceph.conf#取消挂载
umount /root/abc1
- 查看结果
df -h192.168.10.125:6789:/ 18G 0 18G 0% /root/abc
ceph-fuse 18G 0 18G 0% /root/abc1
此生必看的科学实验-水知道答案
印光大师十念法(胡小林主讲第1集)
来源
基于docker搭建cephfs分布式文件系统
基于docker搭建cephfs分布式文件相关推荐
- 基于Docker搭建hdfs分布式实验环境
理论知识 Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中, ...
- Linux系统Centos7 基于Docker搭建ELK分布式日志系统
ELK 基本概述 ELK是Elasticsearch.Logstash.Kibana的简称,常常用于部署分布式系统日志服务. Elasticsearch:全球实时全文搜索和分析引擎,提供搜集.分析.存 ...
- 基于 Docker 搭建 Hadoop 平台
基于 Docker 搭建完全分布式 Hadoop 平台 前言 环境 遇到的坑 折腾实录 一.构建镜像 1. 准备JDK和Hadoop 2. 构建centos-hadoop镜像 二.启动容器 三.集群搭 ...
- 基于Docker搭建分布式消息队列Kafka
本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...
- 树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
文章目录 一.基于Ubuntu搭建Docker和portainer 1.Docker简介 2.Ubuntu20.04安装Docker-ce 3.Ubuntu20.04安装Docker图形化界面port ...
- nginx搭建文件服务器脚本,基于docker搭建nginx文件服务器的方法步骤
1.在本机新建配置文件docker_nginx.conf server { listen 7070; server_name localhost; charset utf-8; location /f ...
- docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署
阅读本文约需要7分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot如何实现全链路调用 ...
- 基于docker 搭建mysql8.0主从复制
如何基于docker搭建mysql8.0主从复制从而实现读写分离 前言 1. docker的安装与mysql8.0镜像的打包这里不做详细介绍.以后有时间再出详细教程.安装好docker运行环境拉去my ...
- 基于Docker搭建单机版Mesos/Marathon
摘要: 本文介绍了基于Docker搭建单机版Mesos/Marathon的方法,Mesos/Marathon的所有组件均运行于单个容器中. GitHub地址: kiwenlau/single-meso ...
最新文章
- 第 5 章 Nova - 025 - OpenStack 通用设计思路
- 【hiho】38 二分·二分答案【二分答案】
- 留言本的漏洞挖掘总结
- OpenCV异常问题(一)
- 针对故障场景的血液,汗液和书写自动集成测试
- 关于.net项目从vs2003升级到2005的若干问题
- 工作65:导航栏使用
- 用户登录功能:说简单也困难
- flash动画制作成品_Flash如何制作沿曲线移动的箭头动画
- mysql中类型转换
- java中主函数_(基础)java中的主函数
- hibernate4平台搭建
- HDU 5857 - Median ( 查询模拟 + 思路 )
- 抖音高贵气质的签名_笑言 | 非主流时期的QQ签名和杜蕾斯文案有的一拼。
- git使用puttygen生成公钥私钥
- 华为云私有云解决方案的年终答卷
- 前端项目加载图片、视频插件
- 高并发之阿里云弹性伸缩的使用记录
- PHP利用ImageMagick实现PDF、PPT转图片
- html实现播放器下一集方法,本地化DPLAYER和CKPLAYER播放器自动下一集
热门文章
- java jit aot_JIT和AOT编译详解
- 修改 VS 注释快捷键不生效
- SpringSecurity+JWT实现登陆验证的思路(有一点点源码分析)
- window.close关闭当前页面
- VScode远程连接下,无法写入文件问题解决。
- 深度学习综述Yann LeCun
- 怎么让Nginx/apache支持shtml格式
- 融云发送图片消息_融云IM SDK集成,Server API 发送图片消息时,缩略图生成逻辑说...
- Angular+jointjs
- 计算机网络原理【八】之 网络安全基础