RedHat Ceph分布式存储指南-块设备模块
基于ceph分布式存储架构设计及ceph块存储创建

基于ceph分布式存储架构设计及ceph块存储创建作者:程旺刘嵩岩来源:《信息技术时代·上旬刊》2019年第02期摘要:分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
ceph是一个分布式文件系统,具有高扩展、高可用、高性能的特点。
本文进行ceph集群存储部署和ceph块存储创建,完成是基于ceph分布式存储架构设计与实现。
关键词:分布式文件系统;ceph;集群;块存储1.Ceph基础介绍Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。
在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储,比较直观的是Ceph集群可以提供一个raw 格式的块存储来作为虚拟机实例的硬盘。
Ceph提供了RADOS、OSD、MON、RBD和Ceph FS等功能组建,但底层仍然使用RADOS存储来支撑上层的那些组件。
由于Ceph采用了CRUSH算法、HASH环等的良好方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
Ceph组件包括OSDs(存储设备)、Monitors(集群监控组件)、MDSs(存放文件系统的元数据)、Client(ceph客户端)组成。
2.实验环境准备实验准备四台KVM虚拟机,其中三台作为存储集群节点,另一台作为客户端。
所有主机名及其对应的ip地址为client(eth0:192.168.4.10),node1(eth0:192.168.4.11),node2(eth0:192.168.4.12);node3(eth0:192.168.4.13)。
实验环境准备主要包括节点yum源,所有虚拟主机均需要挂载安装光盘,包括rhel光盘和ceph光盘;修改/etc/hosts并同步到所有主机,配置无密码连接;配置NTP时间同步和准备存储磁盘,并且物理机上的每个虚拟机创建3个磁盘。
分布式存储系统Ceph

分布式存储系统Ceph分布式存储系统Ceph:实现大规模存储的自由和弹性随着当今存储技术的发展,分布式存储系统已经成为快速、可靠、低成本的存储技术,它可以克服传统存储系统(如SAN)所面临的技术瓶颈。
Ceph是一个开源的分布式存储系统,它可以提供可靠的、可扩展的、低成本的存储服务,并且支持非常大的数据量。
这使得其能够满足越来越多的企业和机构的存储需求,而这些机构也正在不断探索如何利用Ceph来改善其存储系统。
Ceph是一个全功能的分布式存储系统,它可以提供可靠的存储,并且可以支持大规模的存储。
Ceph的核心是一个分布式文件系统,它可以提供高可用性、可扩展性和可靠性。
它可以存储和管理大量的数据,并且可以让用户访问这些数据而无需担心其可靠性和可用性。
Ceph的可扩展性也引起了众多企业的关注,它的存储容量可以持续增长,并且可以根据应用的需求进行调整。
Ceph的可靠性是其最大的优势之一。
它可以实现高可靠性,可以提供99.999%的可用性,这意味着只有在极其罕见的情况下才会出现故障。
Ceph的这一优势使其成为解决大规模存储问题的理想选择。
Ceph的另一个优势是其可扩展性。
Ceph可以提供可靠的、可扩展的存储系统,无论是对数据量还是对可用性的要求都可以得到满足。
此外,用户也可以自行扩展存储空间,以适应不断变化的需求。
Ceph还可以提供灵活的管理选项,它支持多种不同的存储技术,包括块存储、对象存储和文件存储。
这使得Ceph可以满足用户的不同需求,并提供更多的灵活性。
Ceph的最后一个优势是它低成本的存储方案。
Ceph可以使用普通的服务器硬件,并且可以使用开源软件实现存储服务。
由于Ceph是开源软件,因此它可以免费使用,这也使得Ceph成为一个非常有吸引力的存储选择。
总之,Ceph是一个强大的分布式存储系统,它可以提供可靠的、可扩展的、低成本的存储服务,并且可以支持大规模的数据量。
Ceph的优势使其成为解决大规模存储问题的理想选择,并且可以满足众多企业和机构的存储需求。
分布式文件存储CephFS详尽介绍及使用经验

分布式文件存储 CephFS详尽介绍及使用经验1. Ceph架构介绍Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
特点如下:- 高性能a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
- 高可用性a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。
- 高可扩展性a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。
- 特性丰富a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。
使用场景:•块存储 (适合单客户端使用)o典型设备:磁盘阵列,硬盘。
o使用场景:a. docker容器、虚拟机远程挂载磁盘存储分配。
b. 日志存储。
...•文件存储 (适合多客户端有目录结构)o典型设备:FTP、NFS服务器。
o使用场景:a. 日志存储。
b. 多个用户有目录结构的文件存储共享。
...•对象存储 (适合更新变动较少的数据,没有目录结构,不能直接打开/修改文件) o典型设备:s3, swift。
o使用场景:a. 图片存储。
b. 视频存储。
c. 文件。
d. 软件安装包。
e. 归档数据。
...系统架构:Ceph 生态系统架构可以划分为四部分:1.Clients:客户端(数据用户)2.mds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)3.osd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)4.mon:Cluster monitors,集群监视器(执行监视功能)2. NFS介绍1. NAS(Network Attached Storage)- 网络存储基于标准网络协议NFSv3/NFSv4实现数据传输。
ceph 对象 块 文件原理

Ceph 对象、块、文件原理解析1. Ceph 概述Ceph 是一个分布式存储系统,提供了高性能、高可靠性和可扩展性的存储解决方案。
Ceph 的设计目标是能够在大规模集群中存储和管理海量的数据,并且具备自动分布式数据恢复和负载均衡的能力。
Ceph 采用了对象存储的方式来管理数据,其中的对象、块和文件是 Ceph 存储系统的三种基本数据类型。
下面将详细解释这三种数据类型的原理和相关的基本原理。
2. Ceph 对象Ceph 对象是 Ceph 存储系统中最基本的数据单元。
每个对象都有一个唯一的标识符,称为对象 ID。
对象 ID 是一个全局唯一的标识符,通过它可以快速定位到具体的对象数据。
Ceph 对象由一系列的数据块组成,每个数据块的大小一般为 4MB。
对象的数据块被分布存储在 Ceph 存储集群中的多个 OSD(Object Storage Daemon)上。
这种将对象数据分布在多个 OSD 上的方式可以提高数据的可靠性和可用性,同时也能够实现负载均衡。
Ceph 对象的数据块采用了一种称为 CRUSH(Controlled Replication Under Scalable Hashing)的算法来进行散列和分布。
CRUSH 算法可以根据对象的属性和集群的拓扑结构,计算出对象数据块在存储集群中的位置,从而实现数据的负载均衡和故障恢复。
Ceph 对象还可以包含元数据,用来描述对象的属性和特性。
元数据信息存储在Ceph 存储集群的元数据服务器(Metadata Server)中,通过元数据服务器可以快速的查找和定位到对象的元数据信息。
3. Ceph 块Ceph 块是 Ceph 存储系统中的另一种数据类型,它提供了类似于传统块设备的接口和功能。
Ceph 块是一种虚拟的块设备,可以被挂载到主机上,并且支持随机读写操作。
Ceph 块的实现基于 Ceph 对象,每个块由多个对象组成,每个对象的数据块大小为 4MB。
如何利用Ceph构建高可靠性分布式存储系统

如何利用Ceph构建高可靠性分布式存储系统Ceph是一个免费开源的分布式存储系统,可以轻松地构建高可靠性的分布式存储系统。
Ceph是基于对象存储的,并提供了可伸缩性、高可用性和高性能的特性。
Ceph的体系结构包括Ceph存储集群、Ceph客户端和Ceph Gateway。
Ceph存储集群由一组存储节点组成,这些存储节点可以是笔记本电脑、台式机或服务器。
Ceph客户端是与应用程序交互的组件,提供了文件系统、块存储和对象存储接口。
Ceph Gateway是一个可选组件,提供了S3和Swift接口。
Ceph的存储数据结构是RADOS(可靠自定存储对象),是一个对象存储系统。
RADOS的数据对象是具有唯一标识和可用性功能的二进制对象。
RADOS存储的二进制数据与Ceph存储集群的存储节点分布有关,可以利用Ceph内置的一个分布式文件系统(CephFS)或基于块设备(RBD)来使用存储。
Ceph利用三个关键技术来实现高可靠性分布式存储系统:分布式副本、PG(placement groups)和CRUSH(Controlled Replication Under Scalable Hashing)算法。
分布式副本是Ceph副本管理的核心部分。
每个PG都有多个副本,Ceph在多个存储节点上分别存储这些副本,确保在节点故障的情况下数据的可用性。
PG是Ceph在存储集群上分配桶的方式,它将桶分组为小的计算单位,以便根据负载平衡和其他因素有效地管理设备。
CRUSH算法是一种分布式算法,它能够在存储集群中组织节点和数据副本的散列。
CRUSH算法通过构建一颗基于哈希值的树(称为CRUSH树),将所有的存储节点和副本散列到CRUSH树上的节点上。
这样,每个数据对象都可以存储在CRUSH树上的某个节点上,而这个节点也对应一个存储节点。
当存储节点发生故障时,CRUSH算法可以自动重新映射数据对象的存储位置,以确保数据的可用性。
分布式存储ceph---ceph概念及原理(1)

分布式存储ceph---ceph概念及原理(1)⼀、Ceph简介: Ceph是⼀种为优秀的性能、可靠性和可扩展性⽽设计的统⼀的、分布式⽂件系统。
ceph 的统⼀体现在可以提供⽂件系统、块存储和对象存储,分布式体现在可以动态扩展。
在国内⼀些公司的云环境中,通常会采⽤ ceph 作为openstack 的唯⼀后端存储来提⾼数据转发效率。
Ceph项⽬最早起源于Sage就读博⼠期间的⼯作(最早的成果于2004年发表),并随后贡献给开源社区。
在经过了数年的发展之后,⽬前已得到众多云计算⼚商的⽀持并被⼴泛应⽤。
RedHat及OpenStack都可与Ceph整合以⽀持虚拟机镜像的后端存储。
⼆、Ceph特点:1、⾼性能: a. 摒弃了传统的集中式存储元数据寻址的⽅案,采⽤CRUSH算法,数据分布均衡,并⾏度⾼。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够⽀持上千个存储节点的规模,⽀持TB到PB级的数据。
2、⾼可⽤性: a. 副本数可以灵活控制。
b. ⽀持故障域分隔,数据强⼀致性。
c. 多种故障场景⾃动进⾏修复⾃愈。
d. 没有单点故障,⾃动管理。
3、⾼可扩展性: a. 去中⼼化。
b. 扩展灵活。
c. 随着节点增加⽽线性增长。
4、特性丰富: a. ⽀持三种存储接⼝:块存储、⽂件存储、对象存储。
b. ⽀持⾃定义接⼝,⽀持多种语⾔驱动。
三、Ceph应⽤场景 Ceph可以提供对象存储、块设备存储和⽂件系统服务,其对象存储可以对接⽹盘(owncloud)应⽤业务等;其块设备存储可以对接(IaaS),当前主流的IaaS运⾏平台软件,如:OpenStack、CloudStack、Zstack、Eucalyptus等以及kvm等。
Ceph是⼀个⾼性能、可扩容的分布式存储系统,它提供三⼤功能: (1)对象存储(RADOSGW):提供RESTful接⼝,也提供多种编程语⾔绑定。
ceph的云盘操作流程

ceph的云盘操作流程Ceph 是一个分布式存储系统,它提供了云盘(RBD - RADOS Block Device)作为一种存储方式,允许用户在分布式存储集群上创建块设备。
以下是在 Ceph 中使用云盘的一般操作流程:Ceph 环境准备:安装和配置Ceph 集群:搭建一个Ceph 存储集群,包括Monitor、OSD(Object Storage Daemon)等组件。
配置 Ceph Block Device:确保 RBD(RADOS Block Device)服务可用,通常在 Ceph Monitor 节点上启动 RBD 服务。
创建 Ceph Pool:在 Ceph 集群中创建一个存储池(pool)用于存放块设备。
可以使用 ceph osd pool create 命令来创建。
bashCopy codeceph osd pool create {pool_name} {pg_num} [{pgp_num}]创建 Ceph 块设备(云盘):使用 rbd create 命令创建一个块设备。
bashCopy coderbd create {pool_name}/{image_name} --size {image_size} 映射块设备到本地主机:使用 rbd map 命令将块设备映射到本地主机。
bashCopy coderbd map {pool_name}/{image_name}分区和格式化块设备:在本地主机上,使用 fdisk 或其他分区工具对映射的块设备进行分区。
格式化分区,例如使用 mkfs 命令。
挂载块设备:使用 mount 命令将格式化后的块设备挂载到本地文件系统。
bashCopy codemount /dev/rbd/{pool_name}/{image_name} {mount_point}使用云盘:现在,块设备已经成功映射、分区、格式化和挂载到本地主机,你可以像使用普通硬盘一样在本地文件系统中使用这个块设备。
ceph接口使用方法 -回复

