当前位置: 首页 > news >正文

【Ceph Block Device】块设备挂载使用

文章目录

  • 前言
  • 创建pool
  • 创建user
  • 创建image
  • 列出image
  • 检索image信息
  • 调整image大小
    • 增加image大小
    • 减少image大小
  • 删除image
    • 从pool中删除image
    • 从pool中“延迟删除”image
    • 从pool中移除“延迟删除的image”
  • 恢复image
    • 恢复指定pool中延迟删除的image
    • 恢复并重命名image
  • 映射块设备
  • 格式化image
  • 挂载使用

众所周知,Ceph集群可以向客户端提供对象存储服务(Object Storage)、块设备服务(Block Device)和文件系统服务(File System)。

本文将介绍搭建Ceph集群后如何使用块设备服务。使用 rbd 命令可以创建、查看、修改和删除块设备映像。您还可以使用它来克隆映像、创建快照、将映像回滚到快照、查看快照等。

要使用Ceph Block Device命令,首先必须要能访问正在运行的Ceph集群。

前言

img

Kernel modules can use Linux page caching. For librbd-based applications, Ceph supports RBD Caching.
内核模块可以使用Linux页面缓存。对于基于 librbd 的应用程序,Ceph支持RBD Caching。

要在Ceph中使用块设备服务,有如下几个步骤:

  1. 创建pool,关联RBD应用程序。
  2. 【可选】创建Ceph用户,授予对pool和image的权限,也可以直接使用admin。
  3. 创建image,个人理解image相当于在pool中开辟出的磁盘空间,可以像操作块设备一样,对其进行格式化、挂载等操作。
  4. 映射块设备。
  5. 格式化。
  6. 挂载使用。

创建pool

  1. 使用ceph工具创建pool池

    ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] [replicated] [crush-rule-name] [expected-num-objects]
    

    版本差异Ceph reefCeph nautilus

    ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-rule-name] [expected-num-objects]
    

    在nautilus版本中,pg_num是必须的,而在最新的reef版本中是可选的。

    # rule-single是crush rule名称,可以自定义
    ceph osd crush rule create-replicated rule-single default osd # 0 0分别代表pg_num和pgp_num,如果设置为0,代表使用的是/etc/ceph/ceph.conf中配置的osd_pool_default_pg_num和osd_pool_default_pgp_num
    ceph osd pool create pool1 0 0 rule-single 
    
  2. 使用rbd工具初始化pool池以供RBD使用

    rbd pool init <pool-name>
    

    如果在命令中未指定pool-name,则默认创建名为‘rbd’的pool池。

  3. 将pool与应用程序关联

    ceph osd pool application enable {pool-name} {application-name}
    

    CephFS使用应用程序名称 cephfs ,RBD使用应用程序名称 rbd ,RGW使用应用程序名称 rgw

    例如:

    ceph osd pool application enable pool1 rbd
    

创建user

除非另有说明,否则 rbd 命令使用Ceph用户ID admin 访问Ceph集群。 admin Ceph用户ID允许对群集进行完全管理访问。Ceph建议创建低权限的用户访问Ceph集群,这样的用户称为“块设备用户(block device user)”或“Ceph用户(Ceph user)”。

要创建Ceph用户,使用 ceph auth get-or-create 命令指定Ceph用户ID名称、monitor caps(capabilities)和OSD caps(capabilities):

ceph auth get-or-create client.{ID} mon 'profile rbd' osd 'profile {profile name} [pool={pool-name}][, profile ...]' mgr 'profile rbd [pool={pool-name}]'

例如,创建名为 qemu 的Ceph用户ID,该用户ID对池 vms 具有读写访问权限,对池 images 具有只读访问权限,请运行以下命令:

ceph auth get-or-create client.qemu mon 'profile rbd' osd 'profile rbd pool=vms, profile rbd-read-only pool=images' mgr 'profile rbd pool=images'

ceph auth get-or-create 命令的输出是指定Ceph用户ID的密钥环,可以写入 /etc/ceph/ceph.client.{ID}.keyring

创建image

在将块设备添加到节点之前,必须在Ceph存储集群中为其创建映像。要创建块设备映像,请运行以下格式的命令:

rbd create --size {megabytes} {pool-name}/{image-name}

例如,要创建一个名为 image11 的1GB映像,并将信息存储在名为 pool1 的池中,请运行以下命令:

rbd create --size 1024 pool1/image11

如果在创建映像时未指定池,则映像将存储在默认池 rbd 中。

列出image

要列出指定池中的数据块设备,运行如下命令:

rbd ls {poolname}

例如,列出pool1池中的image:

rbd ls pool1

要列出指定池中的“延迟删除”的块设备,运行如下命令:

rbd trash ls {poolname}

例如:

rbd trash ls pool1

检索image信息

