rbd的image对象数与能写入文件数的关系

   2017-01-06 0
核心提示:一、前言收到一个问题如下:一个300TB 的RBD,只有7800万的objects,如果存储小文件的话,感觉不够用对于这个问题,我原来的理解也是对象设置的大小确实是4M一个,存储下去的数据,如果小于4M,就会占用一个小于4M的对象,如果超过4M,那么存储的数据就会进行
rbd的image对象数与能写入文件数的关系

一、前言

收到一个问题如下:

一个300TB 的RBD,只有7800万的objects,如果存储小文件的话,感觉不够用

对于这个问题,我原来的理解也是对象设置的大小确实是4M一个,存储下去的数据,如果小于4M,就会占用一个小于4M的对象,如果超过4M,那么存储的数据就会进行拆分成多个4M,这个地方其实是不严谨的

对于rados接口来说,数据是多大对象put进去就是多大的对象,并没有进行拆分,进行拆分的是再上一层的应用,比如rbd,比如cephfs

那么对于rbd的image显示的对象数目和文件数目有什么关系呢?本篇将来看看这个问题,到底会不会出现上面的问题

二、实践过程

创建一个image

[root@lab8106 ~]# rbd create --image zpsize --size 100M
[root@lab8106 ~]# rbd info zpsize
rbd image 'zpsize':
	size 102400 kB in 25 objects
	order 22 (4096 kB objects)
	block_name_prefix: rbd_data.85c66b8b4567
	format: 2
	features: layering
	flags:

可以看到,这个image从集群中分配到了25个对象,每个对象的大小为4M,假如我们写入1000个小文件看下会是什么情况

映射到本地并且格式化xfs文件系统

[root@lab8106 ~]# rbd map zpsize
/dev/rbd0
[root@lab8106 ~]# mkfs.xfs -f /dev/rbd0 
meta-data=/dev/rbd0              isize=256    agcount=4, agsize=6144 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=24576, imaxpct=25
         =                       sunit=1024   swidth=1024 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=624, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

挂载到本地

[root@lab8106 ~]# mount /dev/rbd0 /mnt

写入1000个1K小文件

[root@lab8106 ~]# seq 1000|xargs -i dd if=/dev/zero of=/mnt/a{} bs=1K count=1

没有报错提示,正常写入了,我们看下写入了多少对象

[root@lab8106 ~]# rados  -p rbd ls|grep rbd_data.85c66b8b4567
rbd_data.85c66b8b4567.0000000000000018
rbd_data.85c66b8b4567.0000000000000000
rbd_data.85c66b8b4567.0000000000000006
rbd_data.85c66b8b4567.0000000000000001
rbd_data.85c66b8b4567.0000000000000017
rbd_data.85c66b8b4567.000000000000000c
rbd_data.85c66b8b4567.0000000000000012
rbd_data.85c66b8b4567.0000000000000002

只写入了少量的对象,我们尝试下载下来看看

[root@lab8106 ~]# ll -hl rbd_data.85c66b8b4567.0000000000000018
-rw-r--r-- 1 root root 4.0M Jan  3 14:27 rbd_data.85c66b8b4567.0000000000000018
[root@lab8106 ~]# rados  -p rbd get rbd_data.85c66b8b4567.0000000000000000 rbd_data.85c66b8b4567.0000000000000000
[root@lab8106 ~]# ll -hl rbd_data.85c66b8b4567.0000000000000000
-rw-r--r-- 1 root root 4.0M Jan  3 14:27 rbd_data.85c66b8b4567.0000000000000000

可以看到还是4M的对象,实际上写入的小文件已经进行了合并了,在底层已经是一个4M的对象文件了

总结

本篇的结论就是,rbd层之上的写入的文件的个数与底层的对象数目是没有关系的,对象数目和对象大小是底层处理的,再上一层就是文件系统去处理的了,总空间占用上是一致的

我的公众号-磨磨谈

rbd的image对象数与能写入文件数的关系
 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • fedora添加ntfs文件系统支持
    如果没有换源先看一下换源。查找库中是否有ntfs-3g。[root@bogon zhujikuan]# yum search ntfs上次元数据过期检查:0:19:24 前,执行于 2018年02月25日 星期日 17时06分35秒。========================== 名称小结 Matched: ntfs ===========================
    02-10
  • [boostrap]debian下为arm创建debian和emdebian文件系统
    [boostrap]debian下为arm创建debian和emdebian
    转自:http://www.cnblogs.com/qiaoqiao2003/p/3738552.htmlDebian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些。emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的人来说很容易就能得心
    02-10
  • linux下常用文件系统 linux支持的文件系统
    不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统。Linux内核支持十多种不同类型的文件系统,下面对Linux常用的文件系统作一个简单介绍。ext2与ext3文件系统ext是第一个专门为Lin
    02-10
  • debian系统镜像 debian文件系统
    debian系统镜像 debian文件系统
    https://www.debian.org/releases/buster/debian-installer/
    02-10
  • debian下为arm开发板创建基于debian或emdebian
    Debian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些。emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的人来说很容易就能得心应手地进行配置。emdebian有好几个版本:Grip,Crush,Baked.
    02-10
  • Fedora5下配置MySQL (很有参考价值的 MySQL资料
    一、下载MySQL的安装文件 完全安装MySQL需要下面6个文件: MySQL-server-community-5.1.26-0.rhel4.i386.rpmMySQL-client-community-5.1.26-0.rhel4.i386.rpmMySQL-shared-community-5.1.26-0.rhel4.i386.rpmMySQL-devel-community-5.1.26-0.rhel4.i386.rpmMy
    02-10
  • (大数据工程师学习路径)第一步 Linux 基础入
    介绍本节的文件系统操作的内容十分简单,只会包含几个命令的几个参数的讲解,但掌握这些也将对你在学习后续其他内容的过程中有极大帮助。因为本课程的定位为入门基础,尽快上手,故没有打算涉及太多理论内容,前面省略了关于 Linux 文件系统的一些基本知识,
    02-09
  • 02_Linux图形界面及文件系统结构介绍 linux系统
    /       : 它跟Windows的C、D、E、F不同,在Linux中,所有的文件系统(光驱、U盘、硬盘)都挂载到根目录的某一个文件夹下bin   : 存放二进制可执行文件sbin  :存放二进制可执行文件,只有root可以访问、系统管理的程序boot:计算机启动时加载的引导
    02-09
  • Linux源文件的组织结构-转 linux的文件系统结构
    Linux源文件的组织结构-转 linux的文件系统结构
    Linux源文件的树形目录如图所示。   下面详细介绍内核源文件的结构,以内核2.4.x为例。内核源程序的文件按树形结构进行组织,Linux-2.4.x最上层会看到这样一些目录:  (1)arch:arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都
    02-09
  • Linux-uboot命令之EXT格式文件系统操作命令
    Linux-uboot命令之EXT格式文件系统操作命令
    一、EXT格式文件系统操作命令   uboot有ext2和ext4这两种格式的文件系统的操作命令,常用的就四个命令,分别是:ext2load、ext2ls、ext4load、ext4ls和ext4write。这些命令的含义和使用与fatload、fatls和fatwrite一样,只是ext2和ext4都是针对ext文件系统
    02-09
点击排行