您的位置:首页 > 其它

加快Cinder中Volume的删除速度

2013-07-16 20:23 274 查看

问题

以前一篇博文OpenStack中删除Volume缓慢的问题 提到采用LVM作为后端存储时在删除Volume的时候为了安全有一个将整个Volume的数据清除的dd操作,如果Volume容量较大的话这个操作非常耗时, 并且如果同时删除一个存储服务器上的多个Volume的话会使服务器负载非常重,因此有必要来修改这个dd操作来加快Volume的删除。

解决方法

解决方法就是如前篇文章据说的只dd Volume头部的100M左右的数据,如下所示:

[ugyn@ugyn-fedora cinder]$ git diff
diff --git a/cinder/volume/driver.py b/cinder/volume/driver.py
index 2091848..33ef10b 100644
--- a/cinder/volume/driver.py
+++ b/cinder/volume/driver.py
@@ -200,7 +200,7 @@ class VolumeDriver(object):
if (out[0] == 'o') or (out[0] == 'O'):
raise exception.VolumeIsBusy(volume_name=volume['name'])

-        self._delete_volume(volume, volume['size'])
+        self._delete_volume(volume, 0.125)

def create_snapshot(self, snapshot):
"""Creates a snapshot."""
@@ -218,7 +218,7 @@ class VolumeDriver(object):

# TODO(yamahata): zeroing out the whole snapshot triggers COW.
# it's quite slow.
-        self._delete_volume(snapshot, snapshot['volume_size'])
+        self._delete_volume(snapshot, 0.125)

def local_path(self, volume):
# NOTE(vish): stops deprecation warning

这里修改为0.125的原因是最终该参数乘1024后作为dd 的count参数,而count参数要求为整数,所以我这里用了0.125也就是只dd开头的128M数据。这里删除Volume或Snapshot 的操作比较简单,只涉及四个函数,具体可以看下源代码。修改完后重启cinder-volume即可,注意我这里修改的是F版。

北方工业大学 |
云计算研究中心 | 姜永
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: