レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

2TiB超えパーティションのためのMBR(msdos)からGPTへの移行

2015年6月5日 2015年6月6日
howto replace disk

一昔前では、ディスクを管理するレコードは、PC/AT互換機(いわゆるIBM PC互換機)で用いられた MBR(Master Boot Record) がデファクトスタンダードだった時代と違い、 GPT(GUID Partition Table) が主流となった今では、大容量のハードディスクが普通に利用できる環境になりました。

ただ、今でもOSのインストール時のデフォルトでは MBR が用いられることも多く、 ディスク交換時にパーティションの拡張を行う際、2TiB以上のパーティション作成ができないMBRでは 困ることも多くなってきました。 (当たり前ですが、partedコマンドを使っても MBR のディスクは、2TiB以上のパーティションは作成できません。)

そこで、今回は、その いわゆるMS-DOSフォーマットとしても知られている MBR から、大容量に対応した GPT への ディスクの移行を行ってみたいと思います。もちろん、ディスクの初期化なしにデータ内容もそのまま移行してみます。

パーティションテーブルとは

MBR から、GPT への移行は、いわゆるパーティションテーブルの フォーマットの変更でもあります。 このパーティションテーブルが、ある程度、理解できていないと、移行手順の理解が深まらないので、 ここで簡単ながらパーティションテーブルについて、簡単に解説しておきます。

パーティションテーブルの概要

パーティションテーブルとは、
パーティションスキーマやパーティション管理テーブルなどとも呼ばれ、ストレージ(HDD,SSD,CD/DVD etc,)の先頭にある情報で、 一般にハードディスクのパーティションがどのエリアにあるかなどの管理情報が含まれた情報を指します。 また、コンピュータが起動時に、最初に見るのがこの情報で、この情報をもとに起動時にどこの情報を読みだすかをこの情報をもとに判断します。

パーティションテーブルの種類

ざっくりとパーティションテーブルには、以下のようなものがあります。(FreeBSDなどで対応しているもの)

MBR
Master Boot Record の略で、いわゆるPC/AT互換機(いわゆるIBM PC互換機)で用いられたことでデファクトスタンダードとなったもの。 MS-DOS、Windowsで標準として使用してきたこともあり、MBRを msdosやdos形式のパーティションテーブルと表記する場合も多い。(partedコマンドでは、msdosと表記される)
$ parted -l
...
Partition Table: msdos
...
GPT
GUID Partition Table の略で、MBRの後継パーティションで、2TiB以上のパーティションが作成できるもので、 最近では、ほとんどのOSで対応されているパーティション
APM
Apple Partition Map の略で、その名のとおりAppleの 旧Mac(Mac OS-X以前)のPowerPC で使われていたパーティション
BSD
その名のとおりBSD専用パーティション?で、MBRを全く用いないため、BSD以外は全く認識できないパーティションとしても知られたパーティション
PC98
旧来 PC/AT互換機(いわゆるIBM PC互換機)と別にNEC独自の PC-98 シリーズで用いられたパーティション ( MBR の別バージョンのようなもの )
VTOC8
Volume Table Of Contents の略で、いわゆる Sun SPARC系で用いられたパーティション。

MBR → GPT 移行する

この作業は、ディスク内容が完全に移行できるとは限りません。 万が一、失敗した際に大事なデータが無くなるのを防ぐためにも、必ず、ディスクのバックアップは採った上で、作業を行うようにしてください。

前準備、必要なツールを確認する

ここでは、少なくとも gdisk および grub-install (または、grub2-install)を使用します。 まず、これらがインストールされているか確認してください。

# gdiskがインストールされているか、パス検索で確認してみます。
$ which gdisk
/sbin/gdisk

# grub-installがインストールされているか、パス検索で確認してみます。
$ which grub-install
/usr/sbin/grub-install

もしインストールされていないようなら、CentOS系なら yum , Debian系なら apt-get を使ってインストールを済ませてください。


レスキューモード(リカバリモード)で起動する

ディスクの入れ替え等々ストレージのメンテナンスは、通常のシステム状態で行うことはありません。 一般的に、シングル(ユーザ)モードやレスキューモード(リカバリモード)などで作業を行うことが求められます。
ここでは、万全を期すためにも レスキューモード ( Debian or Ubuntu では、リカバリーモード ) で作業を行うこととします。

CentOS ScientificLinux

CD/DVDドライブに インストールディスクを挿入し、システム再起動します。
CentOS 7 では、以下のような画面が表示されます。

インストール初期画面

Trouble Shooting を選択します。

インストール初期画面

Rescue a CentOS System を選択し、レスキューモードへ切り替えます。

レスキュー選択画面

上記のように環境設定を行うか確認メッセージが表示されます。
今回は、ディスクの変更だけですので、特別な環境設定は必要ありませんので、ここではSkipで良いでしょう。

レスキュー選択画面

上記のように レスキューモード のプロンプトが表示されますので、あとは、コマンドにてパーティションの変更を行います。

Debian Ubuntu

電源投入と同時に(GRUB2の場合)Shiftキーを押下します。
Ubuntu 14(LinuxMint) では、以下のような画面が表示されます。

BIOSによっては、Shiftキーに特別な意味があったり、起動のタイミングが短すぎる場合など、うまく GRUBのメニューが表示されないことがあります。 その場合は、GRUB 起動時のタイミングを少し伸ばしてやるとうまくいくでしょう。
# grub のデフォルト設定を変更します。
$ vi /etc/default/grub
...
# grubの非表示タイムアウトを10秒に変更します。
# GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT=10
...
# grubの起動待ち時間が10秒であることを確認します。
# (デフォルト10秒になっているはずですが、10秒でない場合は 10 秒に変更しましょう。)
GRUB_TIMEOUT=10
...
変更したら、grub の設定を更新します。
$ update-grub
...
これで再起動した際に、BIOSの起動画面からOS起動までに10秒のタイムラグがありますから、(ほとんどは真っ暗な画面)そこで Shiftキーを押下すれば、GRUBのメニューが表示されるでしょう。
Grub画面

ディストリビューション名 — recoverry mode を選択します。

インストール初期画面

起動の後、上記のようにリカバリーメニューが表示されます。
root Drop to root shell prompt を選択し、リカバリーモードのシェルを起動します。

レスキュー選択画面

上記のように Give root password …(…): とパスワードを聞かれるので、root(管理者)のパスワードを入力します。

レスキュー選択画面

上記のように リカバリーモード のプロンプトが表示されますので、あとは、コマンドにて各作業を行います。

Debian or Ubuntu のリカバリモードで作業を行う場合、 リカバリモードのデフォルトでは、ファイルが読み取り専用となっていることに注意してください。 そのため、ファイルシステムの拡張などの実行時にエラーが発生する場合があります。
それらの作業を行う前に、読み書き可で再マウントしておきましょう。
# マウントを読み書き可でしなおす。
$ mount -o remount,rw /

(参考)レスキューモード(リカバリモード)とともによく利用されるのが、シングルユーザモードです。
シングルユーザモードへの切り替えは、以下のコマンドで実行することができます。 遠隔操作では不可で、端末から直接、テキストモードでログインし、以下のように入力すればシングルユーザモードに切り替わります。(参考まで)
# ランレベル 1 を指定し、シングルユーザモードへ切り替えます。
$ init 1; exit
: (rootパスワードを入力)

gdiskを使って MBR → GPT 移行する

2TiB以上のパーティションを作成する場合、ディスクが GPT でない場合は、GPTへ変換する必要があります。(ここでは、MBR から GPT への変換する必要があります。)
その際は、gdiskコマンドを使うと、うまく移行できるでしょう。(ただし、100%ではないようですので、バックアップを行うなど十分注意の上、作業を行ってください。) ( gdiskコマンドは、事前に(yum or apt-getなどで)インストールしておく必要があります。)

$ gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present
...
# MBR : MBR only となっていますから、 /dev/sda が MBR ディスクであることがわかります。
# 続けて w コマンド実行で、 MBR → GPT へ変換します。
Command (? for help): wreturn
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
# 最終確認です。データが消えるかも?しれませんよ、本当に実行しますか?という感じでしょうか。
# 実行する場合は、Y で変換が実行されます。
Do you want to proceed, possibly destroying your data? (Y/N): Yreturn
OK; writing new GUID partition table (GPT).
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

以下のGRUBを再インストールは、ブートドライブ(ディスク)の場合に必要となります。
単純なデータドライブ(ディスク)の場合は、そもそもGRUBはインストールされていませんので、以降の作業は、必要ありません。

GRUBを再インストールする

ブートディスクの場合は、GRUBの再インストールが必要になります。
GRUBの再インストールのためにいくつかの手順があるので、以降にその手順にそって簡単に解説してみます。


BIOS boot partition を作成する

GRUBが利用する領域 BIOS boot partition も用意してあげる必要があります。
まずは、その BIOS boot partition を gdiskコマンドを使って作成します。

$ gdisk /dev/sda
...
Command (? for help): nreturn
Partition number (1-128, default 2): 
First sector (34-15523806, default = 2048) or {+-}size{KMGTP}:34return
Last sector (34-2047, default = 2047) or {+-}size{KMGTP}:2047return
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):ef02return
Changed type of partition to 'BIOS boot partition'

Command (? for help): preturn

Disk /dev/sda: 83886080s

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2050047   976.5 MiB   EF00  Linux filesystem
   2         2050048        36866047   16.6 GiB    EF00  Linux filesystem
   3        36866048        40962047   2.0 GiB     8200  linux swap
   4              34            2047   1007.0 KiB  EF02  BIOS boot partition

# 続けて w コマンド実行で、実際のパーティションの変更を行います。
Command (? for help): wreturn
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
# 最終確認です。データが消えるかも?しれませんよ、本当に実行しますか?という感じでしょうか。
# 実行する場合は、Y で変換が実行されます。
Do you want to proceed, possibly destroying your data? (Y/N): Yreturn
OK; writing new GUID partition table (GPT).
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

BOOTフラグを設定する

gdiskコマンドで GPT へ変更した際に、BOOTフラグが消えていることがあります。
とりあえず、その場合、parted コマンドで切り替えておきます。

$ parted /dev/sdareturn
...
# 現在のパーティションを確認します。
(parted) p
Number  Start      End        Size       Type     File system     Flags
 1      2048s      2050047s   2048000s   primary  ext4             
...
# bootフラグを設定します。
(parted) toggle 1 boot

# 再度、パーティションを確認します。
(parted) p
Number  Start      End        Size       Type     File system     Flags
 1      2048s      2050047s   2048000s   primary  ext4             boot
...

grub を再インストールする

続けて、grub の再インストールを実行します。

$ grub-install /dev/sdareturn
...
Installation finished. No error reported.

再起動する

ここでの変更を有効にするためには、システムの再起動が必要になります。 (CD/DVDドライブの インストールディスクなどを装着している場合は、それらを取り出した上で再起動します。)

$ reboot

最後にディスクを確認

システム再起動後、正しくパーティションテーブルが変更されてたか確認してみましょう。 (起動が正しくできた時点では、パーティションテーブルはほとんどうまくいっていますが、最終確認の意味でチェックしておきましょう。)

$ fdisk -l

警告: GPT (GUID パーティションテーブル) が '/dev/sda' に検出されました! この fdisk ユーテ ィリティは GPT をサポートしません。GNU Parted を使ってください。


Disk /dev/sda: 42.9 GB, 42949672960 bytes
ヘッド 255, セクタ 63, シリンダ 5221, 合計 83886080 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1               1    83886079    41943039+  ee  GPT


$ parted -l
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sda: 42.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前                 フラグ
 4    17.4kB  1049kB  1031kB                    BIOS boot partition  bios_grub
 1    1049kB  2.00GB  2.0GB   ext4              Linux filesystem     boot
 2    2.00GB  20.4GB  18.4GB  ext4              Linux filesystem
 3    20.4GB  21.5GB  1072MB  linux-swap(v1)    Linux swap

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

となるわけです。

最近では、64bit OSが主流なので、あまり意識する必要もなくなりましたが、
(最近の 32bit Linux では、36bit対応できるようになっていますが、)32bit OS では、最大メモリアクセス可能なのは、4GiB までです。
これも同じような考え方です。32bit OS とは、そもそも 32bit毎に処理を行うことで、最大容量が32bitということでもあります。

つまり、
232 = 230 x 22 = 4 GiB

となり、4GiBが最大となるのですね。
バイトの単位には、KBとKiBのように2つの単位表記があります。
これは、
情報通信分野では、KB(キロバイト) = 210、 MB(メガバイト) = 220 などと 2のべき乗(累乗)で慣用的に用いられますが、 SI基準(SI接頭辞)において、KB(キロバイト) = 103、 MB(メガバイト) = 106 などと 10のべき乗(累乗)で表すため、非常に混乱をきたすころがあります。 (正しくは後者であり、あくまで前者は慣用的に使われているというだけ)
その混乱を避けるために、2のべき乗(累乗)で表した 2進接頭辞 で各単位を表したのが、KiB(キビバイト)であり、MiB(メビバイト)などです。 (KiBは、kibibyte と表され、kilo binary byte の略)
以下は、その単位の一覧になります。
SI接頭辞 2進接頭辞
単位名(記号) SI基準値 慣用値(2進接頭辞の値) 単位名(記号) SIとの倍率慣用値÷SI基準値
キロバイト (kB)103210キビバイト (KiB)1.02
メガバイト (MB)106220メビバイト (MiB)1.05
ギガバイト (GB)109230ギビバイト (GiB)1.07
テラバイト (TB)1012240テビバイト (TiB)1.10
ペタバイト (PB)1015250ペビバイト (PiB)1.13
エクサバイト (EB)1018260エクスビバイト (EiB)1.15
ゼタバイト (ZB)1021270ゼビバイト (ZiB)1.18
ヨタバイト (YB)1024280ヨビバイト (YiB)1.21

いかがだったでしょうか?うまく移行できたでしょうか。
移行ができたら、partedコマンドで 2TiB以上のパーティションを作成することができるようになります。

また、先にも書きましたが、必ず、バックアップを採って作業を行ってください。 もし、失敗した時は、修復がかなり困難となります。 貴重なデータが無くなってしまう可能性があることを十分理解の上、作業を行ってください。

ここで記載の手順によるいかなる損害も補償いたしませんので、あくまで自己責任にて行って下さい。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

HDD から 容量の小さい SSD へディスクの入れ替えを行ってみた

[ 画像提供元 : Amazon ] SSDも最近は安くなりました。上記は、120GBで5,000円そこそこと、かなりリーズナ ...

ディスクの交換手順をまとめてみた(LVMパーティション&partedによるパーティション拡張編)

今回は、ディスク交換手順とLVMパーティションの拡張を簡単に解説してみたいと思います。 (ディスクの交換手順をまとめてみた(LVMパーティショ ...

ディスクの交換手順をまとめてみた(通常パーティション&partedによるパーティション拡張編)

今回は、旧来のディスク交換手順を簡単に解説してみたいと思います。 (ディスクの交換手順をまとめてみた(通常パーティション&fdiskによるパー ...

DeabinのLive USB を作成する

今回は、Live CD ならぬ Live USB を作成してみたいと思います。 Live USBをWindows上で作成できる作成ツー ...

Windows で Linux ファイルシステム LVM + Ext4 のディスクをマウントするには?

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2752 [s]