cinder删除lvm卷很慢的问题
cinder删除lvm卷很慢的问题
最近搞kolla
部署cinder
,使用lvm
做后端,在cinder-volume
服务删除数据卷,数据卷会删除的很慢,在删除这段时间发现宿主机的load
飙高,但是检查虚拟机负载没有异常。
查找原因
使用iotop
查看
1 |
|
从日志里面看到,volume
服务调用dd
命令对数据卷进行数据清空,同时采用oflag=direct
参数直接操作块设备。所以,cinder
在删除卷的时间长短和卷的大小有着直接关系。(删除期间iowait
值会增高,怪不得load
也会飙高)
原因分析
cinder
在删除卷之前要对其做dd
操作,是因为LVM
在lvremove
后重新lvcreate
,新的lv
里面还保留着老的数据,原来直接删除的lv
并不会抹除卷上的数据。cinder
之所以要用dd zero
,就是为了避免租户A
删除卷后,数据不会串到租户B
新创建的数据卷上。这样一方面保证租户A
的数据安全性,另一方面也避免租户B
在使用数据卷的产生的疑惑。
处理问题
关闭volume安全删除
1
2# Allowed values: none, zero, shred
volume_clear = nonevolume_clear
采用shred
永久删除,置零
volume
头部100MB
左右数据1
2# Size in MiB to wipe at start of old volumes. 0 => all (integer value)
volume_clear_size = 100调整
dd
进程io
调度优先策略1
2
3
4# The flag to pass to ionice to alter the i/o priority of the process used to
# zero a volume after deletion, for example "-c3" for idle only priority.
# (string value)
volume_clear_ionice = -c3保证数据绝对安全
volume_clear
采用shred
永久删除,根据服务器情况适当调整volume_clear_ionice
的值。
shred会用一些随机内容覆盖文件所在的节点和数据块,cinder
在这里条用shred
默认参数采用-n 3
即重写3
次。数据相对安全的同时,降低数据卷删除时间
volume_clear
采用zero
填充,根据情况设置volume_clear_size
大小,我们都知道,磁盘的开头部分保存着文件系统的元数据以及索引,清空这部分可以一定程度上保证数据的安全。
至于volume_clear=none
这种直接删除lv
而不清空数据的方式,我就不建议采用了
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!