もくじ

(4)全部のコンピュータにコピーする(2010/9/10)

作業の手順

このページは「Squeezeを40台にコピーするまでの手順(2010/9/10)」(4)の詳細です。

基本となる作業の手順は次のとおり

  1. コピー元のコンピュータをCD(またはDVDまたはUSBメモリ)で起動する。
  2. HDDのディスク全体、またはパーティションのイメージをサーバーにsaveする
  3. コピー先のコンピュータをCD(またはDVDまたはUSBメモリ)で起動する。
  4. サーバーのイメージをHDDにリストアする。

このsave-restoreに前回まではpartimageというソフトウェアを使用していました。partimageによる40台コピー(2010/5/10)に紹介しています。今回は Clonezilla Live を使用しました。

Clonezilla

Clonezillaはオープンソースでclonezilla.orgに説明からダウンロードまですべてがあります(英文)。製作、配布元については詳しくはわかりませんが、台湾の National Center for High-Performance Computing です。少し前の版では起動画面に「國家高速網路與計算中心」とありました。

Clonezillaは、SE(Server Edition)とLiveの2つがあります。LiveはCD(またはDVDまたはUSBメモリ)で起動する形式のもので、SEはネットワークブートを使うものです。SEは特に Wake on lan と組み合わせてサーバー側から指令を出して一斉にリストアが可能とのことです。今回は従来どおりの概念でLiveを使います。

イメージの保存先は、サーバーの他、USBドライブを選択することも可能です。サーバーもssh, samba, nfs から選択できます。振り返ると、sshやsambaも試せたはずですが、今回はnfs。

またイメージでなく直接HDD同士でコピーも可能です。組み立て前ならこれがいいでしょう。

今回乗り換えたのはいつも起動に使っていたKnoppixEduが、今回の環境で使用できなかったから。 SATAを探さないのでCDを探し出せない,ネットワークの設定に失敗する,などの問題でした。もちろん最近のKnoppixで起動してpartimageを使うという選択肢もありましたが、機能の高いClonezillaを試すことにしました。Clonezillaもいくつかのトラブルに見舞われましたが、たぶんClonezillaの責ではありません。時間が限られる中、最善の方法を選択したともいえないかもしれませんが、その考察も含めて記録します。

今回の環境(ソフトのバージョン、MBの型番、NICの種類など)

Clonezilla20100811-maverick と Clonezilla 1.2.6-4-i686 を使用

マザーボードはBIOSTARの TA785GE 128M 。購入時のBIOSは、88GCOA07 BS 10/07/09 BIOSの更新もやってみましたが変化はありません。新BIOSは 88GCO701 BS 07/01/10 で、バージョン番号がA07から701に減る命名は初めてです。

コピーするOSはSqueeze。 debian-testing-i386-netinst.iso(04-Aug-2010 183M) からネットワークインストールしたものです。(Linux 2.6.32-5-686 #1 SMP Wed Aug 25 14:28:12 UTC 2010 i686 GNU/Linux)

オンボードのネットワークインターフェースはRTL8111ですが、Squeezeのインストール中にファームウェアファイルが不足なのでrt18168d-1.fwをインストールする様にいわれます。このファイルが見つからず、結局r8169.koというドライバが使用され、起動時のdmesgには 次のようなメッセージが残ります。

[    1.007974] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    1.007990] r8169 0000:02:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
[    1.008015] r8169 0000:02:00.0: setting latency timer to 64
[    1.008054] r8169 0000:02:00.0: irq 26 for MSI/MSI-X
[    1.012488] eth0: RTL8168d/8111d at 0xf7d92000, 00:30:67:39:dd:7d, XID 081000c0 IRQ 26
....
[    1.018180] r8169 0000:02:00.0: firmware: requesting rtl8168d-1.fw
....
[    1.019831] eth0: unable to apply firmware patch
....
....
[    8.026041] r8169: eth0: link up
[    8.026052] r8169: eth0: link up

Clonezilla 1.2.6-4-i686 では同様のメッセージがでています。Clonezilla20100811-maverickではでません。この"unable to apply firmware patch"が問題を引き起こしているという確かな証拠はありませんが、この疑いが今回の一連の作業の間に起こった問題の解明に邪魔になりました。

保存の前に(persistent-net.rulesの書換)

saveの前にネットワークインターフェースの記録削除(/etc/udev/rules.d/70-persistent-net.rules)が必要です。

下記は/etc/udev/rules.d/70-persistent-net.rulesの内容です。消さないとどうなるかの例として載せています。最初のSUBSYSTEMで始まる行(実際には1行にかかれています)はコピー元のコンピュータで起動時に書き込まれたものです。MACアドレス"00:30:67:39:e6:c6"のインターフェースに"eth0"を設定したという記録です。次回のインターフェースを割り当てるときも"00:30:67:39:e6:c6"のインターフェースには"eth0"を割り当てます。次のSUBSYSTEMで始まる行(これも実際には1行にかかれています)は、コピー先のコンピュータで追加された行です。このコンピュータのネットワークインターフェースのMACアドレスは当然コピー元のとは異なり、"00:30:67:39:e5:11"です。"eth0"はすでに"00:30:67:39:e6:c6"に割り当てられていますから、新しく見つかったインターフェースには"eth1"を割り当てます。 が残っているとトラブルになるのでsave前に消します。ネットワークインターフェースが1つしかない場合はSUBSYSTEMで始まる行も1行でしょう。全行消去でいいのですが、私は最初の注意書きを残しています。

/etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:67:39:e6:c6", 
 ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" (実際は1行)

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:67:39:e5:11",
 ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" (実際は1行)

削除した部分はコピー先のコンピュータを最初に起動した時にコピー先のインターフェースに合わせて、eth0として書き加えられます。

70-persistent-net.rulesというファイル名は前のバージョンのLennyでは25-persistent-net.rulesでした。今後も変更の可能性があります。また、こんなことをしなくてもいいように改良の可能性もあります。

保存

(1)起動選択(写真)
次から選択。
Clonezilla live(Default settings, VGA 800x600) Other mods of Clonezilla live Local operating system in harddrive(if available) Memtest & FreeDOS Network Boot
このまま[Enter]を押してデフォルトを選択します。
(2)言語の選択
English Espanol Francais Italiano 日本語 簡体中文 正体中文-台湾
この前のバージョンではEnglish,正体中文の2つしかありませんでした。
せっかくなので日本語を選択。
(3)キーマップの選択
アーキテクチャリストからキーマップを選択 キーマップをいじらない カーネルのキーマップを保持 完全なリストからキーマップを選択
「キーマップをいじらない」だと英語キーボードになります。知っていればこれでもいけます。" | = : などの記号のとき困りますが、英数字と . / の記号だけなら共通なので困りません。
途中でシェルに入って手動でいろいろやるなら[アーキテクチャリストからキーマップを選択]-[qwerty]-[Japanese]-[standard]と選択して日本語キーボードにした方が便利です。
(4)Clonezillaを開始します
Start_Clonezilla Clonezilla を開始します。 Enter_shell コマンドラインプロンプトに移行します。
Start_Clonezillaを選択
(5)モード選択
device-image ディスク/パーティション⇔イメージ device-device ディスク/パーティション⇔ディスク/パーティション
今回はdevice-imageを選択。ディスクを2台つけて直接コピー(イメージを作らないで直接)はdevice-device。組み立てる前のHDDならこれも便利。
(6)イメージディレクトリのマウント
local_dev ローカルディスク(例:ハードディスク、USBドライブ)をマウント ssh_server SSH サーバをマウント samba_server Samba サーバをマウント nfs_server NFS サーバをマウント enter_shell コマンドラインプロンプトに移行します. 手動で実行 skip 既存の /home/partimag を利用(メモリ! 【お薦めしません】)
本校では今まで使ってきたpartimageのためにnfsサーバーが用意されているのでこれを使いました。この選択肢ならssh,samba共に使えたかもしれません。習慣でnfsを選んだだけです。4GB超のUSBメモリがあるならそこに保存するのもいいかもしれません。
Clonezillaは指定したものを/home/partimagにマウントして、そこにイメージを保存します。今回のイメージは2GB程度でした。圧縮するのでその方式にもよります。
(7)ネットワーク設定
dhcp DHCP ブロードキャストを使用 static 固定 IP アドレスを使用 pppoe PPPoE を使用 enter_shell コマンドラインプロンプトに移行します. 手動で実行
ネットワーク必要とする ssh, samba, nfs などを選択したので、ここに来ました。本校にDHCPサーバーがあるのでいつもこれを利用しています。一度なら固定もいいのですが、リストア時に毎回しかも同時に起動しているコンピュータに異なるアドレスを手動で指定するのは現実的ではありません。
(8)NFS version
nfs NFS v2, v3 nfs4 NFS v4
(6)で nfs を選択したので聞かれています。本校のサーバーは v3 なのでそれを選択します。
この nfs のバージョンで思わぬ不具合に出会ったのですが、多分他の方々は大丈夫だと思います。
(9)nfsサーバーのIPアドレス
10.5.5.1 ________________
DHCPサーバーを利用したのでDHCPサーバーのIPアドレスが表示されます、NFSサーバーのIPアドレスにします。同じならそのまま。
(10)保存/読み出しするサーバーのディレクトリ
/home/partimag/ _________ (←これはデフォルト値 サーバーの公開ディレクトリ名に書き換える)
デフォルトの値はClonezillaのマウント先のディレクトリです。サーバーのディレクトリに書き換えます。ここが分かりにくい。最近のサーバーの習慣にならい、/srv/partimg/ などがデフォルトだとわかりやすいと思います。nfsサーバーの設定に合わせて書き換えます(今回の例では/home/partimage/)が、逆にサーバーの設定をこれに合わせればリストアの時には便利です。
(11)マウントの確認
The path in nfs server is: /home/partimage/ Mounting NFS server by: mount -t nfs 10.5.5.1:/home/partimage/ /home/partimag ファイルシステムディスク容量 ********************************************************. Filesystem Size Used Avail Use% Mounted on aufs 886M 4.6M 882M 1% / tmpfs 886M 0 886M 0% /lib/init/rw ............. fusectl 0 0 0 - /sys/fs/fuse/connections 10.5.5.1:/home/partimage/ 40G 25G 14G 65% /home/partimag ********************************************************. [Enter]を押して続けてください..▮
このように表示されればマウントは成功。今回はどういうわけかここで成功することはまれでした。その原因と対処法は下の 「nfsマウントが失敗する問題」 に書きました。いろいろな特殊な事情が重なって起こるまれな例と考えられるからです。
(12)実行モード選択
Beginner 初心者モード:デフォルトオプションを了解 Expert エキスパートモード:自分自身のオプションを選択
普通は、初心者モードでOK。特に保存は一度しかしないので、自由にしたいオプションはまずない。
(13)保存・リストア選択
savedisk ローカルディスクをイメージに保存 saveparts ローカルパーティションをイメージに保存 restoredisk イメージをローカルディスクにリストア restoreparts イメージをローカルパーティションにリストア recovery-iso-zip リカバリ用のClonezilla_Liveディスクを作成 exit 終了. コマンドラインプロンプトに移行します.
保存かリストアか、ディスク全体かパーティションかの選択です。つまり、ここまでは保存もリストアも同じ選択肢群から選んで来るということです。もちろん使用言語やキーボードなど、保存かリストアかで別の選択をすることもありえます。
最初はパーティションの分け方もコピーするために、ディスク全体を選択します。もちろんパーティションを分けていなければディスクを選択します。
一つ前のコンピュータではパーティションを3つにしてWindowsMeとDebian-Lennyとswapにしてデュアルブートにしていました。今回はWindowsは入れませんが、パーティションは80GBを38,38,4と分けてDebian-Squeezeと将来のための空きとswapにしています。
(14)イメージの保存名の入力
2010-08-17-04-img ________________
日付と時間(世界標準時?)を元にデフォルトの名前がついています。必要に応じて変更します。
(15)コピー元のローカルディスクの選択
[*] sda 80.0GB_ST380815AS__ata-ST380815AS_9QZDB89T
選択できるHDDは一つしかありません。
(16)デバイス確認とコマンド確認
Selected device [sda] found! The selected devices: sda **********************************************************. ps. 次回直接このコマンドを実行してください: /opt/drbl/sbin/ocs-sr -q2 -c -j2 -zip -i 2000 -p true savedisk 2010-08-17-04-img sda 必要なら、また、このコマンドは後の使用のためのこのファイル名として保存されます: /tmp/ocs-2010-08-17-04-img-2010-08-17-04-23 [Enter]を押して続けてください..▮
ここは確認するだけです。saveは回数が少ないのでコマンドは控える必要はないでしょう。また対話方式でやればいいのです。
(16)保存開始の最終確認
.................... .........(ここは省略)................... .................................... **********************************************************. 次のステップは、このマシンのハードディスク/パーティションをイメージとして保存することです: **********************************************************. Machine: TA875GE 128M sda (80.0GB_ST380815AS__ata-ST380815AS_9QZDB89T) sda1 (38.0GB_ext3(In_ST380815AS_)_ata-ST380815AS_9QZDB89T) sda2 (38.0GB_ext3(In_ST380815AS_)_ata-ST380815AS_9QZDB89T) **********************************************************. -> "/home/partimg/2010-08-17-04-img". 本当に続けてもよろしいですか ? (y/n)▮
ここは "y" と答えます。保存が始まります。
(17)sda1の保存の進捗状況を眺める
.................... .........(ここは省略 MBRのsave, diskのチェック)................... ........(Partcloneを使うという説明)........................... ................. Elapsed: 00:00:03, Remaining: 00:03:09, Completed: 1.56%, Rate: 1.72GB/min,
4分5秒で終了
.................... .........(ここは省略 無事終わったとの報告)................... ........(sda2を開始するという説明など)........................... ................. Elapsed: 00:00:12, Remaining: 00:00:11, Completed: 50.33%, Rate: 1.97GB/min,
2つ目のパーティションは空きなので極めて速い。
最後になぜかハードウェアの情報を保存し始めます。この場面でハングアップする場合があります。原因は不明。これも後の「Framebuffer devices と表示してハングアップする問題」に書きました。。
******************************************************. Saving hardware info by lshw... Framebuffer devices
この項は眺めているだけ
(18)保存終了確認
******************************************************. 再度、Clonezilla を使用したい場合: (1) このコンソール(console 1)のままで、コマンドラインプロンプトに入ります (2) exit または logout コマンドを実行して下さい ************************************************************. ........(省略 正常にpoweroff、rebootをすることの勧め)....... ************************************************************. [Enter]を押して続けてください
Enterを押すと電源を落とすか、再起動するかなどを選択する画面に進みます。
日本語の説明は表示が乱れているように見えます。
(19)電源を落とすか、再起動するかなどを選択
Now you can choose to: (0) Poweroff (1) Reboot (2) Enter command line prompt (3) Start over [2]
電源を落とすか、再起動するか、コマンドラインに進むか、もう一度最初にもどるかの選択。
保存の後は、電源を落とすのが順当だが、保存したイメージを使ってリカバリディスクを作る作業をするなら "Start over" でできるのでしょう。
Poweroff, Reboot を選択した場合は、CDが排出され、キー入力待ちになります。
............ Please remove the disc, close the the tray (if any) and press ENTER to continue:
theが2つあるのは、原文のまま。

経過時間と出来上がったファイル群

ここまで画面の写真を撮りながらで約10分。

サーバーには、指定した名前のフォルダにいろいろなファイルが分かれて入ります。

root@server:~# ls -l /home/partimage/2010-08-17-04-img/
合計 2095664
-rw-r--r-- 1 root root      15125 2010-08-19 22:08 Info-dmi.txt
-rw-r--r-- 1 root root         87 2010-08-19 22:08 Info-lshw.txt
-rw-r--r-- 1 root root       2707 2010-08-19 22:08 Info-lspci.txt
-rw-r--r-- 1 root root        259 2010-08-19 22:08 Info-packages.txt
-rw-r--r-- 1 root root          4 2010-08-19 22:08 disk
-rw-r--r-- 1 root root         10 2010-08-19 22:08 parts
-rw-r--r-- 1 root root         36 2010-08-19 22:03 sda-chs.sf
-rw-r--r-- 1 root root    1048064 2010-08-19 22:03 sda-hidden-data-after-mbr
-rw-r--r-- 1 root root        512 2010-08-19 22:03 sda-mbr
-rw-r--r-- 1 root root        377 2010-08-19 22:03 sda-pt.parted
-rw-r--r-- 1 root root        249 2010-08-19 22:03 sda-pt.sf
-rw------- 1 root root 2097152000 2010-08-19 22:07 sda1.ext3-ptcl-img.gz.aa
-rw------- 1 root root   40495759 2010-08-19 22:07 sda1.ext3-ptcl-img.gz.ab
-rw------- 1 root root    5087641 2010-08-19 22:08 sda2.ext3-ptcl-img.gz.aa
-rw-r--r-- 1 root root         53 2010-08-19 22:08 swappt-sda3.info

リストア

途中まで、保存の時とまったく同一ですが記述を省略せず同じことをコピーしておきます。(若干の書き加えがあります)

(1)起動選択(写真)
次から選択。
Clonezilla live(Default settings, VGA 800x600) Other mods of Clonezilla live Local operating system in harddrive(if available) Memtest & FreeDOS Network Boot
このまま[Enter]を押してデフォルトを選択します。
「Other mods of Clonezilla live」の中に、「To RAM」があります。これは必要なプログラムをCDからメモリにあらかじめ全部読み込んで実行します。読み込みに若干時間(今回の環境で30秒程度)はかかりますが、リストア中にCDを取り出して次のコンピュータに進むことができます。CDが1枚でも複数のコンピュータに同時にリストアできます。お勧めできます。ただし、サーバーの能力やネットワークの速度の制約でリストアに時間は長めになります。
(2)言語の選択
English Espanol Francais Italiano 日本語 簡体中文 正体中文-台湾
この前のバージョンではEnglish,正体中文の2つしかありませんでした。
日本語に切り替える時間はさほどでもないのですが、慣れてくればただEnterだけ押すのが楽だという理由でEnglishを選ぶのも正解です。
(3)キーマップの選択
アーキテクチャリストからキーマップを選択 キーマップをいじらない カーネルのキーマップを保持 完全なリストからキーマップを選択
「キーマップをいじらない」だと英語キーボードになります。知っていればこれでもいけます。" | = : などの記号のとき困りますが、英数字と . / の記号だけなら共通なので困りません。
途中でシェルに入って手動でいろいろやるなら[アーキテクチャリストからキーマップを選択]-[qwerty]-[Japanese]-[standard]と選択して日本語キーボードにした方が便利です。
(4)Clonezillaを開始します
Start_Clonezilla Clonezilla を開始します。 Enter_shell コマンドラインプロンプトに移行します。
Start_Clonezillaを選択
(5)モード選択
device-image ディスク/パーティション⇔イメージ device-device ディスク/パーティション⇔ディスク/パーティション
今回はdevice-imageを選択。ディスクを2台つけて直接コピー(イメージを作らないで直接)はdevice-device。組み立てる前のHDDならこれも便利。
(6)イメージディレクトリのマウント
local_dev ローカルディスク(例:ハードディスク、USBドライブ)をマウント ssh_server SSH サーバをマウント samba_server Samba サーバをマウント nfs_server NFS サーバをマウント enter_shell コマンドラインプロンプトに移行します. 手動で実行 skip 既存の /home/partimag を利用(メモリ! 【お薦めしません】)
本校では今まで使ってきたpartimageのためにnfsサーバーが用意されているのでこれを使いました。この選択肢ならssh,samba共に使えたかもしれません。習慣でnfsを選んだだけです。4GB超のUSBメモリがあるならそこに保存するのもいいかもしれません。
Clonezillaは指定したものを/home/partimagにマウントして、そこにイメージを保存します。今回のイメージは2GB程度でした。圧縮するのでその方式にもよります。
(7)ネットワーク設定
dhcp DHCP ブロードキャストを使用 static 固定 IP アドレスを使用 pppoe PPPoE を使用 enter_shell コマンドラインプロンプトに移行します. 手動で実行
ネットワーク必要とする ssh, samba, nfs などを選択したので、ここに来ました。本校にDHCPサーバーがあるのでいつもこれを利用しています。一度なら固定もいいのですが、リストア時に毎回しかも同時に起動しているコンピュータに異なるアドレスを手動で指定するのは現実的ではありません。
(8)NFS version
nfs NFS v2, v3 nfs4 NFS v4
(6)で nfs を選択したので聞かれています。本校のサーバーは v3 なのでそれを選択します。
この nfs のバージョンで思わぬ不具合に出会ったのですが、多分他の方々は大丈夫だと思います。
(9)nfsサーバーのIPアドレス
10.5.5.1 ________________
DHCPサーバーを利用したのでDHCPサーバーのIPアドレスが表示されます。NFSサーバーのIPアドレスにします。同じならそのまま。
(10)保存/読み出しするサーバーのディレクトリ
/home/partimag/ _________ (←これはデフォルト値 サーバーの公開ディレクトリ名に書き換える)
デフォルトの値はClonezillaのマウント先のディレクトリです。サーバーのディレクトリに書き換えます。ここが分かりにくい。最近のサーバーの習慣にならい、/srv/partimg/ などがデフォルトだとわかりやすいと思います。nfsサーバーの設定に合わせて書き換えます(今回の例では/home/partimage/)が、逆にサーバーの設定をこれに合わせればリストアの時には便利です。
もちろん、保存したイメージのある場所にしなければなりません。
(11)マウントの確認
The path in nfs server is: /home/partimage/ Mounting NFS server by: mount -t nfs 10.5.5.1:/home/partimage/ /home/partimag ファイルシステムディスク容量 ********************************************************. Filesystem Size Used Avail Use% Mounted on aufs 886M 4.6M 882M 1% / tmpfs 886M 0 886M 0% /lib/init/rw ............. fusectl 0 0 0 - /sys/fs/fuse/connections 10.5.5.1:/home/partimage/ 40G 25G 14G 65% /home/partimag ********************************************************. [Enter]を押して続けてください..▮
このように表示されればマウントは成功。今回はどういうわけかここで成功することはまれでした。その原因と対処法は下の 「nfsマウントが失敗する問題」 に書きました。いろいろな特殊な事情が重なって起こるまれな例と考えられるからです。
(12)実行モード選択
Beginner 初心者モード:デフォルトオプションを了解 Expert エキスパートモード:自分自身のオプションを選択
普通は、初心者モードでOK。
(13)保存・リストア選択
savedisk ローカルディスクをイメージに保存 saveparts ローカルパーティションをイメージに保存 restoredisk イメージをローカルディスクにリストア restoreparts イメージをローカルパーティションにリストア recovery-iso-zip リカバリ用のClonezilla_Liveディスクを作成 exit 終了. コマンドラインプロンプトに移行します.
保存かリストアか、ディスク全体かパーティションかの選択です。つまり、ここまでは保存もリストアも同じ選択肢群から選んで来るということです。もちろん使用言語やキーボードなど、保存かリストアかで別の選択をすることもありえます。
最初はパーティションの分け方もコピーするために、ディスク全体を選択します。もちろんパーティションを分けていなければディスクを選択します。
(14)リストアするイメージファイルを選択
2010-08-17-04-img 2010-08-17_04:29_sda
保存したイメージファイルの名前が一覧になります。今回はまだ一つしかありませんので上記の様になりますが。複数あれば上下に並びます。名前の他に保存した日時とデバイス名が説明としてついています。
(15)リストアするコピー先のディスクの選択
sda 80.0GB_ST380815AS__ata-ST380815AS_9QZDB7HD
選択できるHDDは一つしかありませんのでこれを選びます。選択対象に*印をつけるように書いてあるので、複数のディスクがある時はそのような選択方法なのでしょう。
(16)デバイス確認とコマンド確認
Selected device [sda] found! The selected devices: sda **********************************************************. ps. 次回直接このコマンドを実行してください: /opt/drbl/sbin/ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk 2010-08-17-04-img sda 必要なら、また、このコマンドは後の使用のためのこのファイル名として保存されます: /tmp/ocs-2010-08-17-04-img-2010-08-17-12-27 [Enter]を押して続けてください..▮
restoreは台数分実行するのでコマンドにする価値があるかもしれません。特にエキスパートモードで自分自身のオプションを選択したときには手順が省略できます。実際にはシェルスクリプトにして実行することになるでしょう。(4)でコマンドプロンプトに入りマウントして上記のコマンドを実行する様にスクリプトを書き、USBメモリにでも保存しておきます。ただし、CD起動する場合はUSBをマウントする作業が必要ですから画期的に楽になるわけではありません。
USB起動にして自動的にスクリプトが実行されるようにすれば自動にできます。Clonezillaの場合、例にならってスクリプトの書き、それを取り込んでカスタマイズCDを作るように説明があります。この例がイメージを選択するなど複雑な例なので読みこなす時間が必要です。
それより、出来上がったイメージからリカバリDVDを作る方が簡単です。この場合(13)から分岐し、ISOファイルを作ってDVDに焼くか、zipファイルを作ってUSBメモリ起動にします。今回たくさんのコンピュータの同時リストアが遅かったので、後でDVDを作って併用しました。イメージがDVDに入りますからサーバーの能力やLANの性能の制約を受けずにできます。
(16)リストア開始の最終確認
.................... **********************************************************. 次のステップは、イメージをこのマシンのハードディスク/パーティションに復元する事です: "/home/partimag/2010-08-17-04-img" -> "sda sda1 sda2" 【警告】!!!【警告】!!!【警告】!!! 【警告】!【このハードディスク/パーティション中の既存データは上書きされます!!全ての既存データは失われます】: **********************************************************. Machine: TA875GE 128M sda (80.0GB_ST380815AS__ata-ST380815AS_9QZDB7HD) **********************************************************. 本当に続けてもよろしいですか ? [y/n] ▮
ここは "y" と答えます。
(17)再度リストア開始の最終確認
.................... 再度問い合わせさせて下さい, 本当に続けてもよろしいですか ? [y/n] ▮
保存では1度の確認でしたがリストアは間違ったときに失うものが多いので2回確認。
(18)リストア進捗状況を眺める
Partclone v0.2.13 http://partclone.org .................... .........(ここは省略)................. ................................ Device size: 38.0 GB Space in use: 5.5 GB Free Space: 32.5 GB Block size: 4096 Byte Used block : 1347009 Elapsed: 00:00:19 Remaining: 00:02:55 Rate: 1.70GB/min
2つ目のパーティションは空きなので極めて速い。
Partclone v0.2.13 http://partclone.org .................... .........(ここは省略)................. ................................ Device size: 38.0 GB Space in use: 781.5 MB Free Space: 37.2 GB Block size: 4096 Byte Used block : 190799 Elapsed: 00:00:03 Remaining: 00:00:08 Rate: 4.03GB/min
このあとスワップパーティションを作り、MBRをリストアする。
そのあとパーティションのチェック(e2fsck)、リサイズ(resize2fs)をし、grub2をインストールする。
e2fsckからgrub2まではコピーと同程度の時間を要しますが、眺めているだけです。
(19)保存終了確認
******************************************************. 再度、Clonezilla を使用したい場合: (1) このコンソール(console 1)のままで、コマンドラインプロンプトに入ります (2) exit または logout コマンドを実行して下さい ************************************************************. ........(省略 正常にpoweroff、rebootをすることの勧め)....... ************************************************************. [Enter]を押して続けてください
Enterを押すと終了後に電源を落とすか、再起動するかなどを選択する。
日本語の説明は表示が乱れているように見える。
(20)電源を落とすか、再起動するかなどを選択
Now you can choose to: (0) Poweroff (1) Reboot (2) Enter command line prompt (3) Start over [2]
電源を落とすか、再起動するか、コマンドラインに進むか、もう一度最初にもどるかの選択。
リストアの後は、再起動して確認したい。Poweroff, Reboot を選択した場合は、CDが排出され、キー入力待ちになります。
..................... Please remove the disc, close the the tray (if any) and press ENTER to continue:
theが2つあるのは、原文のまま
ここまでリストアには約9分を要しました。

リカバリーディスクの作成

今回の環境ではUSB起動が思うようにいかず、NFS接続にトラブルがあったのでリカバリーディスクの作成をしました。リストア用のライブDVDにイメージが入ったもので、ClinezillaLiveの作業中に(13)から分岐します。

(13)保存・リストア選択
savedisk ローカルディスクをイメージに保存 saveparts ローカルパーティションをイメージに保存 restoredisk イメージをローカルディスクにリストア restoreparts イメージをローカルパーティションにリストア recovery-iso-zip リカバリ用のClonezilla_Liveディスクを作成 exit 終了. コマンドラインプロンプトに移行します.
あらかじめ保存されたイメージを選択し、isoファイルかzipファイルを作成します。isoの場合はCDには焼けない大きさになるので警告がありますが、DVDにするのなら構いませんから続行を指示します。
リストア後のfsckが少し時間がかかる印象です、後でもう一度リストアの必要が生じたときに、サーバーの状態やLiveCDはどれを使ったかなどの心配なく、DVD1枚あればリストアできるという安心感は大きいものがあります。
リカバリディスクのリストアにも約9分かかります。時間を測ったのは1パーティションのみのリカバリディスクでしたが2つめのパーティションはほぼ空なので大して違わないはずです。

nfsマウントが失敗する問題

保存の時もリストアの時も(11)のマウントの確認の所でかなりの確率で失敗します。うまくいくコンピュータがいくつかあるという印象です。しかしこれはClonezillaの責任でないと思います。

失敗の時のメッセージは、

The path in nfs server is: /home/partimage/ 
Mounting NFS server by: 
mount -t nfs 10.5.5.1:/home/partimage/ /home/partimag 
mount.nfs: access denied by server while mounting 10.5.5.1:/home/partimage/
Clonezilla image home directory /home/partimag is not a mounting point! Failed to mount other device as /home/partimag!
本当に続けてもよろしいですか ?
[y/N] ▮

このエラーは見過ごしがちですが、マウントが成功すれば、上記の(11)にあるようにマウントの状態が表示されるので慣れればすぐ分かるようになります。

ここでのエラーは access denied なのでサーバーと通信をして拒否されたということらしい。

このまま[Enter]で進むとコマンドラインに進みます。ここで手動でマウントを試みてnfsのバージョンがからんでいることをつかみました。

NFS ver4で接続しようとしている

mount -v で接続を試みるとver4で接続しようとすることが分かります。

$ sudo mount -v -t nfs 10.5.5.1:/home/partimage /home/partimag
mount.nfs: timeout set for Mon Sep 20 03:52:31 2010
mount.nfs: trying text-based options 'vers=4,addr=10.5.5.1,clientaddr=10.5.5.135'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 10.5.5.1:/home/partimage

NFS マウントでのバージョン指定は、mount -t nfs でversion3、mount -t nfs4 でversion4と決められています。Clonezillaはmount -t nfs を指定しているのでversion3の指定はうまく伝わっているはずです。vers=4のオプションがどこから入ってくるのかが不明です。man nfs ではオプションの名前がnfsvers=nとなっているので versという名前も妙です。

オプションがないのでvers=4が加えられたわけではありません。与えた他のオプションに追加されるようです。

$ sudo mount -v -t nfs 10.5.5.1:/home/partimage /home/partimage -o "addr=10.5.5.1,clientaddr=10.5.5.126"
mount.nfs: timeout set for Mon Aug 16 20:01:47 2010
mount.nfs: trying text-based options 'clientaddr=10.5.5.126,vers=4,addr=10.5.5.1'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting jonah:/zhome/partimage

そこで vers=3 を指定してみます。

$ sudo mount -v -t nfs 10.5.5.1:/home/partimage /home/partimag -o 'vers=3'
mount.nfs: timeout set for Mon Sep 20 04:18:41 2010
mount.nfs: trying text-based options 'vers=3,addr=10.5.5.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.5.5.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.5.5.1 prog 100005 vers 3 prot UDP port 861
10.5.5.1:/home/partimage on /home/partimag type nfs (rw,vers=3)

これでマウントは成功します。

Clonezilla live 20100811 maverick で、nfsのバージョン3/4を選択する部分を探し、/opt/drbl/sbin/prep-ocsroot であることが判明。調査方法は grep nfs_ver ./* など

Clonezillaでvers=4を加えていない。

バージョンの選択はこの部分

   # (0) NFS version
   while [ -z "$nfs_ver" ]; do
     $DIA --backtitle "$msg_nchc_free_software_labs" --title  \
     "NFS version" --menu "$msg_ocs_live_mount_nfs_ser_ver" \
     0 0 0 $DIA_ESC \
     "nfs"    "NFS v2, v3" \
     "nfs4"   "NFS v4" \
     2> $TMP
     nfs_ver="$(cat $TMP)"
   done

この少し後で、実際のマウントが行われます。

   echo "Mouting NFS server by:"
   echo "mount -t $nfs_ver $nfs_srv:$nfs_dir $ocsroot"
   mount -t $nfs_ver $nfs_srv:$nfs_dir $ocsroot
   [ "$chk_ocsroot_mountpont" = "yes" ] && check_if_ocsroot_a_mountpoint

対応関係は次のとおりで、vers=4の指定はスクリプト内にはありません。

mount -t $nfs_ver  $nfs_srv:$nfs_dir      $ocsroot
mount -t nfs     10.5.5.1:/home/partimage  /home/partimag

スクリプト書き換えでマウント

この/opt/drbl/sbin/prep-ocsrootにvers=3を書き加えるとマウントが成功し、リストアができるようになります。ただし無条件で加えていますから、NFS version4 では使用できません。

   echo "Mouting NFS server by:"
   echo "mount -v -t $nfs_ver $nfs_srv:$nfs_dir $ocsroot -o 'vers=3'"
   mount -v -t $nfs_ver $nfs_srv:$nfs_dir $ocsroot -o 'vers=3'
   [ "$chk_ocsroot_mountpont" = "yes" ] && check_if_ocsroot_a_mountpoint

40台のリストアではマウントに失敗した場合、

1.コマンドプロンプトに進み、
2./opt/drbl/sbin/prep-ocsrootにvers=3を書き加え(sudo vi を使う)
3.exitで通常のスクリプト実行にもどり
4.リストアする

という手順でリストアできまし。ただかなりの確率でこの作業が必要で、nfsマウントの必要ないリカバリディスクを増やして対処しました。

一方、書き換えなくてもマウントに成功するマシンもありました。

$ sudo mount -v -t nfs 10.5.5.1:/home/partimage /home/partimag
mount.nfs: timeout set for Mon Sep 20 03:52:31 2010
mount.nfs: trying text-based options 'vers=4,addr=10.5.5.1,clientaddr=10.5.5.135'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=10.5.5.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.5.5.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.5.5.1 prog 100005 vers 3 prot UDP port 861
10.5.5.1:/zhome/partimage on /home/partimag type nfs (rw)

この場合もvers=4で接続しようとていますが、Permission denied ではなく、Operation not permittedとなるので、引き続きvers=3でマウントするようです。

Framebuffer devices と表示してハングアップする問題

保存の(17)最後の場面でハングアップする場合がありました。これもマシンによるらしいのですが、2度この現象に出会った後は、はじめから回避方法をとっているのでよくわかっていません。

******************************************************.
Saving hardware info by lshw...
Framebuffer devices

最後の部分が PCI (sysfs) / SCSI / Framebuffer devices と変わっていって、Framebuffer devicesから進まなくなります。

回避方法

ClonezillaLiveを開始するときに、Other modes of Clionzilla Live から Clionzilla Live (Safe graphic settings, vga=nomal)を選択するとこの問題を回避できます。言語が英語だけになりますが、一度日本語で選択していれば、さほど問題ではありません。

原因は不明ですが、Framebufferで止まるということで、vga=nomal を選んでみたらうまくいったという次第。かつてPartimageは(現在はどうかわからないが)LANG=Cでなければ誤動作しました。ClonezillaはPratimageでなくPartcloneを使っているのですが、影響があるのかもしれません。


Linuxクライアント/サーバ運用
聖愛中学高等学校
安達 順一
http://www.seiai.ed.jp/
2010-09-20