一昔前では、ディスクを管理するレコードは、PC/AT互換機(いわゆるIBM PC互換機)で用いられた
MBR(Master Boot Record) がデファクトスタンダードだった時代と違い、
GPT(GUID Partition Table) が主流となった今では、大容量のハードディスクが普通に利用できる環境になりました。
ただ、今でもOSのインストール時のデフォルトでは MBR が用いられることも多く、
ディスク交換時にパーティションの拡張を行う際、2TiB以上のパーティション作成ができないMBRでは 困ることも多くなってきました。
(当たり前ですが、partedコマンドを使っても MBR のディスクは、2TiB以上のパーティションは作成できません。)
そこで、今回は、その いわゆるMS-DOSフォーマットとしても知られている MBR から、大容量に対応した GPT への
ディスクの移行を行ってみたいと思います。もちろん、ディスクの初期化なしにデータ内容もそのまま移行してみます。
- 目次
- 履歴
2015年06月04日 初版
パーティションテーブルとは
MBR から、GPT への移行は、いわゆるパーティションテーブルの フォーマットの変更でもあります。 このパーティションテーブルが、ある程度、理解できていないと、移行手順の理解が深まらないので、 ここで簡単ながらパーティションテーブルについて、簡単に解説しておきます。
パーティションテーブルの概要
パーティションテーブルとは、
パーティションスキーマやパーティション管理テーブルなどとも呼ばれ、ストレージ(HDD,SSD,CD/DVD etc,)の先頭にある情報で、
一般にハードディスクのパーティションがどのエリアにあるかなどの管理情報が含まれた情報を指します。
また、コンピュータが起動時に、最初に見るのがこの情報で、この情報をもとに起動時にどこの情報を読みだすかをこの情報をもとに判断します。
パーティションテーブルの種類
ざっくりとパーティションテーブルには、以下のようなものがあります。(FreeBSDなどで対応しているもの)
|
MBR → GPT 移行する
前準備、必要なツールを確認する
ここでは、少なくとも gdisk および grub-install (または、grub2-install)を使用します。 まず、これらがインストールされているか確認してください。
|
もしインストールされていないようなら、CentOS系なら yum , Debian系なら apt-get を使ってインストールを済ませてください。
レスキューモード(リカバリモード)で起動する
ディスクの入れ替え等々ストレージのメンテナンスは、通常のシステム状態で行うことはありません。
一般的に、シングル(ユーザ)モードやレスキューモード(リカバリモード)などで作業を行うことが求められます。
ここでは、万全を期すためにも
レスキューモード ( Debian or Ubuntu では、リカバリーモード ) で作業を行うこととします。
CD/DVDドライブに インストールディスクを挿入し、システム再起動します。
CentOS 7 では、以下のような画面が表示されます。
Trouble Shooting を選択します。
Rescue a CentOS System を選択し、レスキューモードへ切り替えます。
上記のように環境設定を行うか確認メッセージが表示されます。
今回は、ディスクの変更だけですので、特別な環境設定は必要ありませんので、ここではSkipで良いでしょう。
上記のように レスキューモード のプロンプトが表示されますので、あとは、コマンドにてパーティションの変更を行います。
電源投入と同時に(GRUB2の場合)Shiftキーを押下します。
Ubuntu 14(LinuxMint) では、以下のような画面が表示されます。
|
|
ディストリビューション名 — recoverry mode を選択します。
起動の後、上記のようにリカバリーメニューが表示されます。
root Drop to root shell prompt を選択し、リカバリーモードのシェルを起動します。
上記のように Give root password …(…): とパスワードを聞かれるので、root(管理者)のパスワードを入力します。
上記のように リカバリーモード のプロンプトが表示されますので、あとは、コマンドにて各作業を行います。
それらの作業を行う前に、読み書き可で再マウントしておきましょう。
|
シングルユーザモードへの切り替えは、以下のコマンドで実行することができます。 遠隔操作では不可で、端末から直接、テキストモードでログインし、以下のように入力すればシングルユーザモードに切り替わります。(参考まで)
|
gdiskを使って MBR → GPT 移行する
2TiB以上のパーティションを作成する場合、ディスクが GPT でない場合は、GPTへ変換する必要があります。(ここでは、MBR から GPT への変換する必要があります。)
その際は、gdiskコマンドを使うと、うまく移行できるでしょう。(ただし、100%ではないようですので、バックアップを行うなど十分注意の上、作業を行ってください。)
( gdiskコマンドは、事前に(yum or apt-getなどで)インストールしておく必要があります。)
|
単純なデータドライブ(ディスク)の場合は、そもそもGRUBはインストールされていませんので、以降の作業は、必要ありません。
GRUBを再インストールする
ブートディスクの場合は、GRUBの再インストールが必要になります。
GRUBの再インストールのためにいくつかの手順があるので、以降にその手順にそって簡単に解説してみます。
BIOS boot partition を作成する
GRUBが利用する領域 BIOS boot partition も用意してあげる必要があります。
まずは、その BIOS boot partition を gdiskコマンドを使って作成します。
|
BOOTフラグを設定する
gdiskコマンドで GPT へ変更した際に、BOOTフラグが消えていることがあります。
とりあえず、その場合、parted コマンドで切り替えておきます。
|
grub を再インストールする
続けて、grub の再インストールを実行します。
|
再起動する
ここでの変更を有効にするためには、システムの再起動が必要になります。 (CD/DVDドライブの インストールディスクなどを装着している場合は、それらを取り出した上で再起動します。)
|
最後にディスクを確認
システム再起動後、正しくパーティションテーブルが変更されてたか確認してみましょう。 (起動が正しくできた時点では、パーティションテーブルはほとんどうまくいっていますが、最終確認の意味でチェックしておきましょう。)
|
fdiskでは、GPTのディスクは正しく読み込めません。
partedでは、GPTのディスクが正しく読み込めたことが確認できればOKです。
(おまけ)MBRはなぜ 2TiB以上のパーティションを作成できないのか?
ちょっと余談ですが、MBRはなぜ 2TiB以上のパーティションを作成できないのでしょうか?
答えは、MDRで定義されているパーティションサイズのエリアが 4 byte しかないからです。
パーティションのサイズは、セクター(1セクター = 512 byte) で保存されます。
つまり、4 byte = 32 bit ですから、
232 x 512 = 230 x 22 x 512 = 2,048 GiB = 2 TiB
※ GiB = 230
となるわけです。
(最近の 32bit Linux では、36bit対応できるようになっていますが、)32bit OS では、最大メモリアクセス可能なのは、4GiB までです。
これも同じような考え方です。32bit OS とは、そもそも 32bit毎に処理を行うことで、最大容量が32bitということでもあります。
つまり、
232 = 230 x 22 = 4 GiB
となり、4GiBが最大となるのですね。
これは、
情報通信分野では、KB(キロバイト) = 210、 MB(メガバイト) = 220 などと 2のべき乗(累乗)で慣用的に用いられますが、 SI基準(SI接頭辞)において、KB(キロバイト) = 103、 MB(メガバイト) = 106 などと 10のべき乗(累乗)で表すため、非常に混乱をきたすころがあります。 (正しくは後者であり、あくまで前者は慣用的に使われているというだけ)
その混乱を避けるために、2のべき乗(累乗)で表した 2進接頭辞 で各単位を表したのが、KiB(キビバイト)であり、MiB(メビバイト)などです。 (KiBは、kibibyte と表され、kilo binary byte の略)
以下は、その単位の一覧になります。
SI接頭辞 | 2進接頭辞 | |||
---|---|---|---|---|
単位名(記号) | SI基準値 | 慣用値 |
単位名(記号) | SIとの倍率 |
キロバイト (kB) | 103 | 210 | キビバイト (KiB) | 1.02 |
メガバイト (MB) | 106 | 220 | メビバイト (MiB) | 1.05 |
ギガバイト (GB) | 109 | 230 | ギビバイト (GiB) | 1.07 |
テラバイト (TB) | 1012 | 240 | テビバイト (TiB) | 1.10 |
ペタバイト (PB) | 1015 | 250 | ペビバイト (PiB) | 1.13 |
エクサバイト (EB) | 1018 | 260 | エクスビバイト (EiB) | 1.15 |
ゼタバイト (ZB) | 1021 | 270 | ゼビバイト (ZiB) | 1.18 |
ヨタバイト (YB) | 1024 | 280 | ヨビバイト (YiB) | 1.21 |
移行ができたら、partedコマンドで 2TiB以上のパーティションを作成することができるようになります。
また、先にも書きましたが、必ず、バックアップを採って作業を行ってください。 もし、失敗した時は、修復がかなり困難となります。 貴重なデータが無くなってしまう可能性があることを十分理解の上、作業を行ってください。
ここで記載の手順によるいかなる損害も補償いたしませんので、あくまで自己責任にて行って下さい。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
2019年8月6日, 9:16 PM
大変有用な情報をありがとうございます。
当方、現在、ubuntu16.04が入ったMBR形式のHDDを内容そのままでGPT形式に変え、更にUEFI設定もBIOSモードからUEFIモードに変えたいと考えています。
そんな中、いろいろ調べている時に、貴殿のページを拝見し参考にさせていただいている次第です。
1点気になるのは、この貴殿のページは、ディスクをGPT形式に変えた後も、UEFI設定はBIOSモードが前提となっているのですよね??
特に「4.GRUBを再インストールする」の項の内容は、UEFI設定はBIOSモードの前提ですよね?
もし厚かましくもお返事いただけましたら、大変幸いです。