2010/07/31

ESXiでホットバックアップしよう

しなです。久しぶりに小ネタでも。

VMWARE PLAYER上でサーバを動かして,Windows Updateの時に一緒にバックアップ(ネットワーク越しのコピー)していたのですが。

最近,仮想ディスクが大きくなって,どんどんバックアップの間の
パワーオフ(&コピー)の時間が長くなってきたのです。
80GBでも100Mbpsだと2時間コース。

ふとぐぐれば,ESXiだとホットバックアップもどきが取れるらしい。

せっかくの夏休み(&レイオフ)中なので試してみることに。


まずESXiをインストールする。
http://d.hatena.ne.jp/shibason/20100117/1263711644

ホットバックアップのスクリプト(backupServer.sh)と説明はこちらのを参考にいじってます。
http://www.witkitty.com/wordpress/2009/07/05/esxi-backup-part2/

仮想ディスクのバックアップをとるとき"-d monosparse”を削除しています。
これだと,バックアップ先のフォルダ名を変えるだけでリストアできるので。


Remote Tech Support モード(SSH)を有効にしてSSHでログイン
チャレンジレスポンス認証を使う。


cd /vmfs/volumes/datastore1/
./backupServer.sh [Guestname]


cronに登録する
http://www.masatom.in/pukiwiki/VMware/ESXi/%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7%B1%BF%CD%D1/#o2db64a9


なんだかんだでホットバックアップはできたみたいなので満足。


世代バックアップもできそうなのですが,それをやるにはHDDの増設が必要になるんで次の機会に(´・ω・`)

2010/07/02

Macのアプリケーションバンドル時のカレントディレクトリをどうするか

仕事でQtを使ってマルチプラットフォームの環境で動くアプリケーションを作っているんですが、個人的に結構泣かされてるのがMacのbundleの仕組みです。
bundleの仕組みを簡単に説明すると、Macではアプリケーション配布時、フォルダの下に実行ファイル用のフォルダやリソース用のフォルダが作られ、その中にファイルが設置されます。
それだけ聞くと「Windowsと同じでは?」と思いますが、Finder(Windowsで言うexplorer)からアプリケーションを開くときはファイルが保存された親フォルダをダブルクリックして起動します。つまり、Finderからはフォルダが単体のアプリケーションに見えるわけです。
Macだけを対象としたアプリケーション開発をするなら、インストールもアンインストールも楽で、開発者にとってはブラボーは仕組みなんですが、マルチプラットフォームを対象としたアプリケーションを作っている場合は、カレントディレクトリ差異に煩わしさがありました。
これは「きっとMacやQtを使いこなしてないしょぼい開発をしているから発生する問題に違いない」と思っていましたが、ネットで解決方法を見つけてびっくりです
QDir dir(QCoreApplication::applicationDirPath());
#if defined(Q_OS_WIN)
if (dir.dirName().toLower() == "debug" || 
    dir.dirName().toLower() == "release")
{
 dir.cdUp();
}
#elif defined(Q_OS_MAC)
if (dir.dirName() == "MacOS")
{
 dir.cdUp();
 dir.cdUp();
 dir.cdUp();
}
#endif
QDir::setCurrent(dir.absolutePath());
cdで移動してるだけやんけ!
でも、よく考えたら下手に自動で何かされるよりいいのか。