要从指定image中检索信息,运行如下命令:

rbd info {image-name}

例如:

rbd info image11

要从指定pool中检索指定的image信息,运行如下命令:

rbd info {pool-name}/{image-name}

例如:

rbd info pool1/image11

调整image大小

Ceph Block设备映像是精简资源调配的。在您开始向它们保存数据之前,它们实际上并不使用任何物理存储。但是,它们确实有您使用 --size 选项设置的最大容量。如果要增加(或减少)Ceph Block设备映像的最大大小,运行如下命令:

增加image大小

rbd resize --size 2048 image11

减少image大小

rbd resize --size 2048 image11 --allow-shrink

删除image

从pool中删除image

rbd rm {pool-name}/{image-name}

例如:

rbd rm pool1/image11	

【遇到的问题】
[root@ceph01 ~]# rbd rm pool1/image11
2023-10-10 03:27:54.954 ffd2ff2700 -1 librbd::image::PreRemoveRequest: 0xaab162a620 handle_exclusive_lock: cannot obtain exclusive lock - not removing
Removing image: 0% complete…failed.
rbd: error: image still has watchers
This means the image is still open or the client using it crashed. Try again after closing/unmapping it or waiting 30s for the crashed client to timeout.

删除image前需要先解除映射

[root@ceph01 ~]# rbd unmap pool1/image11
rbd: sysfs write failed
rbd: unmap failed: (16) Device or resource busy

rbd unmap -o force pool1/image11

从pool中“延迟删除”image

”延迟删除“pool中的块设备(相当于将其移动到“回收站/垃圾桶”并在稍后删除),运行如下命令:

rbd trash mv {pool-name}/{image-name}

例如:

rbd trash mv pool1/image11

从pool中移除“延迟删除的image”

rbd trash rm {pool-name}/{image-}

例如:

rbd trash rm pool1/image11

恢复image

要恢复默认rbd池中的延迟删除的块设备image,运行如下命令:

rbd trash restore {image-id}

恢复指定pool中延迟删除的image

rbd trash restore {pool-name}/{image-id}

恢复并重命名image

rbd trash restore pool1/image11 --image new-name

映射块设备

rbd device map pool1/image11

[root@ceph01 mnt]# rbd map pool1/image11
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with “rbd feature disable pool1/image11 object-map fast-diff deep-flatten”.
In some cases useful info is found in syslog - try “dmesg | tail”.
rbd: map failed: (6) No such device or address

出现这种错误的原因是OS kernel不支持块设备image的一些特性,导致映射失败,按照提示把部分不支持的特性disable掉再映射。

rbd feature disable pool1/image11 object-map fast-diff deep-flatten
# 查看映射关系
rbd showmapped
或
rbd device list

使用lsblk命令可以看到出现了rbd0设备,但是还未挂载。

格式化image

mkfs.ext4 /dev/rbd0

挂载使用

mkdir /mnt/ceph-block-device-rbd0
mount /dev/rbd0 /mnt/ceph-block-device-rbd0/

如果不想使用,则可以执行如下命令:

umount /dev/rbd0
rbd device unmap pool1/image11
rm -rf /mnt/ceph-block-device-rbd0/

相关文章:

【Ceph Block Device】块设备挂载使用

文章目录 前言创建pool创建user创建image列出image检索image信息调整image大小增加image大小减少image大小 删除image从pool中删除image从pool中“延迟删除”image从pool中移除“延迟删除的image” 恢复image恢复指定pool中延迟删除的image恢复并重命名image 映射块设备格式化i…...

Arbitrum Stylus 的工作原理

理解 Arbitrum 如何协调 EVM 和 WASM 的共存是至关重要的。这不仅仅是拥有两个独立的引擎&#xff1b;这是一种增强两者优势的协同关系。 Arbitrum 的独特架构允许 EVM 和 WASM 之间进行无缝和同步的操作&#xff0c;这要归功于其统一的状态、跨 VM 调用和兼容的经济模型。 用…...

nextjs构建服务端渲染,同时使用Material UI进行项目配置

一、创建一个next项目 使用create-next-app来启动一个新的Next.js应用&#xff0c;它会自动为你设置好一切 运行命令: npx create-next-applatest 执行结果如下&#xff1a; 启动项目&#xff1a; pnpm dev 执行结果&#xff1a; 启动成功&#xff01; 二、安装Mater…...

Java 使用 Easyexcel 导出大量数据

读Excel | Easy Excel 1、 我遇到的数据量超级大&#xff0c;使用传统的POI方式来完成导入导出很明显会内存溢出&#xff0c;并且效率会非常低&#xff1b;2、 数据量大直接使用select * from tableName肯定不行&#xff0c;一下子查出来300w条数据肯定会很慢&#xff1b;3、 …...

高效防汛决策:山海鲸可视化系统助力城市防洪

