文档章节

利用Trim/discard挂载rbd块设备

加油2018
 加油2018
发布于 2015/03/11 17:14
字数 398
阅读 200
收藏 1

http://cephnotes.ksperis.com/blog/2014/12/18/use-discard-with-krbd-client-since-kernel-3-dot-18/有详细的描述,试验了一下,对于小文件的删除确实有帮助,记录如下。

1. 如果不利用discard选项挂载rbd块设备,会有如下问题

$ rbd create rbd/myrbd --size=20480
$ mkfs.xfs /dev/rbd0
$ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
14.4062 MB

$ mount /dev/rbd0 /mnt/myrbd
$ dd if=/dev/zero of=/mnt/myrbd/testfile bs=1M count=1024
$ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
1038.41 MB

$ rm /mnt/myrbd/testfile
$ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
1038.41 MB
你会发现,rbd pool并没有变小。之前好像做过类似的测试,需要重启一下ceph或系统才能反映出改变,记不清了。

2. 利用discard选项挂载rbd块设备

mount -o discard /dev/rbd0 /mnt/myrbd
重复上述操作,再执行以下操作:
$ fstrim /mnt/myrbd
$ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
10.6406 MB
这样就恢复正常了。

两种不同挂载方式的性能测试如下:

1. 未使用discard选项

$ mount /dev/rbd0 /mnt/rbd0

$ mkdir testdir; cd testdir
$ dd if=/dev/zero of=mainfile bs=1M count=200
$ split -b 4048 -a 7 mainfile; sync               # 4k file / ~51k files
$ cd ..
$ time rm -rf testdir; time sync

[root@mon0 nfs]# time rm -rf testdir/; time sync

real	0m21.866s
user	0m0.155s
sys	0m5.466s

real	0m0.897s
user	0m0.001s
sys	0m0.011s
2. 使用discard选项
只给出时间
[root@mon0 nfs]# time rm -rf testdir; time sync

real	0m8.791s
user	0m0.100s
sys	0m2.858s

real	0m2.367s
user	0m0.001s
sys	0m0.001s

性能有明显提升,作者的原话是:

In the case of intensive use of the file system, with many small file, it may be more advantageous to use fstrim, for example once a day.

© 著作权归作者所有

共有 人打赏支持
加油2018
粉丝 150
博文 276
码字总数 243077
作品 0
海淀
架构师
私信 提问
ceph-rbd kvm 删除数据后集群空间不释放

环境描述 ceph版本:luminous 12.2.5 OSD三节点,monitor三节点,同时运行在三台物理服务器; KVM宿主机运行多台虚拟机,其中一台挂载ceph-rbd块存储; KVM调用ceph-rbd 1.ceph集群创建存储池...

冰河sjm
06/29
0
0
利用ceph-deploy在ubuntu server14.04上部署ceph并进行其它配置

环境与说明 在ubuntu14.04 server上部署ceph-0.87;设置rbdmap自动挂载/卸载rbd块设备;利用带rbd支持的tgt导出iscsi的rbd块。 2. 安装ceph 1)配置hostname与无密码登录 root@mon0:/etc/cep...

加油2018
2014/11/11
0
16
xfs的故障记录

前言 我使用xfs比较二一点,我是在ceph的rbd上直接格式化的xfs,所以ceph上的数据一般不会丢失,不过我的xfs是在docker内部进行的挂载,使用也是docker容器内使用,这里不得不说docker stop...

xueyi28
2016/09/19
95
0
Ceph块设备管理与Openstack配置(上)

Oepnstack之CEPH系列是根据Ceph Cookbook整理的笔记,分为以下几个部分: 《Ceph简介》 《Ceph集群操作》 《Ceph块设备管理与Openstack配置》 《深入Ceph》 《ceph优化与性能测试》 注意:此...

hiubuntu
2016/12/02
0
0
Kubernetes 1.5通过Ceph实现有状态容器

在上一篇博文,我们通过kubernetes的devlopment和service完成了sonarqube的部署。看起来已经可用,但是仍然有一个很大的问题。我们知道,像mysql这种数据库是需要保存数据而且不能让数据丢失...

msj0905
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

node上的redis调用优化示例

Node.js读写数据到influxDB,目前已经有一个库node-influx, 这个库功能非常强大,但是我个人使用这个库的时候,遇到无法解决的问题。 使用curl都可以写数据到influxDB,但是用node-influx总是...

前端攻城老湿
26分钟前
1
0
The setting logImpl is not known

问题: org.apache.ibatis.builder.BuilderException: The setting logImpl is not known. Make sure you spelled it correctly (case sensitive). MyBatis 3.1.1 -jar还没有 logImpl 这个设......

晨猫
37分钟前
1
0
eslint一些规则

一、指定js文件不使用 ESLint 语法检查 1.整个文件范围内禁止规则出现警告 将/* eslint-disable */放置于文件最顶部 /* eslint-disable */alert('foo'); 2.在文件中临时禁止规则出现警告 ...

xiaoge2016
38分钟前
1
0
mac终端常用命令

ls ls,list的简写,列出目录的内容。 -a:显示隐藏文件 -l:以列表方式显示文件信息 -h:配合-l,显示更人性化 配合通配符使用 ls *.txt:显示所有以.txt结尾的文件 ls ?.txt:显示‘任意字符.tx...

xiaobai1315
39分钟前
1
0
java命令行读取配置,和加载jar的方式

--spring.profiles.active=t2,t3,xextest --spring.profiles.include=quartz-jp-Djava.ext.dirs=libs-Dspring.config.location=/data/apps/DBconfig -cp  "config/*"  start.sh......

经常把天聊死的胖子
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部