以前、Red Hat Linux7を構築していて気づいたんですが、ディスクのサイズの単位が「MiB」になっていました。これを意識して構築している人、そうではない人がいるかもしれませんが、これを意識しないとデータサイズが大きくなるに連れて、想定しているディスクサイズと乖離が生まれる可能性があります。
まず、キビバイトについておさらいですが、これまではOSを構築する場合は、キロバイト(KB)で設定していたと思います。その為、実際にOSに割り当てられたサイズが小さくなるなんてことがあったと思います。
今回はタイトルにある通り、仮想化基盤について言及したいのですが、例えば、仮想化基盤、特に一般的に多く利用されているVMwareのESXiなどで仮想マシンを作成する場合は、キビバイトではなく、キロバイトで設定することになります。
例えば、Windowsサーバーの場合は、システム領域に「100MB」を割り当てます。すると、キビバイトに変換した場合に、実際に割り当てられたサイズが小さくなる現象があります。
これは、キロバイトとキビバイトの計算方法の違いによるもので、キロバイトは人間に分かりやすい10進数、キビバイトは機械が使用する2進数で計算されていることの違いです。
このサイズの違いについては、IBMのサイトに分かりやすく説明されています。
ストレージ・データの単位
2 進単位は、より正確にデータのサイズを表します。100 KB と 100 KiB のサイズを比較した場合、その差は比較的小さく 2.35% です。 しかし、データ・サイズの値が大きくなるにしたがって、この差は増大します。 100 TB と 100 TiB のサイズを比較した場合、その差は 9.06% になります
読んでもらうと分かりますが、サイズが大きくなるほど、差が大きくなります。読んでもらうと分かりますが、サイズが大きくなるほど、差が大きくなります。
10 進値 10 進値に相当する 2 進値 差
100 キロバイト (KB) 97.65 キビバイト (KiB) 2.35%
100 メガバイト (MB) 95.36 メビバイト (MiB) 4.64%
100 ギガバイト (GB) 93.13 ギビバイト (GiB) 6.87%
100 テラバイト (TB) 90.94 テビバイト (TiB) 9.06%
100 ペタバイト (PB) 88.81 ペビバイト (PiB) 11.19%
100 エクサバイト (EB) 86.73 エクスビバイト (EiB) 13.27%
例えば、仮想マシン作成時に100GBで割り当てると、GiBに変換した場合は、93.13GiBとなってしまいます。
この違いは、以下によって生じます。
1キロバイト = 10の3乗バイト = 1,000バイト1キビバイト = 2の10乗バイト = 1,024バイト
ということで、単位が今後、キビバイト計算で標準となれば、混乱が生じないのですが、キロバイト、キビバイトの差がある以上、正確に必要なディスクサイズを適用するのは困難です。
ちなみに、Windows Server 2016、Windows 10はコンピューターの管理で見るとMB、GBで表示されていましたが、実際には1024で計算されるそうです。
また、Linuxもコマンドによって、GB表示だったり、GiB表示だったりして、それによってディスクサイズに違いが出てきます。ということで、業界標準にしてもらえると、楽になると思いますね。