随着全球气候的变化&#xff0c;自然灾害如洪水、台风等频发&#xff0c;防范洪水成为城市管理者和居民们亟待解决的重要问题。 洪水的威胁 洪水是自然界的杀手之一&#xff0c;不仅会造成大量的财产损失&#xff0c;还可能危害人们的生命安全。因此&#xff0c;预测、监测和有…...

易点云CFO向征:CFO不能只讲故事,价值创造才是核心

作者 | 曾响铃 文 | 响铃说 在今年6月初&#xff0c;也是易点云上市6天后&#xff0c;《巴伦周刊》正式启动评价“2023港美上市中国企业CFO精英100”的活动。 时间来到9月&#xff0c;评价揭秘&#xff0c;易点云CFO向征成功入选&#xff0c;被评为“年度最具成长潜力CFO”…...

【计算机网络】poll | epoll

文章目录 1. pollpoll函数参数解析代码解析PollServer代码 poll 特点 2. epoll认识接口epoll_createepoll_ctlepoll_wait 基本原理红黑树就绪队列 1. poll poll函数参数解析 输入 man poll poll的第一个参数是文件描述符 poll的第二个参数为 等待的多个文件描述符(fd)数字层面…...

C++设计模式_07_Bridge 桥模式

文章目录 1. 动机&#xff08;Motivation&#xff09;2. 代码演示Bridge 桥模式2.1 基于继承的常规思维处理2.2 基于组合关系的重构优化2.3 采用Bridge 桥模式的实现 3. 模式定义4. 结构&#xff08;Structure&#xff09;5. 要点总结 与上篇介绍的Decorator 装饰模式一样&…...

[JAVA版本] Websocket获取B站直播弹幕——基于直播开放平台

教程 B站直播间弹幕Websocket获取 — 哔哩哔哩直播开放平台 基于B站直播开放平台开放且未上架时&#xff0c;只能个人使用。 代码实现 1、相关依赖 fastjson2用于解析JSON字符串&#xff0c;可自行替换成别的框架。 hutool-core用于解压zip数据&#xff0c;可自行替换成别的…...

第一个 Python 程序

三、第一个 Python 程序 好了&#xff0c;说了那么多&#xff0c;现在我们可以来写一下第一个 Python 程序了。 一开始写 Python 程序&#xff0c;个人不太建议用专门的工具来写&#xff0c;不方便熟悉语法&#xff0c;所以这里我先用 Sublime Text 来写&#xff0c;后期可以…...

广告牌安全监测,保障户外广告牌的安全与稳定

随着城市的发展和现代化&#xff0c;广告牌已经成为城市风景的一部分。然而&#xff0c;随之而来的是广告牌安全问题&#xff0c;因为它们暴露在各种天气和环境条件下&#xff0c;一旦掉落&#xff0c;可能对人们的生命和财产造成威胁。广告牌安全监测有效的解决了这一问题&…...

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单…...

进来了解实现官网搜索引擎的三种方法

做网站的目的是对自己的品牌进行推广&#xff0c;让越来越多的人知道自己的产品&#xff0c;但是如果只是做了一个网站放着&#xff0c;然后等着生意找上门来那是不可能的。在当今数字时代&#xff0c;实现官网搜索引擎对于提升用户体验和推动整体性能至关重要。搜索引擎可以帮…...

OpenCV3-Python(7)模板匹配和霍夫检测

模板匹配 膜版匹配不能匹配尺度变换和视角变换的图像 图片中查找和模板相似度最高的图像 计算相似程度最高的位置 res cv.matchTemplate(img , template, method) 该方法返回一个类似灰度图的东西&#xff0c;如果用的相关匹配&#xff0c;那么亮的地方就是可能匹配上的地方 …...

[C++11]花括号{}、initializer_list、auto、decltype

