スパースファイルって知ってる?
技術満足室の橋村です。
技術では、仮想化が進んでサーバをVMWareのゲストOSとしてサービスを提供
しています。もちろんバックアップしたりリストアしたりということをよくします。
バックアップは必須ですよね。
VMWareの上に数百ギガバイトのデータの塊で仮想サーバを扱います。
これを世代数を5つ、5台をバックアップすると、もし1台分が300GBあれば
300GB x 5 x 5 = 7.5TBの容量になるわけですが、実際バックアップしてみると
1TBもバックアップのサーバの容量がなくなっていない場合があります。
かなり不思議な感じです。簡単なサンプルでは、
[root@sp sp01-2019-08-07_16-20-01]# ls -l
total 257330272
-rw——- 1 root root 450971566080 Aug 8 02:12 sp-flat.vmdk
<ーーーー450GBのファイル
-rw——- 1 root root 520 Aug 8 02:12 sp.vmdk
-rwxr-xr-x 1 root root 2892 Aug 8 01:20 sp.vmx
-rw-r–r– 1 root root 30 Aug 8 02:12 STATUS.ok
[root@sp sp01-2019-08-07_16-20-01]# du -k .
257330272 ーーーでも、使用しているのは260GBくらい。
[root@sp sp01-2019-08-07_16-20-01]#
目を疑ってしまいますよね。なんと、450GBのファイルがあるのに260GBしかディスクを消費していません。このサーバは圧縮機能をもつ様なシステムではありません。
でも、なんだかお得な感じです。
こういうのをスパースファイルと言うそうです。
VMWareではEagerZeroedと言う、最初にディスク領域を確保する時、一度、確保した領域をZero(ヌル)で書きつぶす方法があります。このファイルをバックアップすると、なんとZeroで埋められた部分はディスク領域としてほとんど使用されないのです。そのため、Zeroの部分が多く残っているファイルはほとんどハードディスクの領域を圧迫しないのです。
だから100GBの空き容量しかないバックアップサーバでも10TBのファイルでも保存できてしまうのです。
でも、ちょっと注意点! もし、このスパースファイルをサポートしていないコマンドでファイルを作成したりするとどうなることでしょう。当然、復活の呪文で10TBのファイルは10TBの領域が必要となります。tarコマンドをこれを意識せずに使うと爆発的にディスク空き容量を食いつぶして逝きます。(そのため、-S と言うオプションがあります)
怖いですね! 気をつけましょう!
追伸) 僕はデジタルオーディオプレーヤを2014年には出荷が終わっているApple iPod classicの新しく入手したものに更新しました。魔改造版で赤色です。
U2の4人のサイン入りで、バッテリーは3倍の容量に増えています。
なんと512GB SSDを搭載しています。今のiPhone Xsの最上位モデルに匹敵する記憶容量です。
あと5年は大切に使いたいものです。