ceph接口使用方法-回复Ceph接口使用方法Ceph是一个开源的分布式存储系统,拥有强大的可扩展性和高可靠性。
它通过将数据分布在多个节点上,实现了数据冗余和负载均衡的功能。
Ceph提供了一系列的接口,让开发者可以轻松地使用其功能。
本文将介绍Ceph接口的使用方法,包括安装和配置Ceph、使用Ceph 接口进行数据操作等。
通过本文的指导,读者可以快速上手并深入了解Ceph接口的使用。
第一步:安装Ceph在开始使用Ceph接口之前,首先需要在集群中安装和配置Ceph。
Ceph 可以在Linux系统上运行,支持多种发行版。
以下是在Ubuntu上安装Ceph的步骤:1. 更新系统软件包:使用以下命令更新系统软件包以获取最新的软件包列表和安全修复程序。
sudo apt-get updatesudo apt-get upgrade2. 安装Ceph软件包:使用以下命令安装Ceph软件包。
sudo apt-get install ceph ceph-deploy3. 配置Ceph集群:使用Ceph提供的命令行工具ceph-deploy来配置Ceph集群。
首先需要创建一个新的目录作为Ceph集群的工作目录。
mkdir my-clustercd my-cluster然后,在此目录下,运行以下命令来初始化Ceph集群。
ceph-deploy new <MON节点>这将在当前目录下创建一个名为ceph.conf的配置文件,其中包含了集群的基本配置信息。
接下来,使用以下命令将Ceph软件包安装到集群的所有节点。
ceph-deploy install <所有节点>最后,使用以下命令来为集群添加MON节点。
ceph-deploy mon create-initial第二步:配置Ceph存储池一旦Ceph集群安装和配置完成,下一步是创建一个或多个存储池,以供存储数据。
存储池是Ceph中最基本的单元,用于管理数据的存储和分发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Red Hat Customer ContentServices
Red Hat Ceph Storage1.3Ceph Block Device
Red Hat Ceph Storage Block DeviceRed Hat Ceph Storage 1.3 Ceph Block DeviceRed Hat Ceph Storage Block DeviceLegal Notice
Copyright © 2015 Red Hat, Inc.The text of and illustrations in this document are licensed by Red Hat under a Creative CommonsAttribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA isavailable athttp://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you mustprovide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the InfinityLogo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and othercountries.
Linux ® is the registered trademark of Linus Torvalds in the United States and other countries.Java ® is a registered trademark of Oracle and/or its affiliates.XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United Statesand/or other countries.
MySQL ® is a registered trademark of MySQL AB in the United States, the European Union andother countries.
Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally related toor endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack ® Word Mark and OpenStack Logo are either registered trademarks/service marksor trademarks/service marks of the OpenStack Foundation, in the United States and other countriesand are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed orsponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
AbstractThis document describes how to manage create, configure and use Red Hat Ceph Storage blockdevices.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table of ContentsPREFACEPART I. BLOCK DEVICE COMMANDSCHAPTER 1. CREATING A BLOCK DEVICE IMAGECHAPTER 2. LISTING BLOCK DEVICE IMAGESCHAPTER 3. RETRIEVING IMAGE INFORMATIONCHAPTER 4. RESIZING A BLOCK DEVICE IMAGECHAPTER 5. REMOVING A BLOCK DEVICE IMAGEPART II. SNAPSHOTSCHAPTER 6. CEPHX NOTESCHAPTER 7. SNAPSHOT BASICS7.1. CREATE SNAPSHOT7.2. LIST SNAPSHOTS7.3. ROLLBACK SNAPSHOT7.4. DELETE A SNAPSHOT7.5. PURGE SNAPSHOTSCHAPTER 8. LAYERING8.1. GETTING STARTED WITH LAYERING8.2. PROTECTING A SNAPSHOT8.3. CLONING A SNAPSHOT8.4. UNPROTECTING A SNAPSHOT8.5. LISTING CHILDREN OF A SNAPSHOT8.6. FLATTENING A CLONED IMAGEPART III. LIBRBD SETTINGSCHAPTER 9. CACHE SETTINGSCHAPTER 10. READ-AHEAD SETTINGSPART IV. LIBRBD (PYTHON)CHAPTER 11. EXAMPLE: CREATING AND WRITING TO AN IMAGEPART V. KERNEL MODULE OPERATIONSCHAPTER 12. GET A LIST OF IMAGESCHAPTER 13. MAP A BLOCK DEVICECHAPTER 14. SHOW MAPPED BLOCK DEVICESCHAPTER 15. UNMAPPING A BLOCK DEVICE34567891011121212121313