LoginSignup
11

More than 5 years have passed since last update.

パーティションテーブルの中身をLinuxのコマンドラインで確認してみる

Last updated at Posted at 2014-12-10

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11