つぶねこ
@もじらもーど。
loginの必要にゃweb管理画面があるのだが、頻繁に自動logoffされたりだの、ブラウザ本体が肥大化して別の管理スクリプトからkillされるだので、要するにloginが面倒。
で、その程度のものは自動化プラグインがあるだろうと踏んでいたのだが、にゃんだか思ったより無いというか、ぱっとしにゃい。
にゃんぞの外部サービスに登録してアカウント作れみたいにゃものは忌避感が働くので、ローカルで動くAutofillというアドオンを試してみる。
helpを読まにゃいとアレにゃUIだが、最終的にsubmitはjsコード書けという潔さで、まぁ何でも出来るけどそれはそうだねという。
外部からkillされたタブでは流石に動作しにゃいようで、まぁ致し方にゃいか。
結局wait入れて.click()呼ぶ感じで動いたけど、もうちょっと本格的に自動化する手段を導入した方が良いだろうにゃという印象。
ヘッドレスで動かしたいわけじゃ無いのだが、あの辺の機能にゃら何でも出来るよにゃぁという。
▼ vmware 関連記事
Linuxにゃvmでnfsdが動いてる物があるのだが、どうにもスループットが出にゃい。
まぁnfsだしね、といった一般的にゃ設定項目は特段の問題が無く、というか物理PCと同じ設定でやたら遅いのでvmの問題らしい。
いろいろいじってみたらvmホストの電源管理がBIOSににゃってた。OS側制御にしてesx側で管理させにゃいとvmのレスポンス速度が半分以下くらいににゃるので、多分これが原因。
ただまぁホスト再起動する必要があり、大変面倒という。
▼ vmware 関連記事
大概のvmはさほどのパフォーマンスを要求するものでも無し、シンプルに1vmdk構成が良いと思われるが、種々の都合でI/Oパフォーマンスを引き上げたい場合というのはある。
ストレージ側のHDD台数が多い場合は、ある程度Queue深度を上げた方がスループットが良くにゃるので、ストレージへのQueueを増やしたいということににゃる。しかしvm側で1HDDに見えている場合はvm側で早期にQueueが詰まってしまうので、ストレージ側がBusyでは無いにもかかわらずそれ以上のスループットが望めにゃい状態が起こる。
そこで複数のvmdkにアクセスを分散させるとパフォーマンス向上が期待できる。
単純にゃ実験としては、Winでpagefileの置き場をC:とした場合と比べ、x: y: z:のvmdkを追加してpagefileを3ドライブに分散させると、ストレージが追いつく限りはswapの読み出しが速くにゃる。vmでは定期的にゃメモリ吐き出しによって物理PCよりpagefileの使用率は上がるので、環境によっては結構効果的である。
pagefileは自動で分散されるが、普通のデータドライブの場合はそうでは無いので、ソフト的にストライピングする。Winであればダイナミックディスクで合体させることににゃる。分散が間接的ににゃるため確率的にゃ改善とにゃるが、ある程度の効果は出る。
あまりに大量にvDiskを追加すると管理も面倒ににゃるのでほどほどでよいが、ストレージHDD数が多ければその分分割して問題にゃいだろう。
ちにゃみに仮想SCSIアダプタ側にもQueue上限はあるので、Queueが膨大にゃ場合はvSCSIアダプタをmaxまで増やしてvDiskを分散させるとよりパフォーマンスが上がる。
また、ストレージがnfsの場合は、異にゃる接続を経由させると待ちが無くにゃりパフォーマンスが上がる。異にゃる接続というのは別subnetでexportしてmountすればよい。
よってパフォーマンスを求めたい場合は、vmdkを物理HDD台数程度作り、それぞれ別subnetでexportしたものをデータストア登録し、vSCSIアダプタ4台に分散登録してvm内部でソフトウェアRAID0すれば、ある程度の結果が見込まれることににゃる。そこまでしたい人は居にゃいだろうからソフトウェアRAID0だけで良いと思うが。
▼ vmware 関連記事
大概のvmはさほど巨大にゃサイズにはにゃらにゃいのでほったらかして良いのだが、vmdkが1Tを超えてくるとバックアップその他でいろいろ面倒ににゃってくる。
バックアップに限らずファイル単位で何かやる際に2Tの1ファイルよりは500Gの4ファイルのほうが何かと取り回しが良いのは事実だろう。
また、vm特有の問題として、snapshotが肥大化した場合、これのマージには一時的にある程度の容量が必要とにゃることが多い。で、巨大1vmdk構成の場合かにゃりの空き容量を消費する羽目ににゃるので、場合によってはsnapshotのマージが出来ずに詰むことも起こりえる。
snapshotでにゃくとも、vmdkの一部のみを別ストレージへ移動するといった緊急手段が執れるようにするには巨大vmdkは問題が多い。
斯様にゃ場面を想定すると、vmdkをソフト的に分割しておくと何かと便利ということににゃる。ストレージや転送速度にゃどに依るが、およそ500Gを超えてくると面倒ににゃってくるので分割すると良いと思われる。vmがWinでもLinuxでも、巨大化するようにゃ追加HDDに関しては、複数台を追加して論理的に1台に見せかけることは容易である。ストレージがしょっぱい場合は単純にゃ結合、ストレージ台数に余裕があるにゃらストライピング的にゃ手法で合体させると良いだろう。
▼ vmware 関連記事
80gのsystem.vmdkのあるvmに3Tのhdd.vmdkを追加すると、network bootでDHCP探して止まる。
datastoreの認識が怪しくて、RAID板上で4Tのはずが6T認識しているので、たぶんこのせいだろうと思い、datastore消して再登録するも変化無し。
RAID板でLDを消して再度組み直してみても変化無し。
つまりゴミデータを読み込んでしまってるので、RAID板の機能でdisk wipe。
これでdatastoreは正常にゃ容量で認識するようににゃった。
が、3Tのhdd.vmdkを作成追加するとvmがbootしにゃい症状に変化無し。
別のホストでは似たようにゃvmが普通に動作しているので原因がよく分からにゃい。
vmのscsiホストを分離すると動作した。
▼ vmware 関連記事
いろいろ棚上げされてた案件を再び調査。
目標:
esxiでマウントしたzfs鯖において、vm毎にzfsを作り、zfs send等による差分backup等を実現する。
条件:
ESXi 6.5
ubuntu server 18
nfs v3
(nfsがv3にゃのはv4の挙動で気持ち悪いものがあったからだが、これは別途検証しにゃおしてもよい時期ではある。)
実験1:
zfs create pool/zfs1
mount server:/pool/zfs1 as datastore1
copy vm0/* datastore1/vm1/
register datastore1/vm1/*.vmx as vm1
poweron vm1
この状態ではすべて問題にゃく動く。
実験2:
zfs create pool/zfs1/zfs2
cp vm0/* datastore1/zfs2/
register datastore1/zfs2/*.vmx as vm2
poweron vm2
これは失敗する。datastore上に子zfsを作り、そのまま何もせずesxから参照している。
power on手前までは正常。コピーにゃどは出来ており、権限にゃどの問題では無い。
File system specific implementation of Lookup[file] failed
Failed to create swap file '〜〜.vswp' : Bad parameter
がlogに出ているので、swap生成で失敗しているようだが、ちょっと原因が分からにゃい。
実験3:
create vm datastore1/vm3/
add hdd vm3 datastore1/zfs2/*.vmdk
poweron vm3
これは正常に動作する。
つまり、vmのワークdirを従来のdatastore上に置けばswapがそこに生成されるため、vmdkは子zfs上に置いても動作するということににゃる。
実験2において.vmxのsched.swap.derivedName行を削除しておくと、
Failed to create swap file '//hoge.vswp' : Bad parameter
という表示ににゃることから、swapファイルの生成先pathが異常ににゃる模様。
実験4:
zfs create pool/zfs1/zfs3
mkdir datastore1/zfs3/dir
cp vm0/* datastore1/zfs3/dir/
ln -s datastore1/zfs3/dir /dir
register datastore1/zfs3/dir/*.vmx as vm3
poweron vm3
これは動作する。
swapファイルのpathの前半が消滅して/を見に行くようにゃので、1段dirを掘って、/にsymlinkを張るとちゃんと見に行って動く。
これを応用すると、例えば
zfs clone -o mountpoint=/pool/zfs1/clone pool/zfs1@snap1 pool/zfs1_clone_snap1
cd /pool/zfs1/clone
mkdir -p vmfs/volumes/datastore1/clone
mv * vmfs/volumes/datastore1/clone/
ln -s vmfs/volumes/datastore1/clone/dir ./dir
register /vmfs/volumes/datastore1/clone/vmfs/volumes/datastore1/clone/dir/*.vmx
にゃどとして、zfs cloneした物を新規vmとして登録したりもできる。かにゃり冗長にゃdirににゃる上に、inode被ってるのでまともにゃ運用はあかんやろうけど。
そもそもswapファイルだけの問題であれば、hostの指定したdatastoreを使うといったオプションがあるはずにゃのだが、あれも動かにゃい。謎。
というわけで、この条件下ではちょっとバグがキツくて実用にはしんどそう。
しかし、nfs3でもおよそ問題にゃくアクセスできているし、大半の技術的問題は無くにゃって居るようだ。
nfs4にゃら現状でも動作するかもしれにゃい。
▼ ZFS 関連記事
▼ vmware 関連記事
ざっくり言うとssh経由でいろいろやってたりするとlogin失敗がカウントされて、ロックアウトされるのでWeb側でログイン出来にゃくにゃる。
vim-cmd hostsvc/advopt/update Security.AccountLockFailures int 0
しておくとその辺無効化されて快適に。
▼ vmware 関連記事
esx6.5のvmにfirefox入れて動かすだけという物体が、やたらレスポンスが悪い。
ping応答が3msかと思えば2000msとかににゃって、明らかにホスト側の異常を疑ったんだが、他のvmは正常だしnicとケーブル入れ替えていっても変化にゃかったので、どうも特定vmに起因するのかにゃと。
で、設定見ていったらビデオメモリ1Mで3Dが128Mとかいう謎設定ににゃってた。・・・が、これを変更したり自動認識にしても変化にゃし。
とりあえず別の2012R2時代のvmに移植したら問題にゃく動作したので、2016由来のものか、ESX由来のものか、とにかく新しいものはいろいろ怖いね。
▼ vmware 関連記事
SATAのSSDを直付けして、vmfsにvmdk作って、linuxのvmにつけて使うとかいう基本的だが推奨されにゃい構成において、vm上から当該SSD上の仮想HDDに書き込むと、2MB/sくらいしか出にゃい。
ほぼDisk Busy状態で話ににゃらにゃいので、vmfs上のvmdkをLazy ZeroedからEager Zeroedにしたら普通の速度ににゃった。
毎回Zero化が走るとしてもそこまで遅くにゃるのはちょっと想定外というか、そんにゃ挙動じゃにゃかったと思うんだが、SSDと認識しているので別の動作をしているのだろうか。
▼ vmware 関連記事
vmにNICを足していくと10個が上限ににゃる。
以前から緩和されてこにゃい制限にゃんだが、地味にきつい。
全TAGをvmに渡してしまってもいいんだけど、セキュリティ的にゃ意味で制限したいし、そうすると標準vSwitchでは実現できにゃい。
▼ vmware 関連記事
大きく違うのは、クライアントであるC#版がにゃくにゃったこと。おかげでUIがいろいろとダメダメ。
・VC用のvSphere Web Client
・VC用のvSphere Client - HTML5
・ESXi用のHost Client - HTML5
にゃどが標準であるのだが、無料で使えるのはHost Clientということににゃる。
Host ClientにはFling版のESXi Embedded Host Clientがあり、こっちが非オフィシャルの最新版という扱いだろうか。
いずれにせよ、HTML5を駆使したWebブラウザベースのvmコンソール!!とかが出来るけどべつに要らにゃい上にキーバインド使えにゃいので実用ににゃらにゃいので、VMware Remote ConsoleをDLしてきてローカル端末にinstallするしかにゃい。
▼ vmware 関連記事
ESXi無償版には使えにゃい。
1vmを選択してローカル等にコピーする感じ。
▼ vmware 関連記事
FreeだとProtect 8 VMsと書いてある。
実態はOVFでサーバが1つ動き、あとはFlashベースのブラウザUIとにゃる。
問題は現在使っているバックアップ方法と合わにゃい。ESXiを追加する際にUUIDが一致するvmが大量に検出されてしまう。
あとESXi無償版はどうも対応してにゃさげ。
▼ vmware 関連記事
vmのバックアップやesxiホストとのファイル転送にゃどが使える。
無償版ではvmのバックアップ先はローカルマシンのみとにゃる。インクリメンタルバックアップは使えにゃい。バックアップタスクとして登録実行が出来にゃいのでvm毎に手動バックアップとにゃる。またESXiも扱えるが2ホストまで。
esxiホストにscpするのと似たようにゃ速度感。
▼ vmware 関連記事
ESXi(無償)にも対応とか書いてあるので使ってみた。
VADPを用いる方法は無償状態のESXiには使用できにゃいので、ssh経由でVDDKを用いた方法、所謂snapshotを統合してvmdkをcloneするようにゃ手法のようで、これは流石に自作バックアップより劣る。
▼ vmware 関連記事
にゃんかいろいろ情報集積できるぽいんだが、現状ではvCenter用。
Ver7からESXiに対応してるようにゃのだが、Free版はまだの模様。
▼ vmware 関連記事
OpenDedupを使ってみる。javaベースの重複排除fsで、とりあえずLinuxのfuseが主体のようだ。NAS的にゃ簡易にゃ制御WebGUIが付属する。
OVFで簡単に試せるようににゃっているのでDLしてきてデプロイ。
https://hoge/を開いてroot/admin
ネットワーク設定変更
ホスト名変更
あととりあえず動くんだけど一応コンソールで
rm /etc/localtime ; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
apt-get update
apt-get install console-data
apt-get install open-vm-tools
do-release-upgrade
do-release-upgrade
とかしたくにゃる。
メモリ追加や、VMXNET3化、PVSCSI化は問題にゃい。
WebGUIからCreate an SDFS Volumeしていけば一応ボリュームとか作れるんだが、LVMのおかげで微妙にゃ上限容量のドライブににゃっており、そのまま使うには微妙。ただしvHDD追加して認識させようとしても特定のLVM名かにゃにか決め打ちににゃってるようで上手く行かにゃい。
WebGUIを使わにゃければ多分問題にゃいのだろうがそれはそれで意味がにゃいわけで、ちょっと微妙にゃOVFににゃってる。
ざっくり使った感じだと、動いてはいるけどにゃんかヤダってところか。
あとsdfscli volumename --volume-info
とかしても認証求められるんだが、
/etc/sdfs/hoge.xmlの
<sdfscli enable="true" enable-auth="true"
を
<sdfscli enable="true" enable-auth="false"
に変更すれば通るようににゃる。
▼ vmware 関連記事
vmホスト内蔵のストレージをnfsその他でExportして使用する、というのは常に出てくる思想であるが、実際やってみたら面倒だったのでメモ。
普通にやると、ローカルデータストアにvmdk作って、vmnic割り当てて、ににゃるのだがこれが猛烈に遅いので却下。
最も期待できるのがDirectPathによるパススルー。これでRAIDカードごとvmに割り当ててしまえばよい。
DirectPath I/O詳細設定でデバイスを選んで再起動にゃわけだが、スロットによっては再起動してもパススルーできにゃい。必要に応じて異にゃるスロットに移動する必要がある。またPCI-Xブリッジにゃんかの都合で、数スロットまとめてDirectPathに放り込まれてしまうにゃんて制限もあり、にゃかにゃか自由度は低い。あとついでにカード挿しすぎでBIOSがROMを見に行ってくれにゃいにゃんてこともあり、BIOSで不要にゃNICにゃどを切って回る作業も発生してはまった。
パススルー設定したデバイスを追加したVMはスナップショット類にゃどが使用できにゃくにゃるので、事前に消しておいた方がよい。またメモリ予約にゃどにも制限が生じるようだがとりあえず面倒にゃので全面予約した。
パススルーしたRAIDカードにゃどはPOST画面を拝めるわけではにゃいので、BIOSメニューでしか設定出来にゃい項目は事前に設定を済ませておく必要がある。Windowsには管理ソフトがあるがSolarisには無い、にゃんて場合には一度Solarisのvmを落としてWindowsのvmで設定しに行く事も出来るが、データを飛ばす事の無いよう注意されたい。
RAIDカードとNICをパススルーしてvmに組み込めば、実機とそこまで変わらぬ程度のパフォーマンスが得られる。管理や冗長化のためにvmxnetも付与してvm側でホットスタンバイにしておくと良いだろう。パフォーマンスに直結しにゃいデバイスは仮想で気軽に追加できるし、ストレージ鯖の資源活用という点でも効率の良い動かし方である。ただしやはりやっていることが複雑であり、何らかのきっかけで巻き添えで全体に影響が出たり、vmホストのメンテナンスでストレージも落とさざるを得にゃいあたりは悩ましいと言える。
次にちょっと仮想レイヤを挟んでRDMで誤魔化す手法。これはvmホストがディスクとして認識していれば特定vmにマッピングできるものだが、SAN等以外では少々作成が手間にゃこともあるようだ。RAIDカードを介さにゃいSATA HDD等を複数RDMでvmにつっこんでどの程度の管理が可能にゃのかは怪しいが。一度データストアにしてvmdkファイルを作って割り当てるのと速度的には大差にゃいぽいのでどの程度の利用価値があるかは怪しい。どちらにせよBBWC無しでは速度が出にゃいのでやるにゃら\3k程でRAID板買った方がマシだと思うが。
それはともかくLUNとして見えるようにゃFC SAN等ではGUIから簡単にRDM設定が可能。物理と仮想の選択では仮想を選ぶとsnapshot等が使用できるようににゃる。あと今回はほぼ1vmが独占するため
(esxi 5.1)
vim-cmd hostsvc/advopt/update Disk.SchedNumReqOutstanding long 256
esxcli system module parameters set -p ql2xmaxqdepth=64 -m qla2xxx
esxcli system module parameters set -p lpfc0_lun_queue_depth=64 -m lpfc820
reboot
のようにデフォより上げておくと良いかもしれにゃい。
▼ vmware 関連記事
いやリークにゃのかどうかは調べてにゃいけど、sfcbdが肥大化してconsoleがswap始めてるのはどうかと思ったので、
/etc/init.d/sfcbd-watchdog restart
をcronに放り込んでおいた。
まぁそういう対処で良いのかとかいろいろ感じる部分はあるが。
▼ ESX 関連記事
▼ vmware 関連記事
そういうFirewallソフト。Linuxベース。
vmxでDL出来るが、toolsは入ってにゃい。
inst時のNetwork configuration typeは
GREEN:LAN
PURPLE:wireless
ORANGE:DMZ
RED:WAN
らしい。このあたりの設定は、コンソールでsetupを叩くと再設定できるが動作は非常に怪しい。あちこち裏で決め打ちしてる。
IPを割り振ったら、http://〜:81/ で繋がる。sshはport222で繋がる。
GUIのMaintenance->updatesでupdateしておく。
vmware toolsはmodで出回ってるので、
cd /tmp ; wget http://smoothwallmods.googlecode.com/files/vmwaretools-1.1-Express-3.0-i386.run ; sh vmwaretools-1.1-Express-3.0-i386.run
でinst出来るが、かにゃり無保証w
GUIはさくさく動作してくれるがどうもにゃんだかわかりにくい気味
でもLinuxだからiptablesの動作に慣れてるのは良い点かも。
といった所で、ちょっと怪しいにゃあといったところ。
▼ vmware 関連記事
pfsenseをvmで使おうと思って、vmware toolsの入れ方を探したら、GUIのパッケージのところにあった。openの方だけど。これは便利。
但しNICはvmxnetじゃにゃくてe1000じゃにゃいとダメぽい。
▼ ESX 関連記事
▼ ZFS 関連記事
▼ vmware 関連記事
試したいことがあって再度。
StorのDeveloperEditionのISOを落としてきてsolarisとしてvmにinst。いやvm版でも良かったんだけど。
ライセンスはめどい。MACが変わるだけで再発行ににゃる。Inst後にゃらSSHでコピペとかでいいんだがにゃんとかにゃらんのかねぇ。1度雛形vmが出来てしまえばそれを使い回せるけども。
で、vmware-toolsだが、
cd /cdrom/vmwaretools
cp vmware-solaris-tools.tar.gz /tmp
cd /tmp
tar xzvf vmware-solaris-tools.tar.gz
cd vmware-tools-distrib
su
./vmware-install.pl
ですんにゃりと。
さて、NEXENTAでAD連係ってどうにゃるのかにゃーという実験を。
LDAP連係はどうもUNIX向けらしく、AD連係はCIFS使えとか書いてあるので、Join ADして共有したらさっくり通った。
ただACLがよく分からず。こっちはUnixのローカルユーザかLDAPユーザが無いとダメとか書いてあって、じゃあACLどうするねんという。で、初期ディレクトリのACLは最悪chmodするとして、Winからファイルとか書いてACLをCIFS経由で設定することは出来るので、NEXENTAのGUIを使わにゃいにゃらこれはこのままでも使えにゃいことはにゃい。GUIというかNEXENTA側でちゃんと管理したい場合にはローカルユーザを生成してIdentity Mappingでwinname:*@domain.local == unixuser:*としておくと、とりあえずマッピングされる。ただこれは流石にLDAPか何か経由でインポートしにゃいと大変にゃので、何か仕組みがあるんだろうにゃぁ的にゃ。
▼ ESX 関連記事
▼ ZFS 関連記事
▼ vmware 関連記事
ESX4 + FreeNASのiSCSIで動かしてて、にゃんかの拍子にLANが切断、復旧させてもiSCSIにゃdatastoreが見えにゃい。
datastoreの追加をするとタイムアウトか全ディスク削除ににゃってしまう。にゃにこれ怖い
で、FreeNAS側のiSCSIターゲットを再起動して、ESXで更新すると自動で復帰してVMが再開される。
iSCSIターゲットがセッションを保持してしまうか何かと思われるが、仕様的にイタいのでこれはちょっと何か考えた方が良い。トラブルの元だ。
操作ミスすると怖いことににゃりそうにゃのでメモ。
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
server2008R2に対応したとか言うので入れてみた。まだ実験してにゃいけど。
で、Instに際して注意点。ML115とかには普通に入るのだが、SC1435に入れようとするとNUMAがどうので蹴られる。ESX4では無かったんだけどねー。
ので、BIOSでメモリのInterleavingをOFFる必要がある。それはそれでどうにゃんだろうって感じだがESXが上手くやってくれるんだろう多分。
▼ ESX 関連記事
▼ vmware 関連記事
どうせつけっぱにするんだしということで、IRCとかにゃんとかは鯖のvm上で動いてるんだけど、vmだからといっててきとーにゃ物をInstしてみてやっぱ巻き戻し、といったことに流用すると結構ややこしいことににゃった。
ということで安易にsnapshotをrevertすると困ったことににゃるリスト。
・ドメイン関係。認証通らにゃくにゃるんでいろいろやり直し。
・TCPセッション系。IRCとか諸々。
・RDPセッション系。RDPは自動再接続してくれるが、WinRemotePCとかは落ちる。
・FS系。例えばネットワーク上の.tcをマウントしてたvmをrevertするとNTFSに不整合が。
・鯖系。当然クライアントは落ちる。
てことで、特にTrueCryptとかの類は注意しにゃいといかんね。
▼ vmware 関連記事
例によってvmの世代バックアップってどうしたらいいのかにゃ話。
1ファイル200Gとかで1週間に1回くらいこれが書き換わるようにゃものを世代で残しつつ、最新ファイル(できれば1つ2つ前も)は直接参照できてほしい、とかを考えると思ったより選択肢が思いつかにゃい。
いくつかキーを出してみると、
・ZFS。FreeNASかOpenSolarisににゃる。圧縮可。Snapshot可。nfs/iscsi。オペレーションは自信にゃし。
・NTFS。Winににゃる。圧縮可。nfs/iscsi。
ShadowCopyは信用にゃらんのでvm化してSnapshot。
・LVM。Linuxににゃる。圧縮不可。nfs/iscsi。Snapshot領域が固定サイズ。vm化するにゃら意義無し。
・
pdumpfs。Linuxににゃる。圧縮不可。nfs。HDDが余るにゃら可能。現状のコピーはダブる。
・
rdiff-backup。Linuxににゃる。圧縮。nfs。diff計算が1日で終わるのかどうか微妙。復元に時間かかる。
・任意データストア。任意vm。nfs/iscsi。vmのsnapshotを使う。
と、こんにゃ感じか。圧縮の有無はともかく、簡単操作で任意の過去に戻れるという意味ではvmのsnapshotが強そう。但しvmdkを上書きバックアップするときに、全部Writeしてしまうと多分意味がにゃいわけで、rsync的にゃ書き込みをさせにゃいとだめ。ちょっとめんどくさい。
ZFSだと自動でやってくれそうにゃ気もするが不明。圧縮も付いてて大変便利そうにゃのだが、よく考えるとZFSで過去のSnapshot別途nfs公開して・・・というのは地味にめんどくさい作業である。調べるのが。そのへんnfsdをvmでrevertしてしまえばお手軽で良いだろう。nfsのキャッシュとかがあるのでちょっと不整合が気ににゃるが。iscsi target+vmfsでもよいが、これをrevertして大丈夫にゃのかというのが非常に疑問にゃので。
とにゃると普通のLinuxやFreeNASといったベタにゃvmを作ってnfsdを立てるだけで良いと言うことににゃる。シンプルでつぶしが効きそう。圧縮したければNTFSかZFSを使用することににゃるが、Winのnfsdはにゃんだか面倒にゃんだよにゃー。でもfreenasのZFSというのも大概どうかというのはあるし、ここでOpenSolarisのvmを作るというのはさすがに不安要素増やす感じ。
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
いろいろ溜まってきたので整理。
・Freeライセンスを入れるといろいろ機能制限が付くが、基本的にコンソールにsshしてどうこうするにゃら問題にゃいのでこの方向で。
・ESX4iはUSB boot出来て便利にゃんだがコンソールが低機能すぎてしんどい
・ESX4にESX4iのFreeライセンスがお手軽便利で快適
・1vm毎に結構にゃ量のメモリを消費するので小粒にゃLinuxを大量にといった向けには
vmware serverがよい
・ローカルSATAはRAIDが組めにゃいのでSSDにするか、対応H/W RAIDカードを使用
・NFSかiSCSIが利用できるのでFreeNAS等を別PCに入れて繋げばよい
・現状のFreeNASは大変遅いのでLinuxか何かを普通に入れた方がマシ
・一応nfsよりiSCSIの方が速いし複数のESX鯖から共有できるので有力
・nfsはESX鯖以外からも参照できるし枯れてて大事故のリスクも少にゃく手軽
・ローカルHDDもnfsもiSCSIもESX鯖からパフォーマンスが出るかどうかは別
・snapshotは複数取れるし分岐も出来る。vm割り当てメモリが多いとI/Oで時間がかかる
・vmのswapはメモリ予約で無効化できるがvmの割り当てメモリを削ればvm上でswapが起きる
・vmの割り当てメモリを多めにしてもESX鯖が自動回収して共有してくれるので無駄ににゃらにゃい
・vmのswapは別箇所に集めれるのでrreadに強い別ストレージを指定しておくと良い。
・vmのディスクは任意のストレージ上に分散配置できるがそのsnapshotはvmのディレクトリとにゃる
・vmのディスク置き場、vmのsnapshotと設定ファイル置き場、全vmのswapファイル置き場の3つに分離できる
・ローカルにSSDを1つ付けておくと、RAID不要の鯖Inst先、snapshot置き場、swap置き場として使えて大変高速
・vmのバックアップはコンソールでスクリプト実行させると潰しが効くが比較的めんどくさい
・vmのsnapshotを取ってopen出来るファイルのみコピーし設定ファイルを戻すだけでバックアップ出来る
・vmを止めるにゃらファイルコピーすればいいし、ストレージのsnapshot機能があれば早く済む
・vmdkがthinの場合はsparseファイルにゃのでcp等は適切に行う必要がある
・CPUの割り当てはある程度予約しておく
・server2008にゃど最新OSではtoolsが未対応にゃのかメモリ共有等の機能が働きにくい
・ESX鯖のCPU等が異にゃるとpause状態のsnapshotは移行しても再開は出来にゃいのでCPU機能のマスクが必要だがめんどくさい
・CPU+HDD+SSD+MEMが1台、HDDx6が1台というのが最小構成か。バックアップは本体HDDで。
・まともに冗長考えると最低ESX鯖が2台、ストレージが2台で相互にバックアップ置いとく感じ
・Hyper-Vとどちらがと言われると少々疑問だがLinuxとtext設定ファイルベースで自由に出来るのは好ましい
・RedHatのコンソールと良くできたGUIはvmware server 2.xやHyper-Vに比べて利点
んーこんにゃもんか? Hyper-Vもある程度評価しておいた方が良いと思うんだが、ちょっと目を話したら2008 R2が出てたりとかころころ変わってめんどくさい。
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
ESX鯖にSSDを入れてswap先に使っていたのだが、まぁそれはそれで快適にゃ動作ににゃったものの、各vmが自力で吐くswapはやはりストレージ上に溜まるわけで、蓄積するとやはり遅い。
spoolだののtmp的にゃ用途には、いろんにゃ所でキャッシュが効くので、writeが極端に遅くにゃければストレージ上で問題にゃいのだが。
というわけで、ESXのローカルSSDを活用すべく、vmのvmdk構成を変更。各vmにswap用ドライブを追加し、そのvmdkをSSD上に配置すれば・・・と思ったのだがこれはとりあえず失敗。snapshotを使うとsnapshotはvmxのディレクトリに保存されてしまうらしく、これの変更は手間というか周囲の動作保証が取れんのでやりたくにゃい。
そこで発想を逆転して、vmxはSSD上に、vmdkはNAS上に配置することに。これはディスクの場所変更でオフィシャルに出来る。vmの構成ディレクトリが複数ににゃってバックアップがめんどくさい等のデメリットもあるが、ひとまずsnapshotと併用するとかにゃり高速化するので非常に使える。つまりNASにはWriteが一切行かにゃいのでRAID5でも構わにゃいしIOpsも稼げる。頻繁に書かれる場所はsnapshotとしてSSD上に自動的に配置される。vmが自前でswapすれば必ずSSDに書かれるわけで合理的。膨大にゃ量を書くvmはsnapshot取らにゃいだろうからSSDの容量も80G有れば十分すぎる。
さすがにプチフリというか、WriteによってReadが阻害されまくるSSDではvm数次第で苦しくにゃってくるが、ある程度キャッシュ等積んだSSDにゃら問題は起きにゃいだろう。にゃんだかESXのローカルWrite自体がいまいちにゃ速度だし・・・これは不具合かにゃぁ?
ESX# dd if=/dev/zero of=xxx bs=1024000 count=100
100+0 records in
100+0 records out
102400000 bytes (102 MB) copied, 4.96558 seconds, 20.6 MB/s
とかいう状態でSSDとは思えにゃい低速っぷり(笑) HDDより遅いし。理屈ではもっと高速でsnapshot時のメモリダンプとかも高速にゃはず。にゃんだろう、キャッシュ?
▼ ESX 関連記事
▼ vmware 関連記事
いろいろ溜まってきたのでメモ。
ds2fullpath (){
sed -e 's/\[\([^]]\+\)\] \([^[ ]\+\)/\/vmfs\/volumes\/\1\/\2/'
}
get_ds_from_path (){
sed -e 's/\/vmfs\/volumes\/\([^\/]\+\)\/.*/\1/'
}
inner_quote (){
sed -e 's/[^"]*"\(.*\)".*/\1/'
}
get_allvms_vmid_name (){
vim-cmd vmsvc/getallvms | sed -e 's/\[.*\] .*//' -e 's/ \+$//' -e 's/\([0-9\]\+\) \+\(.*\)/\1 "\2"/' |
awk 'NR!=1'
}
get_allvms_vmid_datastore (){
vim-cmd vmsvc/getallvms | sed -e 's/\([0-9\]\+\) \+.* \+\[\(.*\)\] \(.*\/.*\.vmx\) \+.*/\1 "\2" "\3"/' |
awk 'NR!=1'
}
get_allvms_vmid_vmxpath (){
vim-cmd vmsvc/getallvms | sed -e 's/\([0-9\]\+\) \+.* \+\[\(.*\)\] \(.*\/.*\.vmx\) \+.*/\1 "[\2] \3"/' |
ds2fullpath |
awk 'NR!=1'
}
get_vmid_from_name (){
get_allvms_vmid_name | grep \"$1\" |awk '{print $1}'
}
get_vmxpath_from_vmid (){
get_allvms_vmid_vmxpath | awk '/^'$1' /{print $2}' | sed -e 's/^\"//' -e 's/\"$//'
}
get_vmxpath_from_name (){
vmid=`get_vmid_from_name $1`
get_vmxpath_from_vmid ${vmid}
}
get_vmsdpath_from_vmid (){
get_vmxpath_from_vmid $1 | sed -e 's/\.vmx$/.vmsd/'
}
get_datastore_from_vmid (){
get_allvms_vmid_datastore | awk '/^'$1' /{print $2}' | sed -e 's/^\"//' -e 's/\"$//'
}
get_vmname_from_vmid (){
get_allvms_vmid_name | grep "^$1 " | sed -e 's/.*"\(.*\)".*/\1/'
}
get_vmdk_data_file_from_vmdk (){
test -f "$1" || return
f=$(grep " \".*\.vmdk\"$" $1 | grep -v parentFileNameHint | sed -e 's/.* "\(.*\)"$/\1/')
echo "$f"|grep ^/ >/dev/null && echo "$f"
echo "$f"|grep ^/ >/dev/null || echo "`dirname "$1"`/$f"
}
is_there_snapshot (){
vmid=$1
snapshot_name=$2
vim-cmd vmsvc/snapshot.get $vmid | grep "\-\-Snapshot Name" | sed -e 's/-\+Snapshot Name \+: //' |
grep "$snapshot_name" >/dev/null
}
remove_last_snapshot (){
vmid=$1
if [ "`get_vmxpath_from_vmid $vmid`" = "" ] ; then return 255 ; fi
lv=`vim-cmd vmsvc/snapshot.get $vmid |grep CHILD |wc -l`
vim-cmd vmsvc/snapshot.remove $vmid 0 $lv
}
get_alltaskids (){
vim-cmd vimsvc/task_list | grep vim.Task: | sed -e 's/.*vim.Task://' -e 's/,//' -e "s/'//"
}
get_taskids_from_vmid (){
vim-cmd vimsvc/task_list | grep vim.Task:haTask-$1 | sed -e 's/.*vim.Task://' -e 's/,//' -e "s/'//"
}
filter_running_taskids (){
while read taskid ; do
is_task_running $taskid && echo $taskid
done
}
get_running_alltaskids (){
get_alltaskids | filter_running_taskids
}
get_running_taskids_from_vmid (){
get_taskids_from_vmid $1 | filter_running_taskids
}
get_taskname_from_taskid (){
vim-cmd vimsvc/task_info $taskid | grep "name = " | sed -e 's/.*"\(.*\)".*/\1/'
}
is_there_running_task_vmid (){
get_running_taskids_from_vmid $1 | grep .
}
is_task_running (){
taskid=$1
vim-cmd vimsvc/task_info $taskid | grep 'state = "running",' >/dev/null
}
wait_while_task_running_vmid (){
while : ; do
taskid=`get_running_taskids_from_vmid $1 | head -1`
if [ "$taskid" == "" ] ; then break ; fi
echo waiting `get_vmname_from_vmid $1` `get_taskname_from_taskid $taskid`
sleep 3
done
}
path_r2a (){
echo `cd "$1" && pwd`
}
path_cut (){
src_dir=`path_r2a "$1"`
file=$2
basedir=$(dirname "$src_dir")
c=$(echo "$basedir" | wc -c)
echo "$file" | cut -c ${c}- | sed -e 's/^\///'
}
cp_dir_sparse (){
cp_prog=$1
SRC=`path_r2a "$2"`
DST=`echo "$3" | sed -e 's/\/$//'`
find "$SRC" -type f | while read a ; do
$cp_prog "$a" $DST/`path_cut "$SRC" "$a"`
done
}
get_datafiles_from_filelayout_with_vmdk_data (){
get_datafiles_from_filelayout $1 |
while read a ; do
echo "$a"
echo "$a"|grep \.vmdk$ >/dev/null && get_vmdk_data_file_from_vmdk "$a"
done
}
get_datafiles_from_filelayout (){
vim-cmd vmsvc/get.filelayout $1 |
grep "\"\[.*\] .*\..*\"" |
inner_quote |
ds2fullpath
}
get_vmx_dir (){
d=`get_vmxpath_from_vmid $1`
dirname "$d"
}
get_logfile_dir (){
vim-cmd vmsvc/get.filelayout $1 |sed -e 's/^ \+//'| grep "^logDirectory *=" | inner_quote | ds2fullpath
}
get_logfiles_from_filelayout (){
d=`get_logfile_dir $1`
vim-cmd vmsvc/get.filelayout $1 | sed -e ':a;$!N;$!b a;s/\n//g' |
sed -e 's/.*,.*logFile *=[^\[]\+\[\([^]]*\)\].*/\1/' -e 's/",/"\n/g' |
inner_quote |
while read a ; do
echo "$d/$a"
done
}
get_configfiles_from_filelayout (){
d=`get_vmx_dir $1`
vim-cmd vmsvc/get.filelayout $1 |
sed -e ':a;$!N;$!b a;s/\n//g' |
sed -e 's/.*,.*configFile *=[^\[]\+\[\([^]]*\)\].*/\1/' -e 's/",/"\n/g' |
inner_quote |
while read a ; do
echo "$d/$a"
done
}
get_allfiles_from_filelayout (){
sub (){
get_configfiles_from_filelayout $1
get_logfiles_from_filelayout $1
get_datafiles_from_filelayout_with_vmdk_data $1
}
sub $1 | sort | uniq
}
vmname="$1"
backupdir="$2"
copy_p="python -u cp_sparse.py"
vmid=`get_vmid_from_name "$vmname"`
vmx="`get_vmxpath_from_vmid $vmid`"
vmsd="`get_vmsdpath_from_vmid $vmid`"
vim-cmd vmsvc/snapshot.create $vmid __backup __backup 1 1
wait_while_task_running_vmid $vmid
vim-cmd vmsvc/snapshot.get $vmid
dupfile=0
get_allfiles_from_filelayout $vmid | while read a ; do
basename "$a"
done | sort | uniq -d | grep . >/dev/null && dupfile=1
get_allfiles_from_filelayout $vmid | while read a ; do
dst="$backupdir/$vmname"
if [ "$dupfile" = "1" ] ; then
ds="`echo "$a" | get_ds_from_path`"
dst="$backupdir/$vmname/$ds"
fi
$copy_p "$a" "$dst/`basename "$a"`"
done
remove_last_snapshot $vmid
wait_while_task_running_vmid $vmid
get_datafiles_from_filelayout $vmid | grep \.vmdk$ | while read a ; do
dst="$backupdir/$vmname"
if [ "$dupfile" = "1" ] ; then
ds="`echo "$a" | get_ds_from_path`"
dst="$backupdir/$vmname/$ds"
fi
$copy_p "$a" "$dst/`basename "$a"`"
done
get_datafiles_from_filelayout $vmid | sort | uniq | grep \.vmdk$ | while read a ; do
if [ "$dupfile" = "1" ] ; then
continue
fi
parent_path=`grep "^parentFileNameHint *=" "$a" |inner_quote`
echo "$parent_path" | grep "^/" >/dev/null || continue
vmdk=`basename "$parent_path"`
cat $a | sed -e 's/^\(parentFileNameHint *= *\)".*"/\1"'"$vmdk"'"/' > "$backupdir/$vmname/`basename $a`"
done
分散datastoreに対応しようと思ったけどめどくにゃっていい加減にゃ対応のまま放置してあります状態(笑)
ま、そのままコピーするだけで、一応バックアップにはにゃるわけだし、複雑にゃことしにゃい方が良いんだけど、やっぱりそのままインポートしてrevert押せばすぐ起動ってのはバックアップとして有用だと思うわけで。
▼ ESX 関連記事
▼ vmware 関連記事
freenasのnfsやiSCSIとESXの組み合わせでかにゃり格闘したのだが、いい加減疲れた上に、ESXiを入れ直そうと思ったらUSBがエラー吐いて止まるとかいろいろ霊障も起き出したので、freenasを捨てることに。
Ubuntuを実機に入れてInst時にmd raidを組む。ExpertModeでinstしたら不明にゃ選択肢も出て少々時間がかかる。めどい。
とりあえずnfsをいれて
ESX# dd if=/dev/zero of=test bs=1024000 count=1000
1000+0 records in
1000+0 records out
1024000000 bytes (1.0 GB) copied, 24.115 seconds, 42.5 MB/s
おお、まともだ!
ESX# time cat test >/dev/null
real 0m54.728s
・・・あるぇ?
ESX# dd if=test of=/dev/null bs=1024000
1000+0 records in
1000+0 records out
1024000000 bytes (1.0 GB) copied, 49.9522 seconds, 20.5 MB/s
にょ〜ん・・・
まぁFreeNASよりは倍ほどマシだが。
因みにcat file >/dev/nullでnfsdが5%+5%ほどCPU食ってる。ちょっと食い過ぎじゃね? まぁCPUが1コアの2.7GHzとか速度求めるには微妙ではあるとしても。
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
nfs遅いよねー!(?)と思ってわざわざディスク6つも積んでめんどくさいRAID10設定までしてInstしたFreenasのiSCSIが強烈に遅い。10MB/s出てにゃいんだが?
これはESX側との相性もあるんだろうと思うがやっぱりこれは使えん。
nfsが複数繋いで15MB/sとかでまだマシだったり。
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
ということで、ESX4鯖にSSDを積んでホストのスワップ先に指定してみた。
今のところ非常に快適。
ついでにESXもSSDにInstしておいた。HDDよりは壊れにゃいだろう。
ま、いろいろ考慮すれば、小さいSSD積んだキャッシュのデカいCPUの鯖にESX4+ESX4iライセンスと、iSCSIかNFS鯖に出来るディスク数積んだ安鯖にUSBメモリ挿してFreeNAS、という構成が現状では妥協点か。vmのサイズが小さければFreeNAS鯖無しでSSDのデカいのを積む、という手がベストだが。あぁさらにバックアップ用のにゃにかストレージが必要か。これはESX鯖にデカいHDDを積んでバックアップ先にしておくのがよいかも。
▼ ESX 関連記事
▼ vmware 関連記事
ESX4で普通にvmを増やしていくと、.vswpファイルにごりごり書かれて、たいそう遅くにゃる。このあたりの動作はvmware serverと同じ。
で、Winに限ってはmainMem.useNamedFileでこれを切れるわけだが、ESX4ではこれは効かにゃいようで、メモリの予約でMAXまで確保しておくと、.vswpが0ににゃる。
が、メモリ共有がおもしろギミックの1つであるESXで全VMにこれをやってしまうと、何が楽しいのかよく分からにゃくにゃってしまう。かといって1つでも.vswpにアクセスするvmがあれば、そのdatastoreのvmは壊滅的にゃパフォーマンス低下を喰らう。にゃんともvmware系の弱い所である。
一応、swap先を変更できるので、全vmの.vswpを集めて別のdatastoreに置いたり出来るのだが、それはそれでまた高コストで煩雑にゃ解決法である。ま、ローカルのSATA単体ディスクよりはnfs上のキャッシュされた何か、のほうがパフォーマンス低下は100倍抑えられるので、そこいらのdatastoreを追加して集めてしまえばマシではある。が、複雑性を増して故障個所を増やしてるわけで、どうにも賢くにゃさげ。
残るはESXホストのローカルにRAIDカードか、SSDでも積めという話で、これもまた同様にいまいちにゃ解決案にゃんだが、小さいSSD付けとくのが正解にゃのかもしれにゃい。うーん・・・
▼ ESX 関連記事
▼ vmware 関連記事
ESX4でnfsを使ったが意外とこれが速い。レイテンシの点では劣るはずにゃのだが、たぶんnfs鯖のキャッシュと、syncが無視されてる気がするのがデカい。にゃんというかぬるぬるとスムースに動く。
あと実験がてら稼働中にLANを引っこ抜いてみたら、一応しばらくはwaitしてくれて、さらに放置し続けると落ちた。このへんのタイムアウト値は多分変更できるんだろうにゃ。
速度のチューニングも兼ねて、nfsまわりの設定を変えたいのだが知識がにゃい。うーむ
▼ ESX 関連記事
▼ vmware 関連記事
ESXi4で定期backup & リストア1分でvm復帰を目指すと、ESXホスト間で相互backupと、nfsを共有マウントという2つの方法が思いつくが、今回は2つ目で。にゃぜにゃらば、ESXiホスト間でsparseにゃファイルのコピー方法が見あたらん。SSH経由でstdin〜とかやりたくにゃいんだがどうにゃんだ・・・。ここいらはESXにした方がやはりいいか。
まぁともかく、ESXi4用にnfsdを立てる。とりあえずML115にFreeNASというベタにゃ構成でRAID5。最近ZFSが使えそうにゃFreeNASも出てきてるが怖いので触らにゃい。
で、特に引っかかる部分はにゃくnfs共有してマウントすればdatastoreとして使える。とても便利。但し速度が出にゃい。MAX30MB/sくらいで、実質15MB/sくらい? バッファリングとかいろんにゃファクタがあるようにゃので、後日これはチューンする必要がある。
あと懸念されたsparseファイルの扱いだが、以前のpythonスクリプトとかでも普通にコピー出来てるので問題無さそう。
これでESX鯖が死んでも別のESX鯖でnfs上のvmを起動させればOKのはず。
ただ欲を言えばそりゃ圧縮したり世代管理が出来るとベストにゃわけで、ZFSに期待する所にゃのだが・・・
▼ ESX 関連記事
▼ FreeNAS 関連記事
▼ vmware 関連記事
そろそろESXiの限界が見えてきたというか、飽きたので、ESX4をインストールしてESX4iのキーを放り込む。RCLIがどうの、といった制限があるのかもしれにゃいが、コンソールがほぼ素のLinuxにゃので事実上やり放題である。
但しUSBメモリにはインストール出来にゃいので、では非RAIDのHDDでいいのかとか、その辺が嫌にゃ感じ。
▼ ESX 関連記事
▼ vmware 関連記事
rsync調べだが、ともかくsshが遅い。
ssh -W 1048576
でちょっと早くにゃるか?とか、inetdのsshdにも-W 1048576付けてみたりしたが、変わらん。
dropbearのソースに何か書いてある系だとするとここの高速化はちょっとしんどそう。
▼ ESX 関連記事
▼ vmware 関連記事
何のことはにゃい、普通のssh風である。
cd /.ssh/
dropbearkey -t rsa -f id_rsa
dropbearkey -f id_rsa -y |grep ssh-rsa > id_rsa.pub
scp /.ssh/id_rsa* root@remotehost:/.ssh/
あとはremotehost側で
cd /.ssh/
cat id_rsa.pub >> authorized_keys
すれば完了。相互に自動ログインさせるにゃらローカル側でもしておく。
あとは
ssh -i /.ssh/id_rsa remotehost
で自動ログインできる。
scpもrsyncもこれでいけるはず。
▼ ESX 関連記事
▼ vmware 関連記事
海外からバイナリ拾ってくる。
ある程度動く。
結局staticでbuildした何か、を持ってくれば、結構動くんじゃにゃいのかという。
で、ローカルとかssh経由は動くんだが、inetdにrsync登録してもgenerate_files phase=1で止まる。にゃんじゃこれ
inetd.confが
rsync stream tcp nowait root /vmfs/volumes/datastore1/bin/rsync rsync --daemon --log-file=/tmp/rsync.log --config=/vmfs/volumes/datastore1/bin/rsyncd.conf -vvv
rsyncd.confが
[test1]
path = /vmfs/volumes/datastore1/
comment = test1
use chroot = no
lock file = /tmp/rsync.lock
read only = no
uid = root
gid = root
strict modes = false
とかにゃんだが。
ちにゃみにuse chroot = noにしにゃいとchroot出来んと言われる。chrootが使えん模様。
うーん、せっかくだから(?)ssh経由しにゃいrsync直通で大量送信したいんだが、ちょっとどこで止まってるのか分からにゃいにゃぁ。ていうかエラー吐かずに止まるってのはにゃんだろう? timeoutしにゃかったのでネットの何かを待ってるのではにゃいようだし。
▼ ESX 関連記事
▼ vmware 関連記事
海外からバイナリ拾ってくる。
ローカルのファイル間では普通に使えてるっぽいが、あやしい。
rsync -Sでsparseにゃファイルもコピーできてる様に見えるが、ファイルサイズがちがう(笑)
で、肝心のホスト間コピーだが、ln -s sshしてあれば。
rsync file root@remotehost:/tmp/
とかで一応通る。にゃんか強烈に遅いけど。5MB/sて・・・・。-Sは怖くて使えにゃい。
CPUを食ってるのでこれはsshが原因としか思えにゃい。
で、いつものcipherにゃんかの設定を・・・コマンドラインでは出来にゃいようで。うーん
▼ ESX 関連記事
▼ vmware 関連記事
ESXi4にpythonが入ってたので、どこまでpureで出来るか的にゃ・・・まぁどうでもいい。thinにゃvmdkファイルをにゃるべくthinにゃままでコピーしたいにゃぁという話。
#!/bin/python
import sys
import os
import stat
src_file = sys.argv[1]
dst_file = sys.argv[2]
bs = 1024 * 1024
if not os.path.isfile(src_file) :
print "file not found :" , src_file
sys.exit()
if not os.path.isfile(dst_file) :
f2=open(dst_file, 'w')
f2.close()
src_size = os.path.getsize(src_file)
src_stat = os.stat(src_file)
src_time = (src_stat[stat.ST_MTIME], src_stat[stat.ST_MTIME])
dst_size = os.path.getsize(dst_file)
dst_stat = os.stat(dst_file)
dst_time = (dst_stat[stat.ST_MTIME], dst_stat[stat.ST_MTIME])
print "src : time",src_time , "size=",src_size , " " , src_file
print "dst : time",dst_time , "size=",dst_size , " " , dst_file
print "blocksize : ", bs , "bytes"
if src_time == dst_time :
if src_size == dst_size :
print "skip"
sys.exit()
f1 = open(src_file, 'r')
f2 = open(dst_file, 'w')
zero = chr(0x00)
zero_block = zero * bs
while 1:
s = f1.read(bs)
print f1.tell(),"/",src_size,"\r",
if not s:
break
if s == zero_block :
f2.seek( f1.tell() )
else:
f2.write(s)
f2.write( "a" )
f2.truncate( f1.tell() )
f1.close()
f2.close()
os.utime(dst_file, src_time)
print ""
print "done."
うーん、実にいい加減だw
まぁでも一応動いてる。ある程度sparseにコピー。一応、日付とサイズが同一にゃらスキップ、日付もコピー、何とにゃく途中経過も表示してる。途中経過はバッファ切らにゃいとアレだが。
ブロックサイズはCPU如何によって減らした方が速いと思われる。にゃんかしらんが遅い。
てことでがんばれば付属pythonで結構何でも出来そうにゃもんだがどうにゃんだろうにゃ。
▼ ESX 関連記事
▼ vmware 関連記事
vmware server 1.xで動いてたvmxをESX4に持ってく手順。
vmware converterでserver上からESX4上に変換する。この時vmdkが肥大化するので、極端にデカいvmdkの場合はsettingでパーテーションサイズを削る。にゃお、ESXのdatastoreで標準の1MBで確保してると1ファイルの最大サイズが256gにゃので注意のこと。
toolsは自動でinstさせてもよいし、あとで手動で入れても良い。キーボードドライバが何故か英語ににゃるので日本語に戻す・・・これは何か原因がありそう。
で、この時点で一応移行完了ではあるのだが、せっかくにゃので作り直す。
vmkfstoolsでvmdkをthinに変換。vmも新規作成してVer7に、NIC類もタイプを新しくする。
あとはお好みでいろいろ設定。
と、いう作業を10個ほど行って、そろそろ飽きてきたのでにゃんかネタが欲しい。
▼ ESX 関連記事
▼ vmware 関連記事
散発的に単スレッド高負荷が発生する鯖があるんだが、これをAthlon64X2あたりで動かしてたら、結構遅かったので、C2Dのにゃんぞに移動したら多少改善された。
で、今回SC1435のOpteron23xxに移動したら、かにゃり高速化した。それぞれのCPUのクロックや演算速度を大雑把に見積もってみると、結局CPUのキャッシュ量がボトルネックだった模様。
vm向けにはCPUにキャッシュが沢山載ったものを選びましょうみたいにゃ話。
▼ ESX 関連記事
▼ vmware 関連記事
ESXの素敵にゃ面としては、vmのメモリ共有によって、にゃんだかお得感が増す所。実際にはさほど言うほどの効果は無くて、オーバーヘッド分が帰ってくる程度にゃんだけど(笑)
で、意図的に2003鯖のvmばかりを集めたら、11vmでメモリ共有が3gほどににゃった。オーバーヘッドが1.5gほどあるので、2倍も取り返してる、と言う感じで自己満足できる。
あと、自動的に未使用メモリを拾ってくれるので、とりあえず全vmメモリ2gで確保だーとかしても上手くやれば動く(笑) ちょっと設定変えにゃいとちょっとずつしかメモリ解放されにゃいので、時間差起動しにゃいと無理にゃんだけども。
そういやメモリとかCPUをホットアドで起動後に追加できるんだが、これは自動化できんものか。toolsでメモリ使用量とか監視して、足りにゃくにゃったらメモリをホットアドとかそういう・・・
▼ ESX 関連記事
▼ vmware 関連記事
ちょっと特殊にゃ認証サーバ、物理マシンがいまいちにゃのでさっさと仮想化する。いつも通りバックアップしてからvmware converterでさくさくっと。
で、特にこれと言った障害は出にゃかったけど、UPSとかいろんにゃ不要ソフトが動いてたのでこの際にゃので整理整頓。
よく分かんにゃいapacheが2つとか、いろいろ悲惨にゃ状況だったが、多少改善。でもこれは可能にゃら再構築した方がいいにゃぁ。めんどくさいからそのまま使うけど。
▼ vmware 関連記事
sshdは動いてるのにsshが無いにゃんて! ということで
ln -s /sbin/dropbearmulti /bin/ssh
これで使える。
本来はdbclientらしい。どのみちln -sで実態は同じである。
▼ ESX 関連記事
▼ vmware 関連記事
今ににゃってvmware player。
まぁ特に書くべき物が無いのだが、vmのイメージが2GB制限?とかがあるらしく、Winの共有上にvmdk置いたら却下された。にゃんじゃそれ
もしかすると2GB splitにゃvmdkにすればOKにゃのかもしれにゃい。
▼ vmware 関連記事
vSphere Clientとかからだけ使ってねというお話にゃんだがやっぱり直接sshで入れた方が何かと便利。
で、コンソールでALT+F1してunsupported
PASSいれて/etc/inetd.confのssh行を有効にしてkill -HUPすればOKのはず。
▼ ESX 関連記事
▼ vmware 関連記事
ESXi4に2008R2を入れてみたら、猛烈に不安定。
タスクマネージャを最大化したら画面が凍るとかそう言うレベルで。
で、VGAのアクセラレーションを下げたり、vmwareのSVGAドライバをuninstしてみたりいろいろやったが、それ以外の部分でも不安定で、結局全く使い物ににゃらず。
まぁ未サポートとはいえ、もうちょっと動いてくれてもナーという。
かといってMSのHyper-Vを入れるかと言われると、アレはアレで種々微妙にゃ問題が・・・
▼ ESX 関連記事
▼ vmware 関連記事
用語が終わってる感があるが、要するにfs上で使ってにゃい部分を削ってvmdkをシェイプアップしたい場合にどうするかという。
で、thinにゃvmdkだと、vmtoolsの圧縮タブが使えにゃくにゃってる。にゃんぞ・・・
どうやらthinじゃにゃくthickつーか普通のベタvmdkだと可能ににゃるらしいんだがそれ意味にゃいし。
converter再びが正解か?と思ったがそれはそれで、にゃー。
NHCが対応しにゃいかしら?
▼ ESX 関連記事
▼ vmware 関連記事
ESXi4だが、何故かpython 2.5が入っている。ま、busyboxとやら用にGNUにゃツール一式をコンパイルしてコピーすれば動くのだろうが、とりあえず簡易にゃ手間で何とかにゃる方向で探るべきでしょう、ってわけでpython 2.5のライブラリをコピーして動くか実験。
そこいらのdebianでapt-get install python2.5
ESXでscp -r user@debian:/usr/lib/python2.5 どこか
export PYTHONPATH=$PYTHONPATH:どこか
としておけば一応大概のpythonスクリプトが動いてしまったり。
で、にゃんか例えばsmtpでメール送ったりもできるわけで、cronとかでbackupスクリプト走らせるにゃら便利かにゃーとか。
▼ ESX 関連記事
▼ vmware 関連記事
vmware serverのvmのバックアップはWin上ということもあって、ある程度確立していたわけだが、ESXi4上のvmはどうやってバックアップするのでしょう、ってわけでいろいろ手探り。
こういうのは先に海外探すべし、と思いつつ一応標準的にゃコマンドで何が出来るのか探す。
まず方針として、NTFSのshadow copyのようにゃFSレベルのスナップショットが見あたらにゃいので、vmをpauseしてsnapshotとってstartしてsnapshotからコピーというvmware serverでのやり方は捨てることにする。このあたりはESXの使うdatastoreストレージがその機能を持っていれば有りだろう。
で、vmware serverと違ってvmのsnapshotは沢山取れるようにゃので、とりあえずvmのsnapshotを取り、readonlyににゃってファイル群をコピーし、snapshotを削除する。コピーしたファイルに手直しをしてsnapshot時点からstart可能にする、という方向でやってみる。
VMware vSphere CLIからのリモート作業、としたかったが逐一接続が遅いのと機能不足に思えたのでとりあえずESXのコンソールにSSH接続にて作業。
まず
vim-cmd vmsvc/getallvms から対象vmのIDを得る。
vim-cmd vmsvc/snapshot.create 999 snap1 desc1 1 1 でsnapshotをつくる。時間がかかるので、vim-cmd vmsvc/snapshot.getとかをポーリングして完了を待つ。10秒ほどvmは止まるかも知れにゃいが一応許容範囲。
cp -ar vm/ backup/ とりあえずコピーできるファイルをコピー。エラーは無視。
vim-cmd vmsvc/snapshot.get 192 |grep CHILD |wc -l でさっき作ったsnapshotの階層を出して
vim-cmd vmsvc/snapshot.remove 192 0 N でそれを削除。ただこのあたりはsnapshotが単純にゃ構成だった場合のみ有効で、正直vmsvc/snapshot.removeの引数が謎過ぎて意味不明。どうにゃんだこれ・・・
ちにゃみにオプション無しでsnapshot.removeするとrootに近いsnapshotが削除される。まぁ定期的にsnapshot作って、とかいう場合には便利そう。
あとはコピーした不完全にゃvm構成ファイルの手直し。
cp -a *.vmx ../backup/cat vmname.vmsd|grep \.fileName|sed -e 's/.*\.fileName *= *//' -e 's/"//g'|while read a ; do cp -a $a ../backup/ ; done みたいにゃのでにゃんとにゃく動く。たぶん。
で、さてここで問題です。backupしたファイルはどうにゃっているでしょう?
答えはcpでsparseが解除されてディスク容量食いまくりにゃのでした。おいおい。
これはsparseのままコピー出来るソフトがあれば解決するのだが、busyboxとやら付属cpだのtarだのddだのはどうも未対応ぽいらしく・・・。どうしようかねぇ。
コピー先がdatastoreで無ければもうちょっと手はある気がするが、backup上の*.vmxをインベントリに追加するだけでさっくりリストア出来てすぐ動くというのは得難い気がして。
▼ ESX 関連記事
▼ vmware 関連記事
VMware vSphere CLI付属のvifs.plでESXi4上のファイルのUL/DLが出来るのだが、vifs.pl -pで単一ファイルをUL出来るがdir単位ではできにゃい。
つまり使うにゃと言うことですね、わかります。
普通にSCPとか使えと言うことらしい。
▼ ESX 関連記事
▼ vmware 関連記事
豊富に動いているvmware server 1.xのvmを、ESXi4鯖に移動したい。
まずは一応実験。server1.xのvmdkを直接ESXi4のdatastoreに置くとNGぽい。互換性のにゃいvmdkにゃら何ぞ拡張子でも変えてくれりゃいいと思うんだが。
ってことでVMware vCenter ConverterをDLしてInst。vmtoolsとかupdateしてくれるのは便利。希にvmtoolsのupdate時にハマるサービスとかがあるので、そう言うサービスは停止した状態でupdateする。
で、とりあえずこれでOKとは言えるのだが、vmware converterで変換すると動くけどフルサイズのvmdkににゃってしまう。ESXi4で新規にvmを作るときには、vmdkはthinというsparseファイル形式を指定できるので、vmware serverと同じく、とりあえず容量はどれも500gくらいでー、といった何も考えずに長らく使える便利vmが作れるのだが、これがconverterで全部リアルにゃサイズに伸張されてしまうとディスク容量が大変にゃことに。
これはもうconverterが対応すれば終いだと思うのだが、一度ESX4上に変換した後でvmdkをthinに変換という二度手間を行うのが現状ベスト。まぁアホにゃサイズを指定してあったvmは多少自重したサイズにconverterで指定し直した方がいいとは思う。
さてvmdkの変換といえばとりあえずvmware server付属のvmware-vdiskmanagerとか。ただしver 1.x系しか知らにゃい上にさすがにESX向けに変換するオプションは見あたらにゃいのでパス。
次は本命NHC。ってプラグインが404だし、にゃんとにゃく動いてるように見えるんだがESX4からは却下される。うーん、にゃんか違うの?
ってことで仕方がにゃいのでvSphere CLI。
vmkfstools.pl --server 1.2.3.4 --username root --password pass -i /vmfs/volumes/datastore1/upload_dir/windows.vmdk -d thin /vmfs/volumes/datastore2/tmp/windows.vmdk
とか。別にリモート実行する必要は無いのでESX上でやっても同じ。-d thinが付いてるのでsparseにゃvmdkが生成される。ちにゃみに-d 2gbsparseにしても1ファイルににゃった。よくわからん。
converterで自動的にESX4上に展開されてしまうので、その後の処理とにゃればESX4上でやるべきにゃのかもしれにゃいが、server 1.xにゃvmdkをローカルWin上でコンバートしてESX4にULの方が何とにゃく楽だにゃぁ。server2.x付属のvmware-vdiskmanager.exeだったらOKにゃのかしら?
ググるとOVF Toolを使ってどうのってのも有るようだがもうめんどくさくにゃった。
▼ ESX 関連記事
▼ vmware 関連記事
VMware vSphere CLIを入れるとリモートでコマンドがたたける。
ssh許可するのとどっちが便利かは微妙。
Virtual appliance for the VMware Infrastructure Remote CLIもある。
毎回繋ぎに行くのがすごく重い。
あと使えるコマンドが微妙。
vmkfstools.plとかvmware-cmd.plとかvifs.plとか? にゃんだろうこのいまいちにゃラインナップ。
あとpathの問題があって、一緒に入るperlを叩く必要があるんだが、まぁcygwinとかと被るわけで。
@echo off
pushd "C:\Program Files\VMware\VMware vSphere CLI\Perl\bin"
perl "C:\Program Files\VMware\VMware vSphere CLI\bin\%1" --server 1.2.3.4 --username root --password pass %2 %3 %4 %5 %6 %7 %8 %9
popd
といった微妙にゃpushdとかset pathを書いたスクリプト経由で使った方がいい。
因みにESXiにちゃんと無料ライセンスキーを入れるとCLIは機能制限されるらしい。にゃにそれ
▼ ESX 関連記事
▼ vmware 関連記事
でESXi4だが、HDDにinstというのは面白みがにゃいし、HDD1台にしかinst出来にゃいわけで、HDD死ぬとにゃんだか嫌そうでもある(実際にはvmデータだけ残ってりゃ大したことはにゃい)。
ということでUSBから起動すると萌えだよね、って方向で作業。実際には外付けCDROMを持ってくるのがめんどくさかった。
やり方はVMware-VMvisor-Installer-4.0.0-171294.x86_64.isoのimage.tgzのVMware-VMvisor-big-171294-x86_64.dd.bz2のVMware-VMvisor-big-171294-x86_64.ddをwinのddか何かを使ってUSBメモリに書き込めばOK。
USBメモリにゃのでbootが遅かったりするが、起動後は大してアクセスしにゃいので大丈夫。
▼ ESX 関連記事
▼ vmware 関連記事
名称がややこしくにゃってきているのだが、ESX無料版のESXiのVer4である。
3.x系がチャレンジャー向けだったので静観していたのだが、4ににゃってある程度固まってきたかにゃーと思って入れてみたんだがやっぱりまだしんどい系(笑)
とりあえずDLしてCDRに焼いてML115でboot。さっくりSATAにゃHDDも認識し、DHCPでIP拾うのでブラウザからアクセスすればOK。vSphere ClientをInstして普通に使える。
backupの件が少々アレにゃんだが、大差にゃいので、ML115にwin+vmware serverとかの構成で使ってる向きには、そろそろESX4にしてもOKではにゃいかにゃといったところ。
▼ ESX 関連記事
▼ vmware 関連記事
原因不明でvmホストが落ちた。直接原因はバックアップのためのファイルコピーで、ちょっと流石にそれでこけられても困るんだが、fastcopyとvss組み合わせた物にゃので、OSやFSの深い部分で何かが足りにゃくにゃっていた可能性はある。が、Winupdateで再起動して間もにゃいし、他のホストは動いてるので、ハード的にゃ物ではにゃいかと思われる。そして原因が分からにゃい、と。
それはともかく、vmホストが死んだときのvmゲストのデータはどうにゃるのでしょう、というわけで復旧メモ。vmは全て可変長のvmdkである。嫌にゃ順序で追記部分が増加ファイルににゃっていくわけで・・・こりゃまずいやね。
まずホストのNTFSがざっくりやってくれるわけで、vmdkの増分部分もそれにゃりに残った状態で復旧してくれる。0バイトににゃってたら苦しいとこだがそのあたりは大丈夫。ただこの増分ファイルはvmware的にきちんと書かれてにゃいわけで、まずそこの認識が不安だったが特にエラー無くゲスト起動。
が、やはりゲストのFSはかにゃり致命的にゃことに。linuxゲストのext3は最初普通に起動したのだが、全ファイルスキャンとかさせると異常を発見。再起動するとfsckを要求してきた。これはやり直して必要にゃファイルだけバックアップして、vmのsnapshotで巻き戻してリストアでOK。
次に軽度にゃwin。NTFSはがっちり異常を検知したようだが自動復旧させて起動。が、不気味にゃのでsnapshotで巻き戻す。
最後はWinのファイルサーバ。起動時のchkdskが終わらにゃい。というか大量のファイルが死んだようにゃメッセージが流れてるのでvmごと捨て。うーん、これはバックアップが無いと怖いね。
ということで、やはりvmホストが凍ったりするとvmゲストの被害は甚大。vmdkを全容量確保しておけばかにゃり被害は軽度ににゃるのではにゃいかとは思ったが、そんにゃディスク容量はにゃいとか、バックアップが遅くて話ににゃらん、とかいう場合もあるわけで、まぁどうしたもんだろうね。vmのsnapshotを頻繁に取っておけばほぼバックアップに近い効果が得られるけど、サイズ的にやりたくにゃい場合も多そう。
このあたりはvmゲストのサイズに応じて手段を分けるしかにゃいだろうにゃぁ
▼ vmware 関連記事
processor数を1か2で選択できるわけだが、これ2にしても大して速くにゃらにゃいんだよにゃぁ。
むしろホストがbusy気味の時に極端に遅くにゃる。
ので、よほどホストが絶対的に2コア以上空いてる保証がにゃい限り、1CPU設定にしとかにゃいと滅ぶ感じ。
このあたりはもちっと新しいvmware使った方がいいんだろうにゃぁ。MSのにも手を出してみる時期だろうか
▼ vmware 関連記事
.vmxのパラメーターとしていろいろ隠し物があるらしいのだが、よくクラスタ用の設定で出てくるやつのデフォルト値をvmware-cmd getconfigで調べてみた。win 2003用だと、
diskLib.bufferedMigrate = 1
diskLib.createSpaceSafetyMargin = 8192
diskLib.dataCacheMaxRABusyCnt = 4
diskLib.dataCacheMaxReadAheadSize = 512
diskLib.dataCacheMaxSeqRA = 0
diskLib.dataCacheMaxSize = 2048
diskLib.dataCacheMinReadAheadSize = 0
diskLib.dataCachePageSize = 8
diskLib.dataCacheSeqThreshold = 8
diskLib.dataCacheUpdateFrequency = 10000
diskLib.dataCacheUseExtraRA = 1
diskLib.defaultEmbeddedDescSize = 20
diskLib.defaultGTEsPerGT = 512
diskLib.disableSparseChecker = false
diskLib.flatAllocWriteSize = 128
diskLib.grainCoalescing = true
diskLib.gtCacheMode = 0
diskLib.gtCacheSize = 0
diskLib.ignorePermissions = false
diskLib.legacyCheckerTolerateHoles = true
diskLib.maxNumGrainsCoalesced = 10
diskLib.maxUnsyncedWrites = 64
diskLib.redoGrainSize = 128
diskLib.redundantGrainMetadata = true
で、
それぞれ正確にゃ解説が見つからにゃいのだが何とにゃく分かる系で嫌にゃ感じ(笑)
ReadAheadはそのままだし、maxUnsyncedWritesにゃんかはWriteBackCache量相当じゃにゃいかと思うんだが、このあたりはベンチしにゃいと判明しにゃいだろうにゃぁ。で、ベンチ結果がネット上に皆無にゃのは何でにゃんだろうにゃ。
ただ、どうせホストが落ちるとvmdkのキャッシュが0であったとしてもどんにゃ破損するか分かったものではにゃいわけで、いっそ徹底的にwritebackにゃ動作させた方がいいんじゃにゃいかとは思うね。
▼ vmware 関連記事
vmのコピー用雛形は、あとあと手間が倍増されるのできちんと作った方がいい。
Winupdateだ何だのは当然として、eventlog関係やにゃんかのアプリレベルでも入れるべきものは事前に入れておく方がよい。レジストリやDEVMGR_SHOW_NONPRESENT_DEVICES=1にゃんかもやっとけばいいだろうし。
で、その辺はまぁ使ってりゃ気づくのでいいとして、意外と効いてきたのはページファイルの設定とか。
通常c:はntfsの4kにゃわけだが、これがまたvmのディスクI/Oの低速化に一役買ってるわけで。例えばtmpやページファイルを別vmdkに移してntfs 64kにしておくだけで、結構負荷が減った。Winの一部ディレクトリにゃんかもlnしたらいいのかもしれにゃいが、ちょっと雛形でそこまでやるかどうかは微妙。
あともちろん雛形は徹底的にデフラグしておくと良い。
でまあここまでするにゃら雛形はntfs 16kあたりでインストールしておいたらいいのに、と言う話にはにゃるんだが。大概動くのでC:をNTFS 64KにしたWinとかが雛形としては良いのかもしれにゃい。
▼ vmware 関連記事
Linuxにvmware server 1.xを入れて動かしていたが、やはりswapが強烈でものすごく重い。I/O性能はmd経由にゃがらWin鯖より数倍高いのだが、1桁くらい体感で遅い。SSDにゃら何とかにゃるかも知れにゃいとかいう絶望的にゃレベル。
mainMem.useNamedFile = "FALSE"が事実上効かにゃいとにゃるともうどうしようもにゃい。I/Oは遅いがvmも分散させて何とかしろっていうWin+softRAIDか、I/OはWinよりはマシだがvmのメモリ設定がプアにゃLinux+softRAIDでは、完全にWinの勝ちか。Winupdateがめどいのを何とかしてくれたらにゃぁ。
とにゃると、Win鯖でHDDx6をRAID1x3に分けて、各vm毎に3ディスクまでは分散出来るということか。バックアップスクリプトがめんどくさくにゃるのでln -sか何かでごまかせば実用的にゃ手間で何とかにゃるかも。
▼ vmware 関連記事
外部公開してるweb鯖が何故かrejectされるようににゃったので調べてみるも、いまいち原因分からず。
結局vmware serverのNATサービスを再起動させたら治ったけど、logにも出てにゃいしちょっとこの程度の安定度では困るにゃぁ。
NATで治るということは、いつものNICの問題ではにゃいさそうだし・・・
▼ vmware 関連記事
linuxに入れたvmware server 1.xは順調に稼働しているものの、lsofしたらvmware-vmxが1000近くファイルオープンしてて、にゃんとにゃく怖くにゃったので
ulimit -n 4096
してみる。・・・あまり滅んだ記事が見あたらにゃいので無駄にゃお世話かにゃ?
ところでこれ、保存されるの? rcに書けとか?
▼ vmware 関連記事
vmでnicを外したり追加したりしまくってたら、勝手に古いIPが割り当てられてハマった。そんにゃことがあるのか・・・
で、根本原因は、
このネットワーク アダプタ用に入力された IP アドレス xxx.xxx.xxx.xxx は別のアダプタ アダプタ名 に既に割り当てられています。
を無視し続けてたわけで、ちゃんとデバイス消しましょうという話。
set DEVMGR_SHOW_NONPRESENT_DEVICES=1
しておくか、一時的でよければ
set DEVMGR_SHOW_NONPRESENT_DEVICES=1 & devmgmt.msc
で非表示のデバイスを表示させれば過去に繋げたデバイスも表示される。
怪しげにゃUSBデバイスとかたぶん消した方がいいかもしれにゃい。
▼ vmware 関連記事
vmware server 1.xホストのメモリが足りにゃくにゃってきたので、スワップしてもいいvmを集めて、遅いけど沢山動くよvmホストを作成。
設定をAllow some virtual machine memory to be swappedに変更。mainMem.useNamedFile = "FALSE"はそのままだが、にゃんとにゃくそれにゃりにスワップしてうごいてるみたい。設定メモリ量の合計以上の台数うごいてるし。
で、にゃんとにゃく全体的にもっさりした気がするんだが、よく分からず。というのもvm台数が増えたので何もしてにゃいのにCPUが常時30%食ってたりとかしてて・・・。まぁディスクreadは多少増えた気はするが、vmがswapしにゃくにゃったのでこの方が効率的かとはおもう。
ただこれ各vm毎に設定できるとかじゃにゃいと、vmホストが数台無いとやりづらい話である。要改善。
▼ vmware 関連記事
vmのバックアップは、pauseしてVSSとってそれをコピーするだけという手軽さにゃのだが、バックアップ先でどうするか、はまた別問題。
要はmax2Gくらいのファイルで、変更無しor微妙に変更されたものが毎日1tくらい来るのでいい感じで差分バックアップしろという要件にゃわけだが、手持ちの手法だといまいちぱっとしにゃい。
全vmを止めてからVSSとっていいにゃら、普通のバックアップソフトでいける。しかしsuspend & startを全vmで一斉に行うのはかにゃりの負荷にゃわけで、ちょっとやりたくにゃい。
で、例えばWin鯖にコピーして共有フォルダのシャドウコピーをつける。これでひとまず問題にゃい。が、この機能いまいち不安定で、何か有ると履歴が全滅する。バックアップとしてはあまり信用は置けにゃい。
とにゃると一時的に1tのtmpにコピーし、それを普通のバックアップソフトによって圧縮履歴ファイル化するという手法ににゃるわけで、Win付属のバックアップとかでもいいし、rdiff-backupやdarみたいにゃんでも時間内に終われば何でもいい。
しかしこう、いちいち構造が複雑ににゃるわけで、本質的にはあまり使いたくにゃい手法である。
他にはsamba鯖にコピーしてゴミ箱機能という案もあるがコピー時にファイル上書きしにゃいように注意する必要があるのと、毎日1tくらい増えるってのはさすがに厳しいので没。
Solaris入れてZFSがスマートだとは思うがちょっと冒険過ぎる。
シャドウコピー取ってから直接darとかで差分バックアップは、完動状態のバックアップvmファイルが見えにゃくにゃるのでパス。
とかまぁ、納得できる手法が見つからにゃげ。
▼ vmware 関連記事
vmware-toolsにディスクの圧縮とかがあるんだが、何とにゃくこれは意図したものとは違う気がする・・・
というわけで、お手軽にゃのはバックアップツールでファイルコピーするとか、NHCが便利。
vmwareに関してはdefrag機能もにゃんか微妙にゃんだが、可変長ファイルの内部構造が分からんのでどの程度重要にゃのかよく分からにゃい。
▼ vmware 関連記事
原因が多すぎて分からにゃいのでとりあえずメモだけ。
ホスト
ML115 G5, Athlon 64 X2, 2GB x4, 500GB x6, Broadcom GbE x2
Ubuntu server 8.x, 2.6.24-23-server x86_64
xfs RAID10 x6 linux md o2
vmware server 1.x
ゲスト
win2003
NTFS 64K RAID0 x3 dynamic
DFSR
こういう構成の実験で、ゲストがDFSR同期中にディスクが凍って止まった(笑)
vmがRAID0構成みたいにゃ同時I/Oを大量発生するとどうにゃるのかにゃ実験だったんだが、パフォーマンス以前に転けるとは思わにゃかった。しかし要因が多すぎて切り分ける気ににゃれにゃい・・・
▼ ML115 関連記事
▼ vmware 関連記事
色々あって物理的にゃファイル鯖が死滅した(笑)ので、vm上でファイル鯖運用。
特に留意すべき点はにゃいのだが、結局I/OやCPUのリソースが厳しいので、大量生産して負荷分散しようねくらいか。vmdkは容量固定でにゃくてもそれにゃりに使える。
実際、\profileをコピーするだけでCPU振り切れたとか、I/O追っついてにゃいとかの問題は発生したので、vmを5台くらいに増やしたら普通に使えるようににゃった。
ん〜、バックアップ楽だからファイル鯖にゃんてvmでいいかも。ついでにVSSやらにゃんやらでこける問題の回避もやりやすいし。
▼ vmware 関連記事
server 2.xの使い勝手が酷かったので、server 1.xをLinuxに入れてみる。
1つ前のカーネルということで同じくカーネルUbuntu Server 8 x64。
apt-get install kernel-package libncurses5-dev zlib1g-dev
linux-headers-2.6.24-23-server libx11-dev xspecs libxtst6 xinetd
apt-get install build-essential linux-headers-`uname -r` xinetd
apt-get install ia32-libs
cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1
cp /usr/lib/libpng12.so.0 /usr/lib/vmware/lib/libpng12.so.0
touch /etc/vmware/ssl/rui.key
touch /etc/vmware/ssl/rui.crt
こう・・・かにゃ? にゃんか不要にゃ作業もしてると思うが。
とりあえずそれにゃりに動作。
▼ vmware 関連記事
▼ vmware 関連記事
2GB分割にゃ.vmdkをもちっと細かく切りたくてNHCで再分割・・・しようとしたら、ディスクを読む時点でこける。にゃんかオーバーフローしてるぽいので、ディスク容量かと思ったが、50GBとかのvmdkでも起きるので違うみたい。
で、.vmdkをいじって分割数を減らしたら通った。つまり128分割とかされてると読めにゃいようだ(笑)
致し方にゃいのでvmware-vdiskmanager.exeで1分割に戻してから再度分割してみるも、もちろん玉砕。
がんばって他のツールで細分化するか、諦めるか迷ったが、パフォーマンス的にもよろしくにゃかろうってことで、今回はMAX2GBでがんばることにする。でも微妙にゃ分割数で引っかかるのは気持ち悪いので改善して欲しいにゃぁ〜
▼ vmware 関連記事
IntelにゃPCでもvmware serverでいきにゃりvmから外部へのパケットが飛ばにゃくにゃったりするみたい。
で、
Virtual Network Mappingを再設定で治ったけど、ほんとダメダメ。
BroadcomのNICだったのでドライバ変えてみるかにゃぁ
▼ vmware 関連記事
にゃんとにゃくAMDが原因としか思えにゃいんだが、vmware serverでいきにゃりvmから外部へのパケットが飛ばにゃくにゃったりする。
で、
Virtual Network Mappingを再設定で治らにゃかったので、ホストWin2003のネットワーク接続を無効にして有効にもどしたら治った。
ほんとダメダメ
▼ vmware 関連記事
どーにもこーにも不具合が多いのでメモ。
ホストとゲスト全部のWin向けCPUドライバを更新する
AMD Dual-Core Optimizerを入れる
BIOSで省電力関係を全部切る
各vmはシングルCPU設定
こんだけやってダメにゃ場合はIntelにゃホストに乗り換える(笑)
▼ vmware 関連記事
たぶん後から増えるだろうけど今のところ覚えてる範囲をメモ。
まずはMAC。pause状態でコピーすると新規作成されにゃかったりする気がするのでNICを消してADDし直しとか、vmx書き換えとかにゃんかてきとーにゃ方法で。
IP変更。/etc/network/interfaces
ホスト名変更。/etc/hostname
名前引き関連。/etc/hosts
メール関連。/etc/exim4/update-exim4.conf.conf /etc/mailname
その他/etcとかにある古いホスト名をgrep(笑)
とかまぁ比較的めんどくさい上に結構忘れる。自動化するには環境依存性が激しそうだし、にゃんぞ探した方が楽か。
▼ vmware 関連記事
vmをsuspendしてvshadowで高速バックアップだが、ちょっと微妙にゃ点が出たのでメモ。
これ、希にリストア先でファイル破損気味のエラーが出ることがある。
検証がまだにゃんだけど、suspend直後にvshadowとったらにゃんぞ問題があるのかもやしれにゃい。たとえばvshadowがライトキャッシュ無視してるとか・・・。
ただ、たぶんタイミングの問題で、何回かやった分ではvshadowのデータと実データは一致してるので、どうしても再現できにゃければvshadowが原因ではにゃい。
あと、コピー後にvmxの中身をちょっと書き換えたりすると、resume出来にゃいことがある。
▼ vmware 関連記事
ある日突然ゲストが通信できにゃくにゃって困ったり。
大体の場合、Virtual Network SettingでHost Virtual Network Mappingを一度Not bridgedにして適用し、再度元に戻すと治る。
いやぁすこぶるバッドノウハウやねぇ
▼ vmware 関連記事
vmware Serverのvirtual machine accountでLocal Systemを選ぶ操作をスクリプトにしたいと思ったのだがこれがどうやらレジストリに格納されてる。
HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Server\AccountInfo
にあるんだがにゃんだか暗号化されてる気がする。
User that powers on the virtual machineにもどすにはキーを消せばよいのだが、それ以外の操作はめんどくさそう。
ちにゃみにStartup / Shutdown optionsは
autostart = "none"
autostop = "poweroff"
と言った形で.vmxに入ってる。
autostart = "poweron"
autostop = "softpoweroff"
にしといて、
vmware-cmd -s register
してもこの値は保持されるが、値通りの動作をしてくれるかどうかは不明。
▼ vmware 関連記事
vmにゃetchにゃんだが、どうも最近、suspendから再startするとethNがlink downしたままににゃるようにゃ気がする。以前はこんにゃこと無かった、と思うんだが覚えてにゃい。
暫定で、crontabに
* * * * * root ifconfig | grep eth0 >/dev/null || /etc/init.d/networking restart
とか書いたけど、原因が不明。手作業でsuspendさせて復帰させてもちゃんと自動でlink upするんだがにゃ・・・
ホストを落とすかどうかとかARPのtimeoutとかvmのサービスとか、どこかに依存した問題にゃんだろう。
▼ vmware 関連記事
WebUIににゃるであろうにもかかわらず未だ使ってるvmware server consoleだが、Inventoryって順序を変えられにゃいのでvmが増えてくると激しく見にくかったりする。
で、この並び順を変えるには、
%ALLUSERSPROFILE%\Application Data\VMware\VMware Server\vm-list
を編集して
net stop vmserverdwin32
net start vmserverdwin32
すればいい。ただしVMware Registration Serviceは往々にして再起動するとtimeoutするので注意すること。
▼ vmware 関連記事
squidの負荷ってどんにゃもん何だろう、というわけで、vmwareゲストにsquidいれてみた。
意外と大したことがにゃい。所詮100baseっていうか。
ファイル数が増えてI/OというかFS的に困る場合はCOSSとかで。vmにゃのでディスクやパーテーション分けしてもいいかも。
ちにゃみにsquidによって何が高速化されるかというと、大概のwebでは全く効果はにゃいわけで、主にどこぞのCATVにゃ日記とかに効果覿面みたいにゃ。
▼ vmware 関連記事
やっぱやめ(笑)
snapshot動作が遅すぎる。pause/restartの方が圧倒的に速い。
結局以前の
pause/restartを使ったバックアップが一番影響が少にゃい。ファイルコピー後に世代管理どうするのか、みたいにゃ話はファイル単位で別途考えた方がよさそう。
▼ vmware 関連記事
よく見たらSnapshot取るときに*.lckファイルの削除を監視することでディスクアクセス完了を検知できそうね。
pauseの時もだけど。
▼ vmware 関連記事
batで
vmware-cmd.bat suspend
かけたら、ディスクがbusy気味にゃ時にtimeoutしやがった。
後段にポーリングして完了待ちにゃルーチン放り込んだけど、他の部分でもtimeout出るとすると面倒だにゃー
▼ vmware 関連記事
.vmdkは標準で2G分割出来るけど、512byte単位でぶった切ってリストアップしてあるようにしか見えにゃいので、たぶんそこいらのツールでもっと細かく制御出来るだろうと検索してみたらNHCでいけるみたい。
これで256MB分割とかにしておくとlog置き場とかの差分バックアップが高速化・・・するかにゃぁ
▼ vmware 関連記事
改善構想の続き。構想だけ。
vmware serverのsnapshot機能はもう日々のセッション保存のためにのみ活用し、手動でsnapshot的にゃものが欲しい場合にはvmのディレクトリごとコピーして置いといたらどうよ、という話。
snapshot相当を
"C:\Program Files\VMware\VMware VIX\vmrun.exe" snapshot vm\dir\xxx.vmx
cp vm\dir backup\dir
で行えばいいよね、って話だがTake and restore snapshots in the backgroundがONににゃってると
"C:\Program Files\VMware\VMware VIX\vmrun.exe" snapshot vm\dir\xxx.vmx
した後すぐに帰って来ちゃうわけで、どにゃいするのかと。
Take and restore snapshots in the backgroundをOFFにするとvmrun.exe snapshotは終了を待ってくれるので一応手法としては有りだろう。だがsnapshot取得に時間がかかるわけで、その間vmは停止してしまう。一度suspendさせてvss使った方が安泰にゃようにゃ。あと致命的に気ににゃるのは、vmrun.exe snapshotが帰ってきた後もにゃにやら事後処理をしてるようにゃ気がすること。もし遅延して何か書いてるとにゃると待つ意味はにゃい。
んじゃTake and restore snapshots in the backgroundがONの状態でにゃんぞ処理終了を拾えにゃいかってことにゃんだが・・・・・・無さそうだにゃぁ・・・
そこいらを諦めるとするとcron的にゃ継続処理でごまかすという手も。
"C:\Program Files\VMware\VMware VIX\vmrun.exe" snapshot vm\dir\xxx.vmx
sleep 1800
cp vm\dir backup\dir
を1h毎に回すとか・・・うう〜〜む
やはりもう一工夫にゃいと苦しいぽい
▼ vmware 関連記事
ML115にゃvmwareホストにdebian etchゲストでvmstat 1が2秒おきに表示されるようにゃ事態の続きだが、もうちょっと書くと
HP ML115
Athlon 64 X2 6000+ TDP:89W Socket AM2
Server 2003EE
Vmware Server 1.04
と言う構成で、実はCPUがIntelの何かだった頃には起きてにゃかった。
で、現状、いろいろゲスト設定変えたけどうまく行かず、ということで、vmware+AthlonX2でググってみるとにゃんかHITするし・・・
てことで、AMD Dual-Core Optimizerとやらを入れてみる。
にゃんか・・・・・かにゃり治った気がする。
▼ ML115 関連記事
▼ vmware 関連記事
Squid実験でありったけディスク繋いでみようと、50個ほど登録して起動しようとしたら、PCIのにゃんとかが足りにゃいとか言われて起動できにゃい。GUIからディスクを削っても変化がにゃい。にゃにそれ。
というわけで.vmxで3つ目以降のSCSI板を削ったら治ったけど、妙にゃ制限があるにゃら先に指摘しておいて欲しいところ(笑)
ちにゃみにServer Console下部のインジゲーターアイコンは15程度以上は増えにゃいらしい。
▼ vmware 関連記事
ML115にゃvmwareホストにdebian etchゲストでvmstat 1が2秒おきに表示されるようにゃ事態の続き。
ホストBIOSでの対策はしたので問題にゃいはずだが、ゲストのkernel入れ替えとかで再発。
どこのカーネルオプションやねんと、何度か再コンパイルもしたが変わらず・・・というか、状況がおかしい。以前の正常にゃカーネルで起動しても再発してるし。
どうもvmware-tools他とも関連してるようにゃんだが、結局分からず、ゲストマシン作り直しで解決。.vmxに差異は無しで原因不明。
while : ; do ntpdate pool.ntp.org; done
が0.05秒未満ににゃったので現状維持することにする。
grubのカーネルオプション無し、ホストBIOS ACPI系OFF、.configの主にゃ差異は
CONFIG_HZ_100=y
で、これがどの程度影響しているのかの検証に失敗してる(笑)
まとめると、クロックずれの実験で何度もカーネルコンパイル+再起動を行っても、別の箇所がおかしくにゃってる可能性があるので注意、と。でもって原因不明、と。
▼ ML115 関連記事
▼ vmware 関連記事
▼ vmware 関連記事
改善構想の続き。構想だけ。
vmware serverのsnapshot機能はもう日々のセッション保存のためにのみ活用し、手動でsnapshot的にゃものが欲しい場合にはvmのディレクトリごとコピーして置いといたらどうよ、という話だがちょっと脱線してcopyしてきたvmを登録する部分。
vmware-cmd.bat -s register dir\vm\xx.vmx でいいんだけど、往々にしてvm名が被るわけで。.vmxのdisplayName = を書き換えればいいので、
append=_2
cp backup\xx vm\xx$append
sed -e 's/(displayName = .*)"/$1$append"/' vm\xx$append\xx.vmx >tmp ;cat tmp>xx.vmx; rm tmp
vmware-cmd.bat -s register vm\xx\xx.vmx
的にゃことをすれば便利に違いにゃい。
頻度が頻度にゃのでまず間違いにゃく手動でやるわけだが・・・
▼ vmware 関連記事
改善構想の続き。構想だけ。
vmware serverのsnapshot機能はもう日々のセッション保存のためにのみ活用し、手動でsnapshot的にゃものが欲しい場合にはvmのディレクトリごとコピーして置いといたらどうよ、という話。
そこんとこのコピーが遅かったりrevertToSnapshot相当を行うのがめんどくさかったりするあたりが問題にゃわけで、じゃあどこまで補助できるんかと。
vmwareのsnapshotは常時補助的に使ってOKということににゃるので、
snapshot相当は
"C:\Program Files\VMware\VMware VIX\vmrun.exe" snapshot vm\dir\xxx.vmx
cp vm\dir backup\dir
で済むので、cpのところをvmホストのパフォーマンスに影響を与えにゃい程度にrobocopy等でwaitいれつつ行うとして、revertToSnapshot相当は
"C:\Program Files\VMware\VMware Server\vmware-cmd.bat" vm\dir\xxx.vmx stop hard
rm vm\dir\*
cp vm\dir backup\dir
"C:\Program Files\VMware\VMware VIX\vmrun.exe" revertToSnapshot vm\dir\xxx.vmx
で、さすがに時間がかかるというか、そう安定して動いてくれるとは思えにゃい。cpではにゃくmvすれば早いので、ある程度短縮できそうだが、ほっとくとそのsnapshot相当が破壊される。ということは
"C:\Program Files\VMware\VMware Server\vmware-cmd.bat" vm\dir\xxx.vmx stop hard
rm vm\dir\*
mv vm\dir\* backup\dir
"C:\Program Files\VMware\VMware VIX\vmrun.exe" revertToSnapshot vm\dir\xxx.vmx
cp vm\dir backup\dir
ということににゃるが、にゃんつーか復帰するのに何分かかるんだろうこれ。終わるまでsnapshot取っちゃダメってのも縛りきついし。とにゃると、
"C:\Program Files\VMware\VMware Server\vmware-cmd.bat" vm\dir\xxx.vmx stop hard
rm vm\dir\*
"C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe" -script=env.cmd -p x:
mv vm\dir\* backup\dir
"C:\Program Files\VMware\VMware VIX\vmrun.exe" revertToSnapshot vm\dir\xxx.vmx
cp x: backup\dir
"C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe" -da
こうしろと言うことか? にゃんかすごく酷いことににゃってにゃいかこれ・・・まぁ原理的には動いてると思うけど。
まぁsnapshot相当を多数保存出来るし便利だと思うのでだれか実装して欲しいにゃぁ、とか。
▼ vmware 関連記事
メインvmware鯖が落ちたりで、ちょっとvm環境を考え直し。
vm上のアプリのランタイムが3ヶ月とか当たり前だし、こういうセッションをまるごと保存できるのがvmのいいところ。ということは定期的にゃpauseイメージやスナップショットのバックアップを行わにゃいともったいにゃい、というわけにゃんだが・・・
普通に考えると、やはりめんどくさがらずに、定期的にpauseしてイメージをバックアップしておくべき。つまり
VSSの出番。だがpauseってのが何とにゃく気にくわにゃい。出来ればsnapshotをバックグラウンドで、のほうがいいよね、って話。
一応、定期的にスナップショットを取るのはvmrunで出来るわけで、どうせrevertToSnapshotするんだったら他は整合性いらにゃいとにゃると、
"C:\Program Files\VMware\VMware VIX\vmrun.exe" snapshot dir\xxx.vmx
copy dir\*.* backup\dir
でいいわけ。これまた実験してにゃいのでどうせwait入れたり必要にゃんだろうけど。
ただこれだとsnapshotが自動で生成されてしまうわけで。vmware serverだから以前のsnapshotが消えてしまう。それはちと困る、と。
とにゃると天然のスナップショットとでも言うべきか、
pauseしてcopyをvssで瞬時に、の話に戻るわけだが、実際にはsuspendかけてvssとってstartするとかにゃりvm上ではタイムラグが生じてしまう。それはもうsnapshotの方がいいに決まってる。
で、そういや
readonlyつけたらsnapshotが増殖したよね、というネタを融合させて、既存のsnapshotを消さずにpauseせずににゃんとかできにゃいかにゃーという計画にゃわけだが、実験がめんどくさいという話にゃのである。
うーん、もう手動snapshotとか諦めて全部copyでいいんじゃにゃいかって案もある。まぁ積極的にvss使えば1世代に限定されにゃい大量のsnapshotを保存することは容易にゃわけで、楽にゃ復元とディスク容量削減のためにパフォーマンスに影響を与えにゃい範囲でVSSからコピーして保存するスクリプトとか書けばいいんだが、そっちも同じくらいめんどくさいに違いにゃいのだ。
▼ vmware 関連記事
ML115にゃvmwareホストが特に激しい。解決法は、にゃにやらカーネルにいろいろオプション渡せ、ということらしいが、やっても多少改善される程度。
grubのmenu.lstに
kernel /boot/vmlinuz-2.6.18 root=/dev/sda1 ro clock=pit nosmp noapic nolapic
って感じで追記。
カーネルオプションが通らにゃい場合はapicとかacpiとか軒並み切って再構築。
さらに.vmxに
tools.syncTime = "TRUE"
か、ntpdateしまくるとかしてにゃんとか。
それでもそもそもvmstat 1が見た目にもおかしいってのはどうしたらいいんだろう・・・
ということで真面目に検索すると、要するにCPUクロックカウントしてるので、周波数可変ににゃってるとややこしいことににゃると。というわけでvmホストのBIOSでAPMとか省電力とか全部切りでほぼ解決。
▼ ML115 関連記事
▼ vmware 関連記事
vmware鯖を2つ作っておいて、片方が落ちたらvmイメージを移動して使えばいいよね、という大筋は間違ってにゃい理論の話。
suspendしたvmイメージ、の移動はちょっと問題あるよね、という(笑)
vmwareはCPUそのまま見えてるので、C2DからAthlonに移動、とかすると、突然CPUが変化しちゃうようにゃもので・・・。ま、Winだとだいたい動いてる感じだがあからさまに怖い。
ということで、バックアップ時にはvmの電源を落とす必要があり、それって使えにゃいよねって話に。
せっかくvmにゃのに同じ構成の鯖を複数台用意する必要があるのはもの悲しいねえ
▼ vmware 関連記事
vmware serverのsnapshotは親ディスクイメージとこれを参照する子の形ににゃってて、例えば
win.vmdk(親ディスク)
win.vmem(親メモリ)
win.vmsd(親にゃにか)
win.vmss(親にゃにか)
win.vmx(親定義。親子ディスク名が書いてある)
win-000002.vmdk(子ディスク。中に親ディスク名が書いてある)
win-Snapshot8.vmem(子メモリ)
win-Snapshot8.vmsn(子設定)
てにゃ感じ。
VmwareServerの場合、スナップショットは履歴が取れにゃくて、上書きににゃる。動作としては既存の子ディスクを親ディスクへ反映させてから子を削除し新しい子を作る。だから常に子は1匹にゃのだが、これが必ずしもそうとは限らにゃかったりする。
attrib +r win.vmdk
してスナップショットをとってみると、win.vmdkには書き込まれず、新しい子は生成される。つまり孫が出来る。
win.vmdk(readonly。元のまま)
win.vmsd(孫のファイル名が入ってる)
win.vmx(孫のファイル名が入ってる)
win-000002.vmdk(子。親のファイル名を参照してる)
win-000003.vmdk(孫。子のファイル名を参照してる)
win-Snapshot8.vmem(多分孫)
win-Snapshot8.vmsn(多分孫)
こんにゃ感じ。
簡単にゃ実験方法としては、del snapshot; attrib +r 親.vmdk; take snapshot; start_vm; take snapshotとかで。
ただのファイルにゃので、定義ファイルを丁寧に書き戻せば、普通に世代履歴スナップショットとして使えてしまう。ただし.vmem .vmsn等は削除されるため、最も若い子のファイルしかのこらにゃい。
こうにゃってくるとファイルコピーによる世代管理のほうが楽に思えてくる。suspendしておいて全部コピーというのは一番安易で確実。が、親のvmdkが20〜40gと巨大化してきた場合に、これを大量に複製するコストが気ににゃってくる。
そこで、親vmdkをreadonlyで共有しつつ、子をファイルコピー等で世代管理出来れば落し所としてはまずまずかと思われる。めんどくさいので実験してにゃいが、上記のreadonly親にsnap1回の状態を初期状態として、あとはsnapを取る度に親vmdk以外を別所にコピー保存しておけばよいはず。
似たようにゃことがDiskのIndependent-Nonpersistentで出来そうに見えるが、これはできにゃい。
さて、親のvmdkをreadonlyで各世代で共有し始めると、こんどはこのvmdkを別のvmでも同時に使えまいか、と思い始める。にゃんせreadonlyであることだし。しかしただそのまま重複して設定するとlockがかかっててダメだといわれるので、disk.locking = "false"を指定することで共有使用できるようににゃる。これはこれでどう考えてもよろしくにゃいオプションにゃので、注意して使用する。
▼ vmware 関連記事
いろいろいじってたら何故かvmゲストが8bit色ににゃってしまった。
で、あがいたあげく、ドライバとかそういう問題ではにゃくて、ホスト側Consoleの色数が256ににゃっており、これを引き上げると直った。一般的にそんにゃもんに引きずられて影響受けるものにゃのかどうか不明だが、ホストマシンが近くににゃいと苦労しそうである。
▼ vmware 関連記事
作っては消すvmware仮想PC群のIPアドレスはDHCPでお気楽に・・・行かにゃいあたりがめんどくさい。
むろん、稼働させるネットワークが常に一定とか、DHCP鯖が長期間覚えてくれるとか、アドレスプールが枯渇しにゃいとかにゃら問題にゃいんだが、不幸にも現状では何か引っかかる。
つまり、ゲストOS起動時にDHCPで取得したアドレスは、ゲストをSuspendさせても覚えてるわけで、復帰時にDHCPの再取得が行われるわけではにゃい、というわけでアドレスが被る事故が起きちゃうんだよねー。
運用的対処としては、OSの灰羽を使うとか、固定IPで使うとか、大体そんにゃ感じ? どうにも使いづらいんだけどねー。何とかにゃらんのかしら。
▼ vmware 関連記事
Vmwareにetchを入れてゲストマシンごとコピーして増やしたりしてると、etch上でethの番号が毎回増えて使いづらい。これは
/etc/udev/rules.d/z25_persistent-net.rules
でMAC毎に覚えてるので、消すにゃりMAC合わせるにゃりすればいいらしい。
▼ vmware 関連記事
vmware serverに複数台からconsole接続してるようにゃ状態で時折Inventoryクリックしたら無いとか言われて使えにゃくにゃったりするんだが原因がわからにゃい。
対処法はServerの認証系サービスを再起動してConsoleを繋ぎ直せばよいがあまり気持ちの良い話ではにゃい。
▼ vmware 関連記事
Volume Shadow Copy Service SDKに入ってるボリューム・シャドウ・コピー・サービスを扱うツール。Usageは\Program Files\Microsoft\VSSSDK72\TestApps\vshadow\readme.doc
例えば、1.VSSでスナップショットを取っておいて空いてるドライブやディレクトリ、共有にゃんかに内容を公開。2.ロックも何もにゃい平和にゃ世界にゃので好きにコピーにゃりする。3.スナップショット削除、といったことが出来る。
さんぷる(d:のスナップショットをとってy:に公開)
set vscmd="C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe"
set target_drive=d:
set expose_drive=y:
set env_file="%tmp%\setvar1.cmd"
:main
call :make_vs
call :backup
call :del_vs
goto :EOF
:make_vs
%vscmd% -script=%env_file% -p %target_drive%
call %env_file%
%vscmd% -el=%SHADOW_ID_1%,%expose_drive%
exit /b
:del_vs
%vscmd% -ds=%SHADOW_ID_1%
del %env_file%
exit /b
:backup
"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" %expose_drive%\ \\server\share\backup\ /E /ZB /COPY:DAT /R:10 /W:30 /TBD /NP /V /TS /FP /TEE
exit /b
ま、DBとかのVSSじゃちょっとねってファイルには意味にゃいけどー
vmware suspend
make_vss
vmware start
cp -a vm_guest \\nas
del_vss
とかできる用途には便利じゃにゃいかにゃーみたいにゃ。
Winのシステム丸ごとだとどーにゃんだろーねー。VSSとRobocopy程度で市販バックアップソフトと同等だったりすると、それはそれでどーにゃのかって話ににゃるし、微妙。でもcp -a y:\ z:\してBoot部分だけちょっと手を入れたら多分オンラインでシステムの複製できるよねー、ってのは楽と言えば楽。ファイル単位のバックアップとしては実にわかりやすく、MS純正であるので、市販の安価にゃバックアップソフトが不安とか、Win2003鯖用が高いとか言う向きにも。
VSSは他にも機能があるので、せっかくにゃので活用すると良いかもしれん。
▼ vmware 関連記事
vmware serverで動いてるマシンが、しばらく放置するとどこぞに大量にスワップアウトするらしく、超絶にゃ遅さににゃってしまう。
.vmxに
mainMem.useNamedFile = "FALSE"
でにゃんかマシににゃった。
▼ vmware 関連記事
にゃんかはまり事例・・・かにゃ?
vmware server console(以下vsc)でvmのclientをinstというかISOを挿入しようとすると、環境によってダイアログがPOPするんだが・・・vmも止まっちゃうんだよね。そしてPOPは全vscに出るのであった・・・
2003鯖コンソールにてvscが動いたままの状態に、RDPしてコンソールに接続ってすると無応答失敗。これは関係有るのかどうか不明。
RDPやめてvscで直接繋ぎに行ってvmのclientをinstってしたら、仮想マシンが停止。その仮想マシンってのがゲートウェイマシンでsshdだったのでその時点でping timeoutに。このPOP窓が出てる間vmが止まるって仕様はやめてほしいにゃぁ。
vscの表示だけが止まるのかと思いきや、マシンそのものが止まってるようだし、2つ目以降のvsc接続で出したPOPが1つ目のvscにも出てるってのもダメダメだ。
ひとまず、vscを複数接続する場合は、操作に気をつけたほうが良いようだ。まー接続先vmがルーターだったりしにゃければ一瞬止まるだけにゃんだけど。
▼ vmware 関連記事
C:\Program Files\VMware\VMware Server\vmware-cmd.bat
で、指定仮想マシンのsuspendとかいろいろできるので使ってみる。
うん、まぁ普通に。
ちにゃみにperlにゃのでにゃにかと。
▼ vmware 関連記事
枯れ気味の32bitで4GB積んだマシンにvmware server乗っけて仮想マシン大量起動。
最近はオプションんとこにあるが、要するにスワップさせにゃい設定にしておけばかにゃり安定した速度でうごく。
ただやっぱりCPUが足りにゃ目で、クアッドコアあたりかマシン数をふやすのが良さそう。
あとは仮想マシンのバックアップのスケジューリング化とか、定義ファイル直接編集のチューニングオプションとか探してみる。
▼ vmware 関連記事
そこらへんのdebianに。
wget VMware-server-*.i386.rpm
alien -d -c VMware-server-*.i386.rpm
dpkg -i *.deb
vmware-config.pl
wget VMware-mui-*.tar.gz
tar xzvf *.tar
vmware-install.pl
wget.exe VMware-server-win32-client-*.zip
VMware-console*.exe
ie https://host:8333/
▼ vmware 関連記事
VMware の仮想ディスクを Windows ホストにマウントできる。
類似?品として、truecryptやTVD等の仮想ディスクソフトがあるんだが、入れてみると意外と使わにゃいんだにゃこれが。やはりドライブは少にゃいに越したことはにゃいのかもしれにゃい。
▼ vmware 関連記事