【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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132798.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现即时沟通与协作的全功能IM即时通讯系统

在当今竞争激烈的商业环境中&#xff0c;高效的沟通和协作成为企业取得成功的关键。在过去&#xff0c;电子邮件和电话等传统工具是企业之间进行沟通和协作的重要手段&#xff0c;然而&#xff0c;随着科技的发展和社交化的趋势&#xff0c;IM即时通讯系统正逐渐成为企业协作的…

JavaScript使用类-模态窗口

**上节课我们为这个项目获取了一些DOM元素&#xff0c;现在我们可以继续&#xff1b;**这个模态窗口有一个hidden类&#xff0c;这个类上文我们讲了&#xff0c;他的display为none&#xff1b;如果我们去除这个hidden的话&#xff0c;就可以让这个模态窗口展现出来。如下 cons…

分布式系统开发技术中的CAP定理原理

分布式系统开发技术中的CAP定理原理 在分布式系统开发中&#xff0c;CAP定理&#xff08;一致性、可用性和分区容忍性&#xff09;是指导我们设计、开发和维护系统的核心原理。该定理阐述了分布式系统中一致性、可用性和扩展性之间无法同时满足的矛盾关系&#xff0c;为我们提…

Django 静态自定义化配置

STATIC # APP本地静态资源目录&#xff08;就APP对应的&#xff09; STATIC_URL "/static/"# 远程静态文件URL&#xff08;少用&#xff09; REMOTE_STATIC_URL# 外部引用静态文件目录&#xff08;外层的&#xff09; STATICFILES_DIRS [os.path.join(BASE_DIR, &…

leetcode 打家劫舍篇

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

HDLbits: Lemmings3

Lemmings又多了一种状态&#xff1a;dig&#xff0c;我按照上一篇文章里大神的思路又多加了两种状态&#xff1a;LEFT_DIGGING与RIGHT_DIGGING&#xff0c;写出了如下的代码&#xff1a; module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk …

Linux内存管理 (2):memblock 子系统的建立

前一篇&#xff1a;Linux内存管理 (1)&#xff1a;内核镜像映射临时页表的建立 文章目录 1. 前言2. 分析背景3. memblock 简介3.1 memblock 数据结构3.2 memblock 接口 4. memblock 的构建过程 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者…

深入了解进程:计算机中的任务管理与隔离

什么是进程&#xff1f; 进程是一个独立的执行环境&#xff0c;包括自己的内存空间、程序计数器、文件句柄等。每个进程都是操作系统的一个独立实例&#xff0c;它们之间通常相互隔离。 通俗来说&#xff0c;进程就是程序的一次执行过程&#xff0c;程序是静态的&#xff0c;它…

VUE3基础知识梳理

VUE3基础知识梳理 一、vue了解和环境搭建1.vue是什么&#xff1a;cn.vuejs.org/vuejs.org2.渐进式框架3.vue的版本4.vueAPI的风格5.准备环境5.1.创建vue项目5.2.vue的目录结构 二、vue3语法1.干净的vue项目2.模板语法2.1 文本插值2.2属性绑定2.3条件渲染2.4列表渲染2.5通过key管…

【SCS-CN】SCS-CN模型中CN值的确定

目录 一、说明二、SWAT三、HEC-HMS四、CN值转换公式五、确定CN25.1 ArcSWAT 2009用户指南5.2 SWAT plus Document5.3 National Engineering Handbook5.4 HEC-HMS水文建模系统原理方法应用5.5 Technical Release 55 (TR-55) 六、确定水文土壤单元&#xff08;HSG&#xff09;6.1…

SpringBoot之使用Redis和注解实现接口幂等性

文章目录 1 接口幂等性1.1 概念1.2 实现思路1.3 代码实现1.3.1 pom1.3.2 JedisUtil1.3.3 自定义注解ApiIdempotent1.3.4 ApiIdempotentInterceptor拦截器1.3.5 TokenServiceImpl1.3.6 TestApplication 1.4 测试验证1.4.1 获取token的控制器TokenController1.4.2 TestController…

vue配置@路径

第一步&#xff1a;安装path&#xff0c;如果node_module文件夹中有path就不用安装了 安装命令&#xff1a;npm install path --save 第二步&#xff1a;在vue.config.js文件&#xff08;如果没有就新建&#xff09;中配置 const path require("path"); function …