トップページ»3.1.Linux/UNIX»第6章 パーティション間移設作業

3.1.Linux/UNIX



第6章 パーティション間移設作業

4章で書いたとおり、私はNorton Ghostにより全体が80Gのハードディスクに対して40Gの領域にクローニングを行った。 残り40Gが未割り当てとなっているが、今回はここをhomeに割り当てて、旧homeから中身を移動してみたいと思う。

つまり既存のパーティション中にあるフォルダを丸ごと新規パーティションに移す作業の例だ。

ちなみにこの作業を行う前はルート(/)に40Gの大半が割り当てられている状態で、その中にhomeも存在している状態だった。 今回はhome専用にパーティションを作成し、従来そこに入っていたファイルを移設するまでの話となる。

当然の事ながら、今回の作業は別にFedora Core 2専用というわけではない。 例えばRedhat、Debian等でも同様のことは可能なので、似た作業をしたい方は参考にして頂きたい。




パーティションについて

まず最初にパーティションについて簡単に説明しておこう。

まずパーティションは大きく分けると基本パーティションと拡張パーティションの2つが存在する。 かなり昔の話になるが、元々パーティションといえば基本パーティションだけだった。

基本パーティションは最大で4つまでしかパーティションを作成することが出来ない。 これに対しハードディスクの大容量化が進み、更に多くのパーティションを切れる仕組みが切望された。 そしてそれに対する答えとして出てきたのが拡張パーティションとなる。

上記の図のように、拡張パーティションを先に確保し、その中に論理パーティションを作成する。 そしてこの論理パーティションを実際にマウントし使用する事になる。 この方法により基本パーティションの限界である4個より多いパーティションを作成することが出来るわけだ。 勿論4個より多いパーティションが必要でなければ全て基本パーティションでも構わない。(注:上記の図では論理パーティションの番号が1、2となっているが、説明のためと解釈して欲しい。 実際の番号は基本パーティションからの連番となる。)

ちなみに個々のパーティションサイズを動的に変更することは基本的にできない。 仮にパーティションのサイズ変更したい場合は、一度バックアップを取った上でパーティションを削除し、再度パーティションを作成していく等の手順が必要がある。 (Partition Magic等のツールを使う場合はこの限りではない。 またKernel2.4以降に標準で搭載されるLogical Volume Managerという仕組みで動的な変更が可能となるが、今回はこの仕組みについては触れない。 尚、Fedora Core 2上でのLVMは別途執筆する予定だ。)

以上が大まかな説明だ。 更に詳しく知りたい方はLinux JFハードディスクドライブの基礎知識あたりを参考にして頂きたい。

現状のパーティションテーブルを確認

では早速前回クローニングした後のパーティションの状況をfdiskでチェックしてみる。 単にチェックするだけなので、稼働中のFedora Core 2上で行って頂いて構わない。

ルートにてシェルを起動後

fdisk /dev/hda
p

私の場合、ハードディスクはプライマリのマスターに1台だけ接続されている状態なので/dev/hdaとなる。

2行目のpはパーティションテーブルを表示するfdiskのコマンドだ。 fdiskを使ったことが無い方はmコマンドでヘルプが表示されるのでそちらを参照されたい。

ちなみに私の環境のパーティションは以下のようになっていた。

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4734 37921432+ 83 Linux
/dev/hda3 4735 4865 1052257+ 82 Linux スワップ

この状態を図にしてみると以下のようになる。 図では各パーティションのサイズが一律同じように見えるが実際は大きさは異なる。 あくまでイメージとして見て欲しい。

これは先代SUMICOMの30GハードディスクにFedora Core 2を新規インストールしたとき、Fedoraのインストーラーがデフォルトとして割り当てたサイズが基本となっている。 Ghostでクローニングする際、ルート(/)を10G程伸張したが、それ以外はSUMICOM時代のパーティションサイズを引き継いだ状態だ。

今回はこの未割り当て部分の全て(40G)を/homeとして割り当てていく。

尚、私は今回全ての領域を割り当ててしまうつもりだったし、今後パーティションを分ける予定はないので、基本パーティションとして割り当てる。 この辺は人によって考え方が異なると思うが、自分が今後どうしていきたいか考えて基本か拡張かをチョイスしていけばいいと思う。


新しい基本パーティションの作成

それでは新しい基本パーティションを作成してみよう。 ここから先はハードディスクに対して書き込みを伴う作業となる。 最悪既存データの破損といった自体を招きかねないので慎重に慎重を期して作業して頂きたい。

fdiskを起動した後で、まずは新規パーティションの作成コマンド、"n"を入力する。

コマンド(mでヘルプ): n

すると基本パーティションを作るのか、拡張パーティションを作るのか問い合わせられるのでそれに答える。 今回は基本パーティションなので"p"となる。

------------------------------
e 拡張区画
p 基本区画(1-4)
------------------------------

次に基本パーティションの番号を入力する。 今回は4番目なので"4"となる。

------------------------------
区画番号 (1-4):
------------------------------

次に作成するパーティションの始点シリンダを入力する。 特に何も入力せずEnterだけを押せば自動的に現状作成済みパーティションの最終位置の値となる。

------------------------------
最初のシリンダ (4866-9729, default 4866):
------------------------------

最後に作成するパーティションの終点シリンダを入力する。 これによりパーティションのサイズが決まる。

今回は全て割り当てるのでEnterを押すだけでOKだが、別のパーティション用に空きを残しておきたい場合等は必要な容量分だけ割り当てて欲しい。 コマンドラインに出る説明の通り、+100Mと入力すれば100メガというようにも指定できる。

------------------------------
最後のシリンダ, または +size, +sizeM, +sizeK (4866-9729, default 9729):
------------------------------

これでパーティション作成作業は終わりだ。 念のため現在の状態を確認してみよう。

コマンド (m でヘルプ): p

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4734 37921432+ 83 Linux
/dev/hda3 4735 4865 1052257+ 82 Linux スワップ
/dev/hda4 4866 9729 39070080 83 Linux

確かに新しい基本パーティションが作成されている。 図にすると左のような感じとなった。

尚、パーティションを作成しただけでは実際にファイルなどを保存したりする事はできない。 この後に説明するファイルシステムの作成を行って初めて機能するようになる。

ここで注意して頂きたいのだが、この状態では今まで行ってきた作業内容がまだハードディスクに対して反映されていない。 最後に忘れず"w"コマンドで反映させていただきたい。 (反対に反映させたくない場合は、"q"コマンドでfdiskから抜けてしまえばいい。)


コマンド(mでヘルプ): w

以上で基本パーティションの作成は終わりである。 manによると作業後のリブートは必要無いような事が書かれているが、私はfdisk等を行った後はいつもリブートするようにしている。 今回もいつも通りリブートすることにした。

ファイルシステムの作成(フォーマット)

続いて先ほど作成したパーティションを実際に使えるようにファイルシステムの作成を行う。

今回はFedora Core 2標準のEXT3で行う例を挙げるので、別のフォーマットにしたい方はそちらの方法に読み替えて作業して頂きたい。

フォーマットのコマンドはいくつかあるが、今回はmkfsコマンドを使用する。

mkfs -t ext3 /dev/hda4

-tオプションでタイプを変更できるので、別のフォーマットにされたい方は予めmanコマンドなどで調べておくと良い。

フォーマットする領域のサイズに応じて所要時間も変わってくるが、終了するまである程度の時間を要する。 暫くおとなしく待とう。

homeのコピー

さて、次はいよいよhomeの中身を新しいパーティションにコピーする作業だ。

この作業は排他的に行うべきだ。 例えば他のユーザーがアクセスしている最中に作業を行うとデータの不整合につながる危険性がある。 自分以外のユーザーはいなく、かつデーモンなどバックグラウンドで動作するソフトウェアも対象となるボリュームを使用していないのであれば直接コピーしても構わないが、ここは安全を期して排他的な状態での作業とされたほうが良いだろう。

排他的な状態にする方法としてKNOPPIX等を使用しても良いだろうが、今回はシングルユーザーモードにして作業することにする。

尚、シングルユーザーモードにする事で、自分(管理者)以外のユーザーはアクセス不可能になる。 デーモンも全て停止することになるだろう。 またコピーにかかる時間は長くなるかもしれない。

その様な状況になっても問題のない様に、他に利用者がいる場合は予めアナウンスしておく等の準備をしてから行って欲しい。

またシングルユーザーモードに切り替わることでCUIのインターフェースになるので、通常GUIを使われている方は注意頂きたい。

今回はシングルユーザーモードにする為にinitコマンドを使用する。 シェルから以下のコマンドを実行してほしい。

init 1

シングルユーザーモードになったら早速コピー作業に移ろう。 まずコピー先となる新しく作成したパーティションをマウントする。 マウントポイントは適当に作成しておこう。 今回は/tmp/hometmpにマウントすることとする。

mkdir /tmp/hometmp
mount /dev/hda4 /tmp/hometmp

続いて旧homeの内容を新パーティション側にコピーする。

cp -Rpv /home/* /tmp/hometmp

コピーが終了したら、ls等実行してhometmpにコピーされているか確認しておこう。 確認が済んだら、一旦hometmpはアンマウントする。 同時に旧homeのフォルダ名をリネームして、バックアップとしておこう。 尚、作業完了後もしばらくの間はそのままにしておいた方が安全だと思う。

umount /tmp/hometmp
cd /
mv home home.bak

新パーティションのマウント

次に新パーティションを/homeとしてマウントしてみたいと思う。

まず今回作成したパーティションに対してラベルを付けよう。 まずルートになっている事を確認して

e2label /dev/hda4 /home

続いてfstabに今回作成したパーティションの情報を付け加える。 vi等のエディタで、/etc/fstabを開き以下の行を加えて欲しい。

LABEL=/home /home ext3 defaults 1 2

各パラメーター間はタブ又はスペースで区切ればいい。

先頭のフィールドは先ほどパーティションにつけたラベル名を定義する。 2番目のフィールドはマウントポイントの指定となる。

3番目はファイルシステムのタイプ。 先ほどフォーマットしたタイプとなる。 4番目はマウントオプション。 このdefaultsはデフォルトの設定でマウントするという意味だ。 ちなみにこれには自動的にマウント命令も含まれる。

5番目はdumpコマンドによるバックアップ時にバックアップする必要があるかの指定だ。 今回は/homeということでバックアップするよう1に設定した。 しない場合は0にすればいい。

6番目はfsckによるディスクのエラーチェックを行う対象とするかの指定だ。 ルート(/)には1を、それ以外には2を指定することでチェック対象とすることができる。 0にすればチェックしない。

簡単に記述内容を説明してきたが、詳細はman等で調べた方が良いだろう。 man fstabで表示できる。 ちなみに通常であれば上記内容でも問題になることはないだろう。

ここまでできたら実際にマウントしてみよう。

mount /home

これでマウントできたらほぼ作業は終わりとなる。

現/homeは新しいパーティションになっていて、旧/homeは/home.bakとリネームしたことでバックアップされた状態になっている。 バックアップは元のパーティション側に残っている状態なので、後で不要になったらフォルダごと削除してしまえばいい。

rm -rf /home.bak

ちなみにそのままバックアップしておくのはファイルサイズが大きくて嫌だという場合は、作業が終わってからtar+gzipで纏める等しておいても良いだろう。

通常環境に戻る

fstabの設定の部分でリブートしても自動的に新パーティションがマウントされるようになっているはずなので、リブートして通常環境に戻してみよう。

shutdown -r now

通常環境に戻ったら、正常に新パーティションが機能しているか確認して欲しい。

以上で作業は終了だ。


投稿日 : 2004年8月 5日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/53

コメント

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»3.1.Linux/UNIX»第6章 パーティション間移設作業