日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

   6 月 09

XenServer コマンドについて

XenServerで幾つかサーバーを運用してます。 実験的なサービスなどは非安定版のソフトウェアを使うことが多く、VMがフリーズしてしまうこともたまにあります。 (サポートされたOSで安定してるソフトウェアを使う分にはVMがフリーズした事はなく、コントロールドメイン自体もフリーズ等の問題が起きたことはないので、XenServer自体の安定性には問題はないと思います。) 例えVMがフリーズしてしまったとしても、XenServer(コントロールドメイン)自体は問題なく動いてるので、ssh接続してxsconsoleから該当のVMを強制再起動させるだけで復旧出来るので大きな問題ではないですが、外出中でノートPCもない場合(基本僕はノートPCは持ち歩きません)ssh接続自体が出来なくてオワタ\(^o^)/となります。 そこでいつも持ち歩いてるiPhoneにTouchTerm(450円:Proじゃない方)を入れて使ってみたのですが、xsconsoleが表示できなくてここでもオワタ\(^o^)/となってしまいました。 (xsconsoleはターミナルの縦横文字数が少ないとエラーを出して起動しないので、それを満たすようにTouchTermの文字サイズを小さくすることでxsconsoleはエラーを出さず起動するようになったようなのですが、全く内容が表示されないという問題が起きてしまい操作できませんでした。) TouchTerm自体は、3G回線でも接続でき、ポートもデフォルトの22から変更することができ、鍵の生成・利用もできるので、ssh接続してコマンドを打つという用途だと過不足なく実行可能ですばらしいアプリだと思います。 で、xsconsoleを使わずにVMの強制再起動をするために、XenServerのコマンドを色々調べたのでちょっとまとめておきます。 VMのリストを表示 xe vm-list すべてのVM(起動中か否かに関係なく)の情報を表示します。情報の内容はVMのuuid、name-label、power-state(起動中かどうかの状態)。 稼働中の(コントロールドメイン以外の)VMのすべてのパラメータを表示 xe vm-list power-state=running is-control-domain=false params=all オプションの意味はそのまんまです。実行結果を見れば分かりますがすべてのパラメータってのがかなり多め(60個以上)。 これで表示されるパラメータをpower-state=runningみたいにVMの絞り込みのオプションに使えます。 稼働中の(コントロールドメイン以外の)VMのname-labelとuuidを表示 xe vm-list power-state=running is-control-domain=false params=name-label,uuid paramsにallではなく、パラメータ名をカンマ区切りで指定すると、指定したパラメータの分だけ表示されます。 特定のVMについてパラメータをすべて表示 xe vm-param-list uuid=12345678-9abc-def0-1234-56789abcdef0 実はvm-listだと値を取得するのに計算リソースを食うという理由でCPU使用率等表示されないパラメータがいくつかありますが、vm-param-listでは表示されます。 その代わりuuidの指定が必要で一度に表示出来るのは一つのVMについてのみです。 特定のVMについてCPU使用率を表示 xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation これでCPU使用率が取得出来ます。小数点以下桁数3の数値で表示され0.000がCPU利用率0%、1.000がCPU利用率100%に相当するようです。 さらに仮想CPUコアが複数ある場合もあるため、例えば2コアの場合は、”0: 0.251; 1:0.036″のように表示されます。 1コアの場合も同じく、”0: 0.843″のように表示されます。 特定のVMについて0番目のコアのCPU使用率を表示 xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation param-key=0 CPU使用率以外にも<key>: <value>; <key>: <value>…という形式の値になってるパラメータがありますが、param-keyに<key>を指定すれば<value>だけを抽出することができます。 特定のVMについてOS名を表示 [...]

Read the rest of this entry »

   8 月 12

XenServer5.5 on ML115 G5にmunin-node + ipmitoolをインストールする方法

うちで使ってるXenServerの1台がバージョン5.0だったので5.5にアップデートしました。 うちではmuninとipmiで物理サーバーの温度監視をしてるので、munin-nodeとipmitoolをDom0に入れてたんですが、アップデートしたら(予想はしてましたが)Dom0に独自にインストール・設定してたものが綺麗さっぱり消えてました。 でまぁ、munin-nodeとipmitoolを入れ直すハメになった訳です。 今後もアップデートする度に調べながらインストールしなおすのは時間がかかるので、ここにまとめておこうと思います。 ちなみに、タイトルにXenServer5.5とかML115 G5とか書いてますけど、RedHat系でipmi対応のサーバーなら同じような方法でインストールできると思います。 あとmunin(munin-nodeじゃなくて)がどっかのサーバーで動作中という前提で書いてますので、munin自体のインストール・設定方法はここには書いてません。 1.いきなり関係ないけどmlocateのインストール(locate厨なもので。必要ない時は飛ばして下さい) yum –enablerepo=base install mlocate 2.yumにrpmforgeリポジトリの追加 rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm 3.rpmforgeを無効にしておく vi /etc/yum.repos.d/rpmforge.repo enabled = 1 を enabled = 0 にする。 4.OpenIPMIをインストール・起動・動作確認・自動起動設定 yum –enablerepo=base install OpenIPMI OpenIPMI-tools /etc/init.d/ipmi start ipmitool sensor chkconfig ipmi on ipmitool sensor でそれっぽいデータが出たら大丈夫でしょう。 5.munin-nodeのインストール yum –enablerepo=rpmforge,base install munin-node 6.ipmitool_sensor_(munin-nodeプラグイン)を配置 wget http://muninexchange.projects.linpro.no/download.php?phid=579 mv [...]

Read the rest of this entry »

   4 月 08

XenServer 物理マシン1台で仮想マシンを無停止でコピーする方法

追記 XenServerのバージョンが5.5に上がり、XenCenterに稼働中の仮想マシンのスナップショットをとる機能と、さらにそのスナップショットから新たな仮想マシンを立ち上げたりテンプレートとして外部にバックアップする機能が追加されたため、GUIですべての操作が完結するようになりました。特殊な事情がない限り下記のような作業は必要ないと思われます。 XenServerライフ、エンジョイしていますか? うちのXenServer、無償化の公式発表前に入れたので旧Enterprise Editionの試用版として動作してる状態でライセンスの残り期限が十数日という状態になってました。 昨日、Hotfix3と新しいライセンスファイルをインストールしまして、無事Enterprise Editionの表記が消え、ライセンスも約1年延長されました。 (1年経ったらどうなるんでしょうか?Citrixのアンケートに答えて再度ライセンスファイルをダウンロードする形になるんでしょうか?) XenServerの良いところは、XenServer自体よりもXenCenterというWindows上で動く管理ソフトの出来の良さだと思っておりますが、問題点も少々あります。 LinuxやMacOSXで動かないところとか言ったら元も子もないのでそこはグッとこらえるとして、やっぱり個人的に一番キツイ問題点は、稼働中の仮想マシンのコピーが出来ないところです。 そのコピーも一瞬で終わるのなら、一度仮想マシンを落としても良いかなと思うのですが、コピーはコピーなので仮想HDDのサイズが数十ギガとかになると結構時間が掛かってしまいます。 まぁ、計画的な皆さんは仮想マシンを本番に投入する前にコピーを取ったり、同じサーバー環境を手軽に再現できる別の仕組みなんかを持ってらっしゃると思いますが、私はどうも行き当たりばったりなタチでございまして、コピーを取りたいと思った仮想マシンが絶賛本番稼働中ということも少なくありません。 そこで、物理マシン1台のみで稼働してるXenServerの仮想マシンを無停止でコピーする方法を考案しました。 まぁ、XenやXenServerがどういう仕組みで動いてるか知ってる方はすぐ思いつく方法だと思いますが、私自身が忘れっぽいのでここに書いておきます。 XenServerのローカルのHDDに保存される仮想マシンの仮想HDDは、LVMで管理されているLVとして存在しています。 ちなみに、NFS上に保存する場合は、VHD形式(MSのVPCで使われてるアレです)のファイルとして保存されます。 でまぁ無停止で仮想HDDのコピーをするために、簡単に言うとLVのスナップショット機能を使います。 あと、LVからLVへ直接コピーをする方法が分からなかったため、一時的な作業用の領域を使います。 つまり、今から書く方法では例えば80GBの仮想HDDをコピーするために物理HDDに160GB以上の空き領域が必要になります。 (外付けUSBHDDやNFSを利用する場合はこの限りではありません。物理マシン1台という範疇からは外れてしまいますが。) 手順1:まず、コピー先となる仮想マシンを作成します。 コピー元の仮想マシンと同じ設定で作成してください。XenCenter上で作成してOKです。 (XenCenterの制限からか、一度通常のインストールプロセスを開始する必要があります。じゃないと仮想マシンが起動しないので。仮想マシンが起動したらすぐに停止してかまいません。) 手順2:コピー元とコピー先の仮想マシンの仮想HDDに分かりやすい名前を付けます。 XenCenterからやっちゃってください。仮想マシン名と全く同じ名前は逆に分かりづらくなるのでおすすめ出来ません。 手順3:コピー元とコピー先の仮想HDDのLVM的なuuidを調査する。 XenServer自体にsshでログインするか、XenCenterのコンソールを使うかして、以下のコマンドを実行。 [root@xs ~]# xe vm-disk-list –multiple Disk 0 VBD: uuid ( RO) : 0d70a367-6d3d-138d-1f69-db82c1xxxxxx vm-name-label ( RO): MyWebServerCopy userdevice ( RW): 0 Disk 0 VDI: uuid ( RO) : [...]

Read the rest of this entry »