文章目录 1.花括号{ }的扩展2.initializer_list3.auto4.decltype5.容器的增加5.1array[useless]5.2forward_list[useless]5.3unordered_map/unordered_set5.4统一增加 6.知乎文章 1.花括号{ }的扩展 int main() {//C98花括号{ }支持 1.数组 2.结构体struct Point{int _x;int _…...

在Android平板上使用code-server公网远程Ubuntu服务器编程

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…...

宝塔上安装mysql版本比较和区别

在宝塔上安装MySQL时&#xff0c;几个主要版本之间的区别主要在于性能、功能和安全性。 MySQL Community Server&#xff08;社区版本&#xff09;&#xff1a;这是MySQL的开源免费版本&#xff0c;由社区支持&#xff0c;但不提供官方技术支持。这个版本对一般用户来说可能有…...

uniapp微信小程序自定义封装分段器。

uniapp微信小程序自定义封装分段器。 话不多说先上效果 这里我用的是cil框架 vue3 下面贴代码 组价代码&#xff1a; <template><view class"page"><viewv-for"(item, index) in navList":key"index"click"changeNav(ind…...

文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题

二、用go语言&#xff0c;用一个单链表 L实现一个栈。要求操作 PUSH和 POP 的运行时间仍为 O(1)。 文心一言&#xff1a; 在 Go 语言中&#xff0c;我们可以用结构体来实现一个单链表&#xff0c;然后再用栈的相关操作。 以下是一个可能的实现方式&#xff1a; package mai…...

小程序中使用echarts的相关配置以及折线图案例(简单易懂)

第一步&#xff1a;引入echarts文件--此文件需要下载&#xff1a; 下载地址&#xff1a;点击此处进行下载echarts文件 点击Download ZIP下载压缩包&#xff0c;注意&#xff1a;e-canvas是我从完整的文件中剥离出来的有用的&#xff0c;不会影响项目。 第二步&#xff1a;把整…...

前端面试回答不好的问题总结

vue生命周期&#xff1a; beforeCreated、created、beforeMount、mount、beforeUptade、uptade、beforeDestroy、destroyed、 Activated、Deactivated 闭包&#xff1a; ECMAScript中&#xff0c;闭包指的是&#xff1a; 从理论角度&#xff1a;所有的函数。因为它们都在创…...

漏洞预警|CVE-2023-38545 Curl 和 libcurl 堆缓冲区溢出漏洞

项目介绍 libcurl是一个跨平台的网络协议库&#xff0c;支持http、https、ftp等多种协议。 项目地址 https://github.com/curl/curl/releases 影响版本 7.69.0-8.3.0 漏洞分析 漏洞成因在于使用SOCKS5代理过程中造成的溢出。当Curl程序使用 SOCKS5代理时&#xff0c;设置…...

【Java 进阶篇】HTML 语义化标签详解

HTML&#xff08;HyperText Markup Language&#xff09;是构建Web页面的标准语言。在HTML中&#xff0c;标签&#xff08;tag&#xff09;是用于定义页面结构和内容的关键元素。在构建网页时&#xff0c;了解如何正确使用HTML标签是非常重要的&#xff0c;因为它们不仅影响页面…...

【思维构造】Element Extermination—CF1375C

Element Extermination—CF1375C 参考文章 思路 若 a 1 < a n a_1<a_n a1​<an​&#xff0c; 初始时 a 2 , . . . , a n − 1 a_2, ..., a_{n-1} a2​,...,an−1​ 这 n − 2 n-2 n−2 个元素中大于 a 1 a_1 a1​ 中的元素都能通过 a 1 a_1 a1​ 而被删除&…...

CSP模拟53联测15 D. 子序列

CSP模拟53联测15 D. 子序列 文章目录 CSP模拟53联测15 D. 子序列题目大意思路code 题目大意 &#xff08;seq / 3s / 512 MiB&#xff09; 给定一个长为 n n n 的仅有小写英文字母构成字符串 S S 1 S 2 ⋯ S n SS_1S_2\cdots S_n SS1​S2​⋯Sn​。我们定义一个字符串是好…...

iceberg-flink 十一:在dlink代码中建表增加catalog地址。

一&#xff1a;catalog 是存储元数据的地方。 二&#xff1a;表中增加catalog地址’ 当我们映射iceberg表的时候&#xff0c;增加了地址&#xff0c;就会成功映射到表 CREATE CATALOG dk_empower WITH(typeiceberg,catalog-typehadoop,warehousehdfs://cluster/iceberg/war…...

多列等高实现

预期效果 多列等高,左右两列高度自适应且一样,分别设置不同背景色效果预览: 分别由6种方法实现 1、使用padding + margin + overflow 实现多列等高效果,具有良好的兼容性; 2、border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动; 3、父元素线性渐变背景色…...

2023 泰山杯 --- Crypto wp

文章目录 题目解题过程part1part2part3 解题代码 题目 from fastecdsa.curve import P521 as Curve from fastecdsa.point import Point from os import urandom from random import getrandbits import uuid from Crypto.PublicKey import DSA from Crypto.Util.number impor…...

蓝桥杯每日一题20233.10.10

题目描述 回文日期 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题&#xff0c;我们最先想到的是暴力解法&#xff0c;将每一种情况经行循环查找&#xff0c;在查找的过程中记录下答案&#xff0c;回文日期就是字符串判断回文&#xff0c;ABABBABA型回文日期可以将回文经行特判…...

366. 寻找⼆叉树的叶⼦节点

366. 寻找⼆叉树的叶⼦节点 这道题混用二叉树递归 「遍历」和「分解问题」 两种思维模式。 class FindLeaves:"""366. 寻找⼆叉树的叶⼦节点https://leetcode.cn/problems/find-leaves-of-binary-tree/"""def solution(self, root):self.res …...