1.讓OpenStack刪除卷更快
為什么速度這么慢?
當我們執行刪除卷命令以后,openstack會嘗試去清除卷上的數據,他是如何清除的呢?
其實他是通過dd命令填充空白數據上去(dd if=/dev/zero)。這樣子的清理方式目的是
為了徹底的清除數據,保證數據安全。但是對於ceph作為后端存儲的情況而言,我們把image刪
除了,數據也就相當安全了。這樣子的操作並沒有太多用處。特別是存儲空間大於50GB的情況下,會操作很久。
我們可以做那些什么?
直接修改/etc/cinder/cinder.conf 配置文件:
# Method used to wipe old volumes (string value) # Allowed values: none, zero, shred volume_clear = none openstack-config --set /etc/cinder/cinder.conf DEFAULT volume_clear none
默認值是zero,我們配置成none,就跳過清理這步。如果我們想只清理前100MB呢?
# Method used to wipe old volumes (string value) # Allowed values: none, zero, shred volume_clear = zero # Size in MiB to wipe at start of old volumes. 0 => all (integer value) volume_clear_size = 100 cinder 中clear_volume段代碼 def clear_volume(volume_size, volume_path, volume_clear=None, volume_clear_size=None, volume_clear_ionice=None, throttle=None): """Unprovision old volumes to prevent data leaking between users.""" if volume_clear is None: volume_clear = CONF.volume_clear if volume_clear_size is None: volume_clear_size = CONF.volume_clear_size if volume_clear_size == 0: volume_clear_size = volume_size if volume_clear_ionice is None: volume_clear_ionice = CONF.volume_clear_ionice LOG.info(_LI("Performing secure delete on volume: %s"), volume_path) # We pass sparse=False explicitly here so that zero blocks are not # skipped in order to clear the volume. if volume_clear == 'zero': return copy_volume('/dev/zero', volume_path, volume_clear_size, CONF.volume_dd_blocksize, sync=True, execute=utils.execute, ionice=volume_clear_ionice, throttle=throttle, sparse=False) else: raise exception.InvalidConfigurationValue( option='volume_clear', value=volume_clear)