当前位置:   article > 正文

利用Trim/discard挂载rbd块设备

rbd trim

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

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

  1. $ rbd create rbd/myrbd --size=20480
  2. $ mkfs.xfs /dev/rbd0
  3. $ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
  4. 14.4062 MB
  5. $ mount /dev/rbd0 /mnt/myrbd
  6. $ dd if=/dev/zero of=/mnt/myrbd/testfile bs=1M count=1024
  7. $ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
  8. 1038.41 MB
  9. $ rm /mnt/myrbd/testfile
  10. $ rbd diff rbd/myrbd | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
  11. 1038.41 MB
你会发现,rbd pool并没有变小。之前好像做过类似的测试,需要重启一下ceph或系统才能反映出改变,记不清了。

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

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

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

1. 未使用discard选项

  1. $ mount /dev/rbd0 /mnt/rbd0
  2. $ mkdir testdir; cd testdir
  3. $ dd if=/dev/zero of=mainfile bs=1M count=200
  4. $ split -b 4048 -a 7 mainfile; sync # 4k file / ~51k files
  5. $ cd ..
  6. $ time rm -rf testdir; time sync
  7. [root@mon0 nfs]# time rm -rf testdir/; time sync
  8. real 0m21.866s
  9. user 0m0.155s
  10. sys 0m5.466s
  11. real 0m0.897s
  12. user 0m0.001s
  13. sys 0m0.011s
2. 使用discard选项
  1. 只给出时间
  2. [root@mon0 nfs]# time rm -rf testdir; time sync
  3. real 0m8.791s
  4. user 0m0.100s
  5. sys 0m2.858s
  6. real 0m2.367s
  7. user 0m0.001s
  8. 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.

转载于:https://my.oschina.net/renguijiayi/blog/385703

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/217503
推荐阅读
相关标签
  

闽ICP备14008679号