Cinder删除lvm卷很慢的问题

最近在监控上总是发现宿主机的load莫名的飙高,检查虚拟机负载也并没有异常,跟踪一段时间后发现,原来在load飙高的这段时间里,cinder-volume服务正在删除数据卷。排查日志,可以看到,当cinder-volume服务在处理删除卷的逻辑中,默认是对即将要删除的卷置零操作。

DEBUG oslo_concurrency.processutils [req-beeeb583-c07e-4f23-8b63-1f76fc729c9a 0a266a36e53e4469a376f5baa4375064 0a266a36e53e4469a376f5baa4375064 - default default] CMD "sudo cinder-rootwrap /etc/cinder/rootwrap.conf dd count=0 if=/dev/zero of=/dev/mapper/cinder--volumes-volume--beeeb583--c07e--4f23--8b63--1f76fc729c9a  oflag=direct" returned: 0 in 0.127s execute /usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374

从日志里面看到,volume服务调用dd命令对数据卷进行数据清空,同时采用oflag=direct参数直接操作块设备。所以,cinder在删除卷的时间长短和卷的大小有着直接关系。(删除期间iowait值会增高,怪不得load也会飙高)

那么,怎么解决cinder-volume服务在删除数据卷的时间过长,造成宿主机load飙高的情况呢。
可以从三个方面处理这个问题:

1. 关闭volume安全删除

# Allowed values: none, zero, shred
volume_clear = none

2. 置零volume头部100MB左右数据

# Size in MiB to wipe at start of old volumes. 0 => all (integer value)
volume_clear_size = 100

3. 调整dd进程io调度优先策略

OpenStack在Kilo版本之后添加volume_clear_ionice配置

# 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

K版本之前需要手动修改Cinder代码,如下

volume/utils.py

def _copy_volume(self, srcstr, deststr, size_in_g):
    self._execute('ionice', '-c3', 'dd', 'iflag=direct', 'oflag=direct',
                  'if=%s' % srcstr, 'of=%s' % deststr,'count=%d' % (size_in_g * 1024), 
                  'bs=1M', run_as_root=True)

关于删除卷的思考

之前不明白cinder在删除卷之前要对其做dd操作,这个过程又耗时又对服务器的负载造成影响。直到有次我在处理LVM的时候,发现即便在lvremove后重新lvcreate,新的lv里面还保留着老的数据,我才恍然大悟(只怪自己基础知识不牢固),原来直接删除lv并不会抹除卷上的数据。cinder之所以要用dd zero,就是为了避免租户A删除卷后,数据不会串到租户B新创建的数据卷上。这样一方面保证租户A的数据安全性,另一方面也避免租户B在使用数据卷的产生的疑惑。从cinder的配置文件可以看出,社区对于这类需求处理得还是很及时的。

那么实际环境下,我们改怎么选择配置,既保证数据的安全性,又尽量对服务器造成少的负载。

场景一. 保证数据绝对安全

volume_clear采用shred永久删除,根据服务器情况适当调整volume_clear_ionice的值。
shred会用一些随机内容覆盖文件所在的节点和数据块,cinder在这里条用shred默认参数采用-n 3即重写3次。

场景二. 数据相对安全的同时,降低数据卷删除时间

volume_clear采用zero填充,根据情况设置volume_clear_size大小,我们都知道,磁盘的开头部分保存着文件系统的元数据以及索引,清空这部分可以一定程度上保证数据的安全。

至于volume_clear=none这种直接删除lv而不清空数据的方式,我就不建议采用了,毕竟Cinder提供这么多配置选项来帮助我们减少数据卷删除时间,我们有何理由不用呢。

参考:
https://blueprints.launchpad.net/cinder/+spec/when-deleting-volume-dd-performance
https://review.openstack.org/#/c/74810/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容