DongHao: 07 2011存档
最近看ext4代码,注意到了 punch hole (打洞)功能,就是可以把文件中间的一部分内容释放掉,但是剩余部分的文件偏移不变。
于是我问马涛同学这个punch hole一般用在什么场合。
马涛:可以用在虚拟机上,比如你从虚拟机里删掉了一个大文件,虚拟机可以用punch hole在虚拟硬盘把这个文件占用的空间释放掉
我:有哪款虚拟机这样做?
马涛:这是文件系统提供给虚拟机的一个feature,虚拟机有了这个feature的支持就可以节省硬盘空间。比如host上装了多台虚拟机,每个虚拟机都通过punch hole的方式来删除自己虚拟的大文件,这样一段时间后,虽然各虚拟硬盘加起来空间很大,但是实际占用的空间就很小。应该有虚拟机是这样做的,这个我没注意。
我:除了虚拟化呢?还有别的应用场景吗?
马涛:嗯....云计算应该也又用的吧
我:虚拟化,云计算,这都是新概念,早期做这个punch hole是干啥用的,就是早期的应用有吗?
马涛:....早期就是因为有了truncate来去掉文件的尾巴,那么出于逻辑完整,就需要一个调用来去掉文件的头或者中间,于是就有了这个punch hole
我:喔
事后我想了想,如果一个大文件,用户决定了文件中间的一段内容以后不需要再用到了可以删除了,在没有punch hole支持的情况下,似乎只能先mmap,然后memove把中间的内容覆盖掉,然后truncate缩短文件内容。而如果有了punch hole的支持,只需一个系统调用没有内存移动的开销,非常高效,虽然文件用 ls 看起来还是那么大,但实际占用空间(用 du -sh 看)已经缩短了。
也许数据库,搜索引擎里的大文件可以用上,我猜。
今年初一家人去吃了好几次“欢乐牧人”烤羊肉,物美价廉,爸一直念念不忘,叫我们再注意有没有类似的团购。
爸看得很认真,看完以后第一句就问:
“那以后还能吃碳烤羊肉不?”
关于存档
This page is a archive of recent entries written by DongHao in 07 % Y.
DongHao: 06 2011 is the previous archive.
DongHao: 08 2011 is the next archive.
Find recent content on the main index or look in the 存档 to find all content.
DongHao: 每月存档
- 02 2013 (2)
- 01 2013 (3)
- 12 2012 (6)
- 11 2012 (1)
- 10 2012 (4)
- 09 2012 (2)
- 08 2012 (4)
- 06 2012 (6)
- 05 2012 (2)
- 04 2012 (2)
- 02 2012 (3)
- 01 2012 (3)
- 12 2011 (2)
- 11 2011 (2)
- 10 2011 (6)
- 09 2011 (1)
- 08 2011 (3)
- 07 2011 (3)
- 06 2011 (3)
- 05 2011 (3)
- 04 2011 (3)
- 03 2011 (4)
- 02 2011 (2)
- 01 2011 (4)
- 12 2010 (5)
- 11 2010 (4)
- 10 2010 (5)
- 09 2010 (2)
- 08 2010 (7)
- 07 2010 (5)
- 06 2010 (5)
- 05 2010 (4)
- 04 2010 (5)
- 03 2010 (5)
- 02 2010 (7)
- 01 2010 (12)
- 12 2009 (11)
- 11 2009 (9)
- 10 2009 (10)
- 09 2009 (4)
- 08 2009 (8)
- 07 2009 (10)
- 06 2009 (4)
- 05 2009 (4)
- 04 2009 (6)
- 03 2009 (8)
- 02 2009 (5)
- 01 2009 (4)
- 12 2008 (5)
- 11 2008 (3)
- 10 2008 (8)
- 09 2008 (10)
- 08 2008 (7)
- 07 2008 (10)
- 06 2008 (6)
- 05 2008 (12)
- 04 2008 (12)
- 03 2008 (7)
- 02 2008 (5)
- 01 2008 (13)
- 12 2007 (9)
- 11 2007 (15)
- 10 2007 (29)
- 09 2007 (30)
- 08 2007 (24)
- 07 2007 (2)
- 06 2007 (7)
- 05 2007 (13)
- 04 2007 (8)
- 03 2007 (13)
- 02 2007 (8)
- 01 2007 (9)
- 12 2006 (7)
- 11 2006 (5)
- 10 2006 (6)
- 09 2006 (5)