対象者
利用しているデータベースが、SQLite以外の方が対象です。
影響範囲
ジョブマネージャー(Pysilhouette)全体
今回の不具合について
インストーラーに不具合があり、どのデータベースパスを入力しても、ジョブマネージャー(Pysilhoutte)がSQLiteを選択してしまいます。
その結果、ネットワーク接続に対応していないSQLiteですと、マルチホストに対応することができなくなります。
この不具合の修正版を1.0.2でリリースしましたが、手動で行わなければならない作業がいくつかあります。
以下の手順でアップデートしてください。
1. データベースの作成
移行先のPysilhouetteデーターベースを作成してください。
PostgreSQLの場合
# createdb -U username -W pysilhouette --encoding=utf8
MySQLの場合
# mysql -u username -p -e 'CREATE DATABASE pysilhouette DEFAULT CHARACTER SET utf8;'
注意)
UTF-8でデータベースを作成してください。
2. 新パッケージをダウンロードし、伸長する
# rm -rf Karesansui # tar zxvf karesansui-<バージョン>-install-pack.tar.gz # cd Karesansui
3. 現在のデータベースパスの確認
現在のPysilhouetteのデータベースパスを取得しておきます。
sqlite:////var/opt/pysilhouette/pysilhouette.db
4. Karesansuiをアップデートする
Karesansuiをアップデートし、Pysilhouetteのデータベースを変更します。
チュートリアル を参考にKaresansuiをアップデートしてください。
# ./karesansui-install
「データベースを初期化する」のチェックを外してください! Karesansuiのデータベースが初期化されてしまいます!
5. インストールチェック
./karesansui-checkenvを実行しエラーがないか確認します。
また、「データベース pysilhouette に接続できるかをチェック... 」が指定したデータベースパスになっているか確認してください。
# ./karesansui-checkenv
6. データベースの移行
データベースをSQLiteからMySQLまたはPostgreSQLへコピーをします。
# cd /opt/pysilhouette/share/doc/pysilhouette-0.6.2/tool/ # export PYTHONPATH=/opt/hde/lib/python:/opt/karesansui/lib/python:/opt/pysilhouette/lib/python:$PYTHONPATH # ./sqlite2other.py --input=<移行元データベースパス> --output=<移行先データベースパス>
SQLite : sqlite:////var/opt/karesansui/pysilhouette.db MySQL : mysql://username:password@hostname:port/pysilhouette?charset=utf8 PostgreSQL : postgres://username:password@hostname:port/pysilhouette注意)
コマンドの実行結果で画面に出力される「copy num」の数値はあとで使用しますので、保管してください。 (copy num - xxx) のxxxの部分 sqlite2other.py は SQLite -> MySQL or PostgreSQLの移行のみサポートしています。例)
# ./sqlite2other.py --input=sqlite:////var/opt/pysilhouette/pysilhouette.db --output=mysql://username:password@localhost/pysilhouette?charset=utf8 Cleanup Database [OK] copy num - 3
参考)
データベースパスの書式の詳細な説明は、リファレンス を参考にしてください。
7. 自動インクリメントの変更
Pysilhouetteデータベースの自動インクリメントの値を変更します。
Pysilhouetteデータベースにアクセスして、下記のSQLを実行してください。
SQLの<copy numの数字>の部分は、「4. データベースの移行」の手順で実行した
./sqlite2other.pyで出力されるcopy numの数字に置き換えて実行してください。
PostgreSQLの場合
select setval('jobgroup_id_seq', <copy numの数字>);
select setval('job_id_seq', <copy numの数字>);
例)
# psql pysilhouette -U username -h localhost -c "select setval('jobgroup_id_seq', 3);"
# psql pysilhouette -U username -h localhost -c "select setval('job_id_seq' 3);"
MySQLの場合
ALTER TABLE jobgroup AUTO_INCREMENT = <copy numの数字>;
ALTER TABLE job AUTO_INCREMENT = <copy numの数字>;
例)
# mysql pysilhouette -u username -h localhost -p -e "ALTER TABLE jobgroup AUTO_INCREMENT = 3;"
# mysql pysilhouette -u username -h localhost -p -e "ALTER TABLE job AUTO_INCREMENT = 3;"
参考)# ./sqlite2other.py --input=<移行元データベースパス> --output=<移行先データベースパス> Cleanup Database [OK] copy num - 3 <-- 置き換える数字
# /etc/init.d/hde-lighttpd stop # /etc/init.d/silhouetted restart # /etc/init.d/hde-lighttpd start
概要
1.1では、ゲストOSの各種データのファイル・ディレクトリ構成が変更されました。下記手順でアップグレードを行うことで、各種ソフトウェアの更新を行うとともに、ファイル・ディレクトリ配置の変換も行います。
なお、アップグレードを行う場合は、重要なデータは別のサーバーへバックアップしてから行うことをお薦めします。
以降では、CentOS 5.3 (i386) を例に説明します。
# /etc/init.d/silhouetted stop # /etc/init.d/hde-lighttpd stop # /etc/init.d/hde-libvirtd stop # /etc/init.d/xend stop
1. ダウンロードした1.1のインストールパックを任意のディレクトリに展開します。
# tar zxvf karesansui-1.1.0-xxx-install-pack.tar.gz
2. 展開されたインストールパックに含まれるインストーラを実行します。
# cd Karesansui
# ./karesansui-install
3. インストーラの案内にしたがって、項目を入力します。
このとき、データベース設定の画面でデーターベース初期化を選択しますと、それまでのデータが消去されてしまいますのでアップグレードを行いたい場合は、選択しないようご注意下さい。
4.インストーラの実行が終了後
各種ソフトウェア更新と既存データの移行は完了です。以下のコマンドで、Karesansuiの実行環境に問題ないか確認してください。
# ./karesansui-checkenv
概要
2.0では、ゲストOSのイメージデータファイルはlibvirtの機能であるストレージプールへ配置されるように変更されました。下記手順でアップグレードを行うことで、各種ソフトウェアの更新を行うとともに、ファイル・ディレクトリ配置の変換も行います。
なお、アップグレードを行う場合は、重要なデータは別のサーバーへバックアップしてから行うことをお薦めします。
以降では、CentOS 5.4 (x86_64) を例に説明します。
1. まず、稼働中の全てのゲストOSを、Karesansuiの管理画面から停止するか、または、下記コマンドを実行して停止します。# /opt/hde/bin/virsh shutdown <ゲストOSのドメイン>2. Karesansui関連のサービスを全て停止します。
# /etc/init.d/silhouetted stop # /etc/init.d/hde-lighttpd stop # /etc/init.d/hde-libvirtd stop # /etc/init.d/xend stop (Xenを利用しているときのみ)
3. ダウンロードした2.0のインストールパックを任意のディレクトリに展開します。
# tar zxvf karesansui-2.0.0-xxx-install-pack.tar.gz
4. 展開されたインストールパックに含まれるインストーラを実行します。
# cd Karesansui
# ./karesansui-install
5. インストーラの案内にしたがって、項目を入力します。
このとき、データベース設定の画面でデーターベース初期化を選択しますと、それまでのデータが消去されてしまいますのでアップグレードを行いたい場合は、選択しないようご注意下さい。
ただし、pysilhouetteの使用するデータベースは、アップグレード時に初期化されますので、必要であればデータベースのバックアップも行ってください。
6.インストーラの実行が終了後
各種ソフトウェア更新と既存データの移行は完了です。以下のコマンドで、Karesansuiの実行環境に問題ないか確認してください。
# ./karesansui-checkenv
7. ホストを再起動します。# shutdown -r now
バージョン1.1.xとのファイル・ディレクトリ構成の差分
2.0からゲストOSに使用されるイメージファイルは、ストレージプール上のストレージボリュームとして配置されます。
1. ゲストOSのイメージファイル
1.1 バージョン1.1.xのファイルパス
/var/opt/hde/libvirt/domains/<ドメイン名>/images/<ドメイン名>.img
1.2 バージョン2.0.xのファイルパス
ストレージプール上のストレージボリュームファイル
デフォルトでは、defaultという名前のストレージプールが、/var/opt/hde/libvirt/domainsディレクトリに対して作成されますので、
1.1からのアップグレードでは、1.1のイメージファイルパス(/var/opt/hde/libvirt/domains/<ドメイン名>/images/<ドメイン名>.img)へ
のシンボリックリンクが、/var/opt/hde/libvirt/domainsディレクトリの配下にUUID形式のファイル名で作成されます。
# ls -ltr /var/opt/hde/libvirt/domains/[0-9]* lrwxrwxrwx 1 root kss 57 6月 15 12:46 /var/opt/hde/libvirt/domains/55236ff8-88bb-023f-1499-2f34c4f1b133 -> /var/opt/hde/libvirt/domains/foo/images/foo.img
概要
2.0.0から2.0.xへのアップデートは、インストーラの使用し、下記手順でアップグレードを行うことで、各種ソフトウェアの更新を行うことができます。
なお、アップデートを行う場合は、重要なデータは別のサーバーへバックアップしてから行うことをお薦めします。
以降では、CentOS 5.4 (x86_64) を例に説明します。
1. まず、稼働中の全てのゲストOSを、Karesansuiの管理画面から停止するか、または、下記コマンドを実行して停止します。# /opt/hde/bin/virsh shutdown <ゲストOSのドメイン>2. Karesansui関連のサービスを全て停止します。
# /etc/init.d/silhouetted stop # /etc/init.d/hde-lighttpd stop # /etc/init.d/hde-libvirtd stop # /etc/init.d/xend stop (Xenを利用しているときのみ)
3. ダウンロードした2.0.xのインストールパックを任意のディレクトリに展開します。
# tar zxvf karesansui-2.0.x-xxx-install-pack.tar.gz
4. 展開されたインストールパックに含まれるインストーラを実行します。
# cd Karesansui # ./karesansui-install
5. インストーラの案内にしたがって、項目を入力します。
このとき、データベース設定の画面でデーターベース初期化を選択しますと、それまでのデータが消去されてしまいますのでアップグレードを行いたい場合は、選択しないようご注意下さい。
ただし、pysilhouetteの使用するデータベースは、アップグレード時に初期化されますので、必要であればデータベースのバックアップも行ってください。
6.インストーラの実行が終了後
各種ソフトウェア更新と既存データの移行は完了です。以下のコマンドで、Karesansuiの実行環境に問題ないか確認してください。
# ./karesansui-checkenv7. ホストを再起動します。
# shutdown -r now