PCメンテナンス時におけるイメージ作成ツールの利用

イメージ作成ツールclonezillaを使用したディスクのクローニング


1.はじめに

ネットワークエンジニアというとサーバーやスイッチ、ルータの設定や管理といったメンテナンスが専門で、エンドユーザーのPC端末は門外漢といったイメージが先行するものだが、実際には違う。

組織のコンピュータネットワークシステムを考えたときに、どこまでがネットワークエンジニアの仕事の範疇かを考えたときにエンドユーザーのPC環境の整備まで含まれる。

組織のネットワークに接続するPCがユーザー毎にバラバラの環境だとサポートがしがたいし、思わぬセキュリティホールやセキュリティ侵害を発生し得ない。

例えば、すでに開発元がサポートを打ち切ったWindows 9.x(Windows95,98,Me)は2度とセキュリティパッチは配布されないためOSの脆弱性は改善されない。そのため、Windows 9.x系のOSを使用し続けることは刻一刻とセキュリティ上の深刻な危機にさらされている。
また、P2Pソフト(=Winny、Share、WinMX・・・、etc)をインストールして使用していたり、ウィルス対策ソフトをインストールしないでインターネット上からフリーソフトをダウンロードして使用しているPCを社内のネットワークに接続させてしまうのは非常な脅威になりうる。

米国の大手ウィルス対策ベンダの試算によると、企業のウィルス感染被害のほぼ100%は私物PCの社内ネットワーク接続によるウィルス拡散によるものだ。また、従業員数300人以上の企業の9割以上は個人所有PCの社内持ち込みを完全禁止としている。

どのような環境(=メーカー、機種、OS、インストール済ソフトウェア)のPCをネットワークに接続させてユーザーに使用させるか、境界条件を明確化しておくことがトラブル発生時の調査、検証、解決に重要な役割を果たす。
より高品質のサービス提供のためにはエンドユーザーの環境を一律化し、普段から運用にとっての好ましくない要因を発生をコントロールすることが必要不可欠となる。

ネットワーク設計の一環としてどのような端末を自組織のネットワークに接続して使わせるか、といったエンドユーザー環境の管理もネットワークエンジニアの仕事の範疇に含まれる。

2.エンドユーザー環境のメンテナンスの実際

企業組織で、エンドユーザー向けにPCを導入していると『メンテナンス』が大きな課題となってくる。

たいていの企業では従業員に使用させているPCは減価償却の兼ね合いから、3年で新機種へのリプレースを行う。また、消耗品であるゆえに、機器の故障というのが発生しうる。最も発生頻度の高いものは、HDD装置の故障によるパーツ交換だ。

リプレースやHDD装置の交換を行えば、ユーザーの使用環境の再構築をしなければならない。
最低限、全従業員が共通して業務使用するソフトウェアのインストールをする必要がある。実際の業務では、最低限の作業では済まないのが通常だ。

小生の場合の挙げると、

 ・OSのインストール
 ・OSのチューニング
 ・標準ソフトのインストール
 ・ネットワーク接続の設定
 ・セキュリティソフトのインストール
 ・メールソフトの個人設定
  (所要時間 2.5h/1台)

 などがある。  

これらの作業をCD-ROMやDVDを使用して1台ずつ行っていくと、すべて(=約3000台)を終えるのに膨大な時間とコストが掛かってしまう。

例えば、作業員を5人、確保できる作業場所の関係から作業員1人が同時に作業できるのは6台とする。
1度の作業で30台処理できるが並行作業のタイムロスを考慮して3時間程度掛かる。食事やお手洗い休憩、日々の作業準備と後片付けの時間を除外した実作業時間を8時間と換算すると、1日で80台処理できる。作業中に不測の事故が全くなかったと仮定して最短で38日掛かる。

だが、これだけの日数とコストのかかる作業は、現実的ではない。
そこで、作業効率を上げるために幾分かバックアップ用のツールを使用して作業時間を削減して、単位時間あたりの作業量を向上することが業務改善として考えられる。

小生の場合に限らず、多くの企業組織で上記のようなメンテナンス作業を行う場合は、CD-ROMやDVDからイチイチインストールをするようなことはしない。

