ceph客户端配置自动挂载存储服务
1. 安装支持ceph的内核模块
可选:
centos/ubuntu:
yum install -y ceph-common
或
apt install -y ceph-common
2. 拷贝认证密钥
cephadmin@ceph-deploy:~/ceph-cluster$ sudo scp ceph.conf ceph.client.admin.keyring root@<客户端服务器IP>:/etc/ceph
测试获取集群信息:
客户端测试是否能够获取集群信息:
[root@ceph-client-centos ~]# ceph -s
cluster:
id: fbcd7dfd-c0b1-420e-a1c3-5eb5002c0cd3
health: HEALTH_WARN
clock skew detected on mon.ceph-mon02
services:
mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 43m)
mgr: ceph-mgr01(active, since 25h), standbys: ceph-mgr02
osd: 8 osds: 8 up (since 44m), 8 in (since 31h)
data:
pools: 3 pools, 97 pgs
objects: 39 objects, 30 MiB
usage: 284 MiB used, 2.3 TiB / 2.3 TiB avail
pgs: 97 active+clean
能够获取说明没问题了
3. 创建存储资源。特性配置
cephadmin@ceph-deploy:~$ rbd create myimg1 --size 5G --pool myrbd1
使用myrbd0存储池创建一个myimg0的块设备
cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg1 --size 5G --pool myrbd1
创建rbd的时候添加特性:
cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering
检查:
cephadmin@ceph-deploy:~$ rbd ls --pool myrbd1
myimg1
myimg2
关系图:
Ceph 集群
├── 存储池(Pool)
├── myrbd1
├── myimg1(RBD 映像)
└── myimg2(RBD 映像)
#查看指定rbd信息
cephadmin@ceph-deploy:~$ rbd --image myimg1 --pool myrbd1 info
rbd image 'myimg1':
size 5 GiB in 1280 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 6251552d851b
block_name_prefix: rbd_data.6251552d851b
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten #配置的特性
op_features:
flags:
create_timestamp: Wed May 29 21:50:49 2024
access_timestamp: Wed May 29 21:50:49 2024
modify_timestamp: Wed May 29 21:50:49 2024
cephadmin@ceph-deploy:~/ceph-cluster$ rbd --image myimg2 --pool myrbd1 info
rbd image 'myimg2':
size 3 GiB in 768 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 1deb2b0c736e
block_name_prefix: rbd_data.1deb2b0c736e
format: 2
features: layering
op_features:
flags:
create_timestamp: Wed May 29 22:29:56 2024
access_timestamp: Wed May 29 22:29:56 2024
modify_timestamp: Wed May 29 22:29:56 2024
特性的关闭[可选]:
cephadmin@ceph-deploy:~/ceph-cluster$ rbd feature disable myrbd1/myimg1 object-map fast-diff deep-flatten
检查当前状态:
cephadmin@ceph-deploy:~$ ceph df
--- RAW STORAGE ---
CLASS SIZE AVAIL USED RAW USED %RAW USED
ssd 2.3 TiB 2.3 TiB 296 MiB 296 MiB 0.01
TOTAL 2.3 TiB 2.3 TiB 296 MiB 296 MiB 0.01
--- POOLS ---
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
.mgr 1 1 577 KiB 2 1.7 MiB 0 760 GiB
myrbd1 11 64 405 B 7 48 KiB 0 760 GiB
#这里些的760G 实际上是 2.3T 除以3得到的。因为是三副本
可选操作:
查看是不是3副本:
cephadmin@ceph-deploy:~$ ceph osd pool get myrbd1 size
size: 3
修改副本数:
cephadmin@ceph-deploy:~$ ceph osd pool set myrbd1 size 3
3. 客户端进行测试
客户端测试是否能够获取集群信息:
[root@ceph-client-centos ~]# ceph -s
cluster:
id: fbcd7dfd-c0b1-420e-a1c3-5eb5002c0cd3
health: HEALTH_WARN
clock skew detected on mon.ceph-mon02
services:
mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 43m)
mgr: ceph-mgr01(active, since 25h), standbys: ceph-mgr02
osd: 8 osds: 8 up (since 44m), 8 in (since 31h)
data:
pools: 3 pools, 97 pgs
objects: 39 objects, 30 MiB
usage: 284 MiB used, 2.3 TiB / 2.3 TiB avail
pgs: 97 active+clean
4.客户端映射ceph存储到本地:
1. 手动映射:
把myrbd1映射磁盘到本机:
[root@ceph-client-centos ~]# rbd -p myrbd1 map myimg1
/dev/rbd0
[root@ceph-client-centos ~]# rbd -p myrbd1 map myimg2
/dev/rbd1
检查现有ceph映射的磁盘
[root@ceph-client-centos ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 190M 0 part /boot
└─sda2 8:2 0 99.8G 0 part /
sr0 11:0 1 1024M 0 rom
rbd0 253:0 0 5G 0 disk
rbd1 253:16 0 3G 0 disk
取消映射[可选]:
rbd unmap /dev/rbd1
查看:
[root@ceph-client-centos ~]# ceph osd pool ls
.mgr
myrbd1
[root@ceph-client-centos ~]# rbd ls --pool myrbd1
myimg1
myimg2
3. 自动映射(配置为系统服务)
3.1. 创建配置文件,写入挂载点镜像等
[root@ceph-client-centos ~]# cat /etc/rbd_mount.conf
myrbd1
myimg1 /mysql-1
myimg2 /mysql-1
3.2. 创建挂载脚本
[root@ceph-client-centos ~]# cat /etc/init.d/ceph-mount-rbd.sh
内容如下:
#-------------------------------------------------------------------#
#!/bin/bash
# chkconfig: 345 20 80
# description: 自动挂载 Ceph RBD 设备
log_file="/var/log/ceph-mount.log"
mapping_file="/etc/rbd_mapping"
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$log_file"
}
log "脚本开始运行"
case "$1" in
start)
log "读取配置文件并挂载 RBD 设备"
if [ ! -f "$mapping_file" ]; then
touch "$mapping_file"
fi
pool=""
declare -A mappings
# 读取现有的映射关系
if [ -s "$mapping_file" ]; then
while read -r line; do
device=$(echo "$line" | awk '{print $1}')
mount_point=$(echo "$line" | awk '{print $2}')
mappings[$mount_point]=$device
done < "$mapping_file"
fi
# 清空映射文件
> "$mapping_file"
# 读取配置文件
while read -r line; do
log "读取行:$line"
# 忽略注释行和空行
if [[ $line =~ ^# ]] || [[ -z $line ]]; then
log "跳过行:$line"
continue
fi
# 解析配置
if [[ $line =~ ^\ *([^\ ]+)\ *$ ]]; then
pool=${BASH_REMATCH[1]}
log "设置 pool 为:$pool"
elif [[ $line =~ ^\ *([^\ ]+)\ *([^\ ]+)\ *$ ]]; then
image=${BASH_REMATCH[1]}
mount_point=${BASH_REMATCH[2]}
log "挂载 Ceph RBD 设备 $image 到 $mount_point"
# 如果没有映射,进行映射
mapped_device=$(rbd map -p "$pool" "$image" --id admin --keyring /etc/ceph/ceph.client.admin.keyring)
if [ $? -ne 0 ]; then
log "RBD 映射失败"
exit 1
fi
log "映射到的设备:$mapped_device"
if [ -n "$mapped_device" ]; then
# 等待设备出现在 /dev 中
udevadm settle
if [ ! -e "$mapped_device" ]; then
log "设备 $mapped_device 不存在,等待 udev 处理"
sleep 5
fi
if [ ! -e "$mapped_device" ]; then
log "设备 $mapped_device 仍然不存在,映射失败"
exit 1
fi
# 记录映射
echo "$mapped_device $mount_point" >> "$mapping_file"
# 检查是否已格式化
fs_type=$(blkid -o value -s TYPE "$mapped_device")
if [ -z "$fs_type" ]; then
log "设备未格式化,正在格式化设备:$mapped_device"
mkfs.ext4 "$mapped_device"
else
log "设备已格式化,文件系统类型:$fs_type"
fi
# 挂载设备
mkdir -p "$mount_point"
mount "$mapped_device" "$mount_point"
if [ $? -eq 0 ]; then
log "挂载成功:$mapped_device 到 $mount_point"
else
log "挂载失败:$mapped_device 到 $mount_point"
exit 1
fi
else
log "无法找到映射的设备"
exit 1
fi
else
log "无效的配置行:$line"
fi
done < /etc/rbd_mount.conf
;;
stop)
log "停止所有挂载并解除映射"
# 读取映射文件
if [ -s "$mapping_file" ];then
while read -r line; do
device=$(echo $line | awk '{print $1}')
mount_point=$(echo $line | awk '{print $2}')
# 卸载设备
umount "$mount_point"
if [ $? -eq 0 ];then
log "卸载成功:$device 从 $mount_point"
else
log "卸载失败:$device 从 $mount_point"
fi
# 解除映射
rbd unmap "$device"
if [ $? -eq 0 ]; then
log "解除映射成功:$device"
else
log "解除映射失败:$device"
fi
done < "$mapping_file"
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#-------------------------------------------------------------------#
chmon a+x /etc/init.d/ceph-mount-rbd.sh
创建服务启动配置文件:
vim /etc/systemd/system/ceph-rbd-mount.service
#-------------------------------------------------------------------#
[Unit]
Description=Ceph RBD 自动挂载服务
After=network.target
[Service]
Type=oneshot
ExecStart=/etc/init.d/ceph-mount-rbd.sh start
ExecStop=/etc/init.d/ceph-mount-rbd.sh stop
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
#-------------------------------------------------------------------#
systemctl daemon-reload
systemctl enable rbd-mount.service
systemctl start rbd-mount.service
[root@ceph-client-centos ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda2 100G 3.1G 97G 4% /
/dev/sda1 187M 109M 78M 59% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/rbd0 4.8G 20M 4.6G 1% /mysql-1
/dev/rbd1 2.9G 9.0M 2.8G 1% /mysql-2
[root@ceph-client-centos ~]# cat /etc/rbd_m
rbd_mapping rbd_mount.conf
[root@ceph-client-centos ~]# cat /etc/rbd_mount.conf
myrbd1
myimg1 /mysql-1
myimg2 /mysql-2
ceph客户端配置自动挂载存储服务的更多相关文章
- 『学了就忘』Linux文件系统管理 — 60、Linux中配置自动挂载
目录 1.自动挂载 2.如何查询系统下每个分区的UUID 3.配置自动挂载 4./etc/fstab文件修复 上一篇文章我们说明了手动分区讲解,对一块新硬盘进行了手动分区和挂载. 但是我们发现重启系统 ...
- 怎样禁止Ceph OSD的自动挂载
前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...
- centos7配置nfs共享存储服务
nfs 是一种网络文件系统,需要依赖rpc进行过程调度 注意nfs只验证id,验证用户名,并且只能在类unix os上进行文件共享服务,由于它的脆弱的验证机制,所以不适宜在internet上工作,在内 ...
- Linux开机自动挂载存储
今天有个系统的开发人员跟我说,他们测试系统出现问题重启了服务器后就发现找不到存储了. 唉,不用说了.肯定没有自动加载存储呗.一个堂堂的技术顾问,一天4-5K工资的人连这个操作都不会啊?忍了... 登录 ...
- Linux开机自动挂载存储的两种方式
登录服务器,给查看了下,发现确实是没有自动加载,df -h只能显示本地硬盘的分区,fdisk -l 还是能看到存储空间,这说明这个服务器连接存储是木有问题的. 输入history | grep mou ...
- RHEL7-openldap安装配置三(客户端自动挂载配置)
前两篇文章我们配置好了LDAP服务端和LDAP客户端.这篇文章将讲述从LDAP客户机服务器上挂载NFS服务器上共享的目录. 1.LDAP服务器上NFS共享配置 1.1 NFS服务也可以单独搭建在另外一 ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —9.块存储服务(cinder)部署配置
块存储服务部署相关块存储服务(cinder)为实例提供块存储.存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的.还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等.典型 ...
- 配置Linux自动挂载
使用mount命令来挂载硬件,在Linux重启后这些挂载信息会丢失,因此对应磁盘这类硬件,需要配置自动挂载来保证系统重启时进行自动挂载. 自动挂载信息保存在文件/etc/fstab文件中 查看该文件的 ...
- Samba共享及自动挂载测试
要求: 1.在server0服务器上安装配置samba,工作组为STAFF,共享目录/smb1, 共享名smb1,仅允许192.168.100.0/24网段中的主机访问.samba用户user1可以读 ...
- Linux:SAMBA共享、NFS共享、Autofs自动挂载
SAMBA.NFS共享区别 NFS开源文件共享程序:NFS(NetworkFile System)是一个能够将多台Linux的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linu ...
随机推荐
- .NET Emit 入门教程:第六部分:IL 指令:8:详解 ILGenerator 指令方法:类型转换指令
前言: 经过前面几篇的学习,我们了解到指令的大概分类,如: 参数加载指令,该加载指令以 Ld 开头,将参数加载到栈中,以便于后续执行操作命令. 参数存储指令,其指令以 St 开头,将栈中的数据,存储到 ...
- “AI虚拟数字人+线下大屏互动”升级智能人机交互服务!
如今AIGC 强势爆发. ChatGPT 语言大模型横空出世,使得数字人的"大脑"水平得到了极大提升,AI技术赋能下的虚拟数字人拥有了更加精准的语言表达.思考逻辑.帮助各个行业实现 ...
- 【进阶篇】Java 实际开发中积累的几个小技巧(二)
目录 前言 六.自定义注解 6.1定义注解 6.2切面实现 6.3业务使用 七.抽象类和接口 7.1隔离业务层与 ORM 层 7.2隔离子系统的业务实现 7.3选择对比 文章小结 前言 笔者目前从事一 ...
- ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running
MMdetection多卡训练常遇到的两个错误,百度无果,没解决,去github里mmdetection的issue模块搜索了一下找到正解. 这里记录一下,方便后者. 1️⃣ ImportError: ...
- Spring JDBCTemplet通用RowMapper帮助类
1 import java.lang.reflect.Method; 2 import java.math.BigDecimal; 3 import java.math.BigInteger; 4 i ...
- 力扣620(MySQL)-有趣的电影(简单)
题目: 某城市开了一家新的电影院,吸引了很多人过来看电影.该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述. 作为该电影院的信息部主管,您需要编写一个 SQL查 ...
- 融合数据库生态:利用 EventBridge 构建 CDC 应用
简介: 近期,EventBridge 事件流已经支持了基于阿里云 DTS服务的 CDC 能力.本文将从 CDC.CDC 在 EventBridge 上的应用以及若干最佳实践场景等方面,为大家介绍如何利 ...
- 阿里云荣获可信云容器安全能力先进级认证, ACK/ACR为企业级安全护航
阿里云关注企业级用户的Kubernetes生产落地痛点,结合企业生产环境的大量实践,全面帮助企业真正落地云原生架构.安全侧问题,是众多大中型或金融领域企业的核心关注点. 端到端云原生安全架构 早在20 ...
- 好云推荐官丨飞天加速之星怎样选择云服务器ECS?
编者按:本文来自"好云推荐官"活动的技术博主投稿,作者(昵称天狼)曾入选首届"飞天加速之星",获得飞天人气奖. 你是否还在苦苦地寻找一家合适的云厂商,寻找合 ...
- Flink 在唯品会的实践
简介: Flink 在唯品会的容器化实践应用以及产品化经验. 唯品会自 2017 年开始基于 k8s 深入打造高性能.稳定.可靠.易用的实时计算平台,支持唯品会内部业务在平时以及大促的平稳运行.现平台 ...