MBR、パーティションテーブルについて
まず、前提知識となる、MBR、パーティションテーブルの解説をいくつかのサイトから引用します(太字は引用者)。
マスターブートレコード (MBR)とは
マスターブートレコード (MBR) とは、ハードディスクの最初のセクタ (512 バイト) です。
http://www13.plala.or.jp/naka_jima/pc/MBR.html
パーティションテーブルとは
このうち,446バイト目から始まる64バイトがパーティションテーブルである.[…]16バイトのエントリ四つからなる.
http://www.cqpub.co.jp/interface/toku/200107/toku1_5.htm
ハードディスクの先頭に置かれ、コンピュータの起動時に最初に読み込まれるMBR(マスターブートレコード)に用意された、パーティション情報を記録する領域。1つのパーティションにつき16バイトで、4パーティション分が用意されている。
http://goo.gl/QA2hvs
1エントリは,アクティブフラグ(1バイト),CHSによる開始セクタ(3バイト),パーティションタイプ (1バイト),CHSによる終了セクタ(3バイト),LBAによる開始セクタ(4バイト),パーティションサイズ(4バイト)の各フィールドからなる.LBA開始セクタおよびパーティションサイズは,リトルエンディアンで表現される
http://www.cqpub.co.jp/interface/toku/200107/toku1_5.htm
Linuxコマンドラインでの確認
次に実際に実機でパーティションテーブルの中身を確認してみます。
環境
- さくらVPS
- CentOS 6.3 x86_64
コマンド
まずさくらVPSの仮想ディスクのMBRからパーティションテーブルを抜き出してみます。デバイスファイルに対して、hexdump
コマンドを使って中身をダンプしてみます。
この時、パーティションテーブルは上記の通り、「446バイト目から始まる64バイト」なので、そこを抜粋します。
# hexdump -C -s 446 -n 64 /dev/vda
000001be 00 fe ff ff ee ff ff ff 01 00 00 00 ff ff 7f 0c |................|
000001ce 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001fe
このパーティションテーブルの1エントリ目は以下であることが分かります。
00 fe ff ff ee ff ff ff 01 00 00 00 ff ff 7f 0c
また、上記の解説から、それぞれの値が意味するのは以下となります。
項目 | サイズ | 値 |
---|---|---|
ブートフラグ | 1Byte | 00 |
パーティションの最初のセクタ値(CHS) | 3Byte | fe ff ff |
パーティション識別子 | 1Byte | ee |
パーティションの最後のセクタ値(CHS) | 3Byte | ff ff ff |
パーティションの最初のセクタ値(LBA) | 4Byte | 01 00 00 00 |
パーティションの全セクタ数(LBA) | 4Byte | ff ff 7f 0c |
今回は例として、このパーティションテーブルの中に格納されているセクタ数を確認してみます。
上記で引用しているように、パーティションサイズは、リトルエンディアンで表現されるため、実際の値としては後ろのバイトから読みます。すなわち、0c7fffff
が値となります。これを10進数に変換すると、209715199
となります。
では、実際に合っているか確かめてみます。fdisk
コマンドでセクタ数を表示してみます(一部省略)。
# fdisk -lu /dev/vda
Sector size (logical/physical): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
/dev/vda1 1 209715199 104857599+ ee GPT
一致していることが分かります。
また、容量についても、確認してみます。1セクタは512Byteであると上の結果から見えていますので、これを計算すると、100GByteとなり、さくらVPSのプランと一致しています。
209715199セクタ*512Byte=107374181888Byte=100GByte
参考
マスターブートレコードの解析 http://nobumatu.web.fc2.com/boot/mbr.html
2001年7月号 特集第1章 http://www.cqpub.co.jp/interface/toku/200107/toku1_5.htm
http://www13.plala.or.jp/naka_jima/pc/MBR.html