あらかじめ各機種毎に全社共通で使用する設定を施したPCからHDDのクローンデータを作成しておき、それをクライアントPCのHDDにコピーする。

HDDのクローニングツールは複数のソフトハウスからも市販されているが、今回はフリーのツールでそれなり実績を挙げているClonezilla Liveを題材として取り上げていく。

3.Clonezilla Liveとは

Clonezilla LiveはLinuxのバックアップツールClonezillaを手軽にCDから起動し使えるようにした1CD Linuxだ。最近では、USBメモリへの書き込み用のイメージも用意されているのでUSBメモリから使用することも可能になった。

ディスクイメージ作成やファイルのバックアップ、ディスクの完全コピーなどが行える。また、ブート領域も含めて移動できるので起動ディスクもバックアップできる。

全体的にはコマンドラインを使う必要があり面倒なのは否めまないが、Unixのddコマンドなどとは異なり、HDDのデータの存在しない部分はコピーしないためイメージファイルを作る時間が大幅に短縮されているのが秀逸なところだ。

本ツールは台湾のエンジニアが開発しているため英語以外では繁体字の中国語に対応しているが、残念ながら日本語には未対応なのが現状だ。

Clonezilla Liveを使うには、まず、CDイメージファイルがあるので、これをダウンロードして、CDに書き込む。

作ったClonezilla LiveのCDをドライブにセットして、PCをCD-ROMドライブからブートするようにBIOSを設定し、起動すると、CD-ROMドライブからClonezilla Liveが起動する。

4.Clonezilla Liveの使い方

本ツールは、バックアップデータからシステムを復旧するツールだ。基本的に、復旧対象の元となるデータがなければ何も始まらない。本章では、バックアップデータの作成について解説していく。

4−1.準備

まずはバックアップすべきハードディスクのイメージファイル(=復旧元のマスターデータ)を作成する。CD-ROMで起動すると最初に以下のような起動画面が表示される。ここでは何をすればよいのか、よく分からないだろうが、とりあえずは[Enter]キーを叩こう。

[Enter]キーを叩くと下記のような画面が表れ使用言語をたずねてくる。ただし、本ツールは英語か中国語(繁体字)のみにしか対応していないので、どちらか分かるほうの言語を選択しよう。

使用言語を選択したら、下記のように本ツールについての説明が英語か中国語で表示される。

操作を続けるには、上記画面の末尾にあるように[Enter]キーを叩く。すると、下記画面のようによく見慣れたLinuxのコンソール画面が表示される。

Linux用に開発されているためか、オペレーションは基本的にCUIによるコマンドタイプとなる。
マズ、手始めにrootにユーザーを切り替えて作成したイメージを書き込むディスク領域をマウントする。
以下の例では、/dev/hdb1を/home/partimagとしてマウントしている。

$ sudo su -
(ディスクのマウントを行う)
# mount /dev/hdb1 /home/partimag

Windowsのディスクを使用する場合、NTFSフォーマットしたHDDでは書き込みが出来ない。これは、Clonezilla Liveに限ったことではない。有名なツールではKnoppixに同梱されているPartiton ImageでもNTFSフォーマットされたHDDにはデータを書き込むことは出来ない。これは、NTFSフォーマットへの書き込みにシステムが対応していないことが原因で、たいていのオープンソースのツールはデータは読めるけど書き込めない、という傾向がある。現状では、WindowsフォーマットではFAT32フォーマットディスクにしか書き込みに対応していないので注意が必要だ。

デメリットを先に述べてしまったが、メリットとしての機能にネットワーク上の別マシンにあるディスク(SSHサーバとSAMBAが使用可能)にネットワーク経由でイメージを書き込むことが可能だ。別のマシンを使用する場合には以下のようにコマンドを叩く。
以下の例では、/192.168.0.15:/imageを/home/partimagとしてマウントしている。

(SSHサーバを使う場合)

# sshfs hoge@192.168.0.15:/image /home/partimag

(Windows共有ファイル(Samba)を使う場合)

# mount -t cifs -o username=hoge //192.168.0.15/image /home/partimag

いずれもhogeがユーザー名、/imageがイメージファイルを書き込むフォルダとなる。

4−2.Clonezillaの起動からイメージ作成

ここまでで、下準備らしきものは終わった。
以下からは、実際のClonezillaを起動しての作業となる。

# ocs-sr -x

上記のコマンドを打ち込むと、使用言語を聞かれるが、とりあえず[Enter]キーを押すと以下のようにClonezillaの画面が立ち上がる。
まずはコピー元ディスクのイメージを作る事となる。マウスオペレーションは無効となるので、キーボードオペレーションからメニューの[savedisk]を選び、[Enter]キーを叩く。

オプションを選ぶ画面が表示されるが、基本的にこのまま[Enter]キーを押してしまおう。

イメージファイルの圧縮形式を決める。このようなメニューは商用・非商用問わず付属している場合が多いが、何となく本格的なツールという感じがするのは小生だけではないはずだ。
基本的にこのままでかまわないが、上から[圧縮なし]、[gzip]、[bzip2]、[lzo]となっている。[圧縮なし]にすればイメージ作成までの時間は短いがその分ディスクスペースを圧迫する。逆に圧縮してのイメージ作成を指定すればディスクスペースは節約できるがその分処理に時間がかかる。状況に応じて項目を選択し[Enter]キーを叩く。

いよいよ、作成するイメージの名前を選択する。特にイメージの名前は初期状態のままでもかまわないが、運用を考えていくのならば、それがどのようなイメージなのか端的に分かる名前をつけておきたいものだ。
適当な名前をつけて[Enter]キーを叩く。

イメージ作成をする元となったディスクを選ぶ。ここでは/dev/hdaを選ぶと注意書きと確認が出てくるが、スタンスとしては基本的にOKなので[Y]を入力して[Enter]キーを押下すると、イメージファイルの作成が始まる。

イメージファイルが出来上がるまでしばらく待つ。イメージファイルが出来上がったら[0]を入力し[Enter]キーを押してツールを終了させる。

4−3.イメージファイルからのリカバリ

手間ヒマかけてイメージが作成できたが、そのイメージを使ってリカバリ出来ないのはナンセンスだ。データのバックアップはシステム障害が発生して復旧させるために使用できてナンボのものなのだ。この事を踏まえて本節では新しいディスクにイメージを書き込む方法について解説していく。
用意するものは前節でイメージを書き込んだディスクと新しいハードディスク。新しいハードディスクはフォーマットしている必要はないがIDEの場合、マスターディスクの方を使う必要がある事に注意しておこう。

今回もClonezilla liveをCDから起動する。起動ディスクでOSが起動したら " # ocs-sr -x " コマンドによるClonezillaの起動まではイメージ作成時と同じだが、/home/partimag/にマウントするディスクは予めイメージファイルが置かれているディスクになることに注意をしておこう。もちろん書き込み時と同様にリモートにあるファイルをsshやSAMBA経由でマウントすることもできる。
以下の画面のようにClonezillaが起動したらメニューの[restoredisk]を選び、[Enter]キーを叩く。

次に書き込み時のオプション選択画面が表示される。よく分からない場合はデフォルトの状態の選択で[Enter]キーを叩いても何の問題もない。

/home/partimag/ に保存されているイメージファイルの一覧が表示される。リカバリしたいイメージファイルを選択し、[Enter]キーを叩く。

リカバリイメージを選択したら、リカバリ先のディスクを選択する。市販のリカバリツールとは異なり、IDEの場合はプライマリのマスターディスクしか現行バージョンでは選べないようだ。

市販のリカバリツールと同様にリカバリ実行前の最終確認が行われる。特に問題がなければ [y] を押下して [Enter] キーを2回叩く。リカバリ対象のディスクへイメージが流し込まれる。

リカバリ中は画面にリカバリ進行度合いが%表示されていく。100%になれば、書き込み完了で [0] を押下し [Enter] キーを叩くと作業は完了する。

再起動後は、イメージファイルを作成したマシンと全く同じ環境で稼働させることができる。

5.補足 − ディスクサイズの増やし方

リカバリイメージからリカバリ先のディスクに書き込んだ場合、リカバリイメージとリカバリ先のディスクサイズが同じであれば問題がないが、故障によるHDDの交換時期によってはリカバリ先の方が大容量になってしまうことは最近ではよくある。

ユーザーの観点からすれば、HDDの交換後に元のHDDよりもディスクサイズが大きくなれば、その分データが保存できるので好ましいことばかりであるが、イメージからリカバリをする側としては少々問題ではある。小生が普段の会社業務で使用している市販ツール(= Symantec LiveState Recovery Desktop)ならば、リカバリ先のディスクが大きい分には問題がないが、Clonezilla Liveのようなフリーのツールの場合リカバリ先のディスクの方が大容量だった場合に自動的に対応する機能は備えていない事が多い。

ではどうするのか?

方法として差分のディスクスペースを別のパーティションとして使う、という方法もあるのだがユーザーへの利便性は低くなる。トータルとして使用できるディスク容量が増えたとしても、パーテーションが分けられて別ディスクとなるとエンドユーザーには使いがたい。たいていのエンドユーザーは一つのディスクでデータを扱えることを求める傾向がある。

少々面倒ではあるが、fdiskコマンドとntfsresizeコマンドを使ってディスク領域を広げて1つのディスクとして使用する事が可能だ。以下にその方法を示す。

以下の例では /dev/hda (プライマリのマスタディスク)のディスクのディスク領域を拡大するものとする。

(1)パーテーションの削除

初めにことわっておくが、この作業はリカバリ元のディスクよりも、サイズの大きいHDDにリカバリした後に行う。

# fdisk /dev/hda
fdiskコマンド実行後にpコマンドでパーテーションテーブルを表示させる。
Command (m for help): p

Disk /dev/hda: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 17731 83778666 7 HPFS/NTFS <- 作業前のディスクサイズ

パーティションを作りなおす。dコマンドを入力して現在のパーティションを削除する。
Command (m for help): d
Selected partition 1

(2)パーテーションの作成

上記のfdiskはまだ実行中の状態で、nコマンドでディスク全体を使ったパーティションに作り直す。

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 1
First cylinder (1-22192, default 1): [Enter] キー押下
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-22192, default 22192): [Enter] キー押下
Using default value 22192

tコマンドで、パーティションの種類を決める。

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 7
Changed system type of partition 1 to 7 (HPFS/NTFS)

パーテーションの種類が決まったら、aコマンドでこのディスクからブートできるようにする。

Command (m for help): a
Partition number (1-4): 1

(3)パーテーションの確認

再びpコマンドで確認してみると、パーティションが拡大されたことが確認できるはずだ。

Command (m for help): p

Disk /dev/hda: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 22192 10485688+ 7 HPFS/NTFS <- ディスクサイズがこのように変わっているはずだ

これで8Gのパーティションが10Gのパーティションに拡張された。
サイズ変更した場合、起動時にチェックディスクが駆動するのでディスクをチェックして起動する事をお勧めする。

今回題材として取り上げた clonezilla は、クローンツールに分類されるソフトウェアだ。
クライアントPCならばHDDを1パーテーションとして使用していることが多いので、PCの環境を丸ごとクローンを作ってシステムのリカバリに使用できるし、サーバー環境の普及にも使用できる。

巷で運用されているサーバーのほぼ大部分は、ディスク領域を複数のパーテーションに分けて運用している。単に1台のHDDのパーテーションを複数に分けている場合があれば、複数大のHDDのそれぞぞれで複数パーテーションに切り分けている場合もある。
サーバー運用の基本として1台のHDDに対して1パーテーションでの運用は好ましくない。障害対策やパフォーマンス向上の目的で1台のHDDを複数パーテーションに分蹴るようにしている。

clonezilla はパーテーション単位でのディスククローンを作成するツールだ。予めパーテーション毎にディスクのクローンを定期的に作成しておけば、障害発生時の復旧に有利だ。

サーバー障害発生時のサーバー再構築はネットワークエンジニアの仕事にはつきものだ。
何か1つでかまわないので、障害発生時に備えて使い慣れたディスククローンツールものを持っていることはネットワークエンジニアとしての最低限のたしなみだ。