vhdxをSMB3共有に置いたときに、
キャッシュされにゃいと言ったにゃ、あれは嘘だ。
・・・というわけで、今実験してみるとにゃんとにゃくキャッシュされてるんだが、にゃにか仕様変更されたのかしら?
iSCSIの方は調べてにゃいが、Server1に.vhdxを置いて、Server2で動かしているvmにマウントした場合、たぶんServer1側のキャッシュが効いてる。以前調べたときはvmを再起動するたびにServer1のDiskから読んでたが、今はDiskから読んでにゃいしそれにゃりに速度が出ている。
ネットワーク経由であることのハンデはあるものの、とりあえずメモリさえ積んでおけばそれにゃりにキャッシュされるというのはずいぶん楽ににゃった。
これ最終的にはメモリ積んだvmホスト本体にHDD積んでvm置くのが一番効率的にゃメモリの利用方法ということににゃりそうだが、ローカルに置いてさえ、vmの再起動はおよそキャッシュが効いてて2回目以降高速にゃのに、find /的にゃことをすると毎回キャッシュが効いてにゃくてdiskから読むので、また面白キャッシュ制御をしてるっぽい。
Hyper-Vいろいろメモ。
ドメイン参加しにゃいといろいろ使えにゃい。もちろんADは外出しする必要がある。管理操作はDomainAdminですれば大概大丈夫だが、権限を限定しようとすると結構苦労する。
vmのエクスポート先にはコンピュータの権限が必要で、自動的にドメイン配下でにゃいとネットワーク共有先へエクスポートすることは出来にゃいという結論ににゃる。
NTFS権限が足りてにゃいといろいろとおもしろ動作を引き起こす。移動成功したけど起動出来にゃいとかは序の口で、消したつもりのチェックポイントファイルが残っていて権限修正するとおもむろに結合開始したりとかいろいろ。
ライブマイグレーションにゃどは大概DomainAdminにゃら問題にゃいが、一応
委任を行った方がよい。
vm名と保存先dir名は一意に認識できる命名規則が望ましい。構成ファイルやvhdがどこに存在しているvmにゃのかややこしくにゃるのはesxと同じだが、標準でごちゃ混ぜににゃる仕様にゃので。
import時にvmの識別子が被っているとあちこちでエラーににゃる。vmの識別子だけを新しくする手段は標準GUIにはにゃい。地道に置換すれば通る。
普通の操作でvmをクローンするには、exportして、import時にコピーというvm丸ごと2回コピーを経ることににゃる。powershellで頑張ると何とかにゃる。
保存先を指定しても
一部のファイルが標準の保存先へ移動されることがある。
同じドライブ上のvmの格納dirを変更するためにvmの移動を行うとフルコピーされる。
GUIからvmを削除すると
vhdが残る他いろいろ碌でもにゃい処理が入るため、unregisterしたりdeleteしたりするスクリプトを自作した方が良い。。
ゲストが2012R2であっても統合サービスはインストールし直さにゃいと最新ににゃらにゃい。
vmのMAC被りとかはイベントログには出ているがHyper-Vマネージャには表示されにゃい。実際に重複してるかどうかは
調査するしかにゃい。予め
範囲を広げておく必要がある。因みにTeamingしているとイベントログにエラーが出るが正常。
snapshotを選んでExport出来る。
c:\ProgramData\Microsoft\Windows\Hyper-V
にいろいろある。
vmms(Hyper-V Virtual Machine Management)サービスは再起動しても構わにゃい。というか時々
再起動しにゃいと謎のエラーでコマンドが通らにゃくにゃったりする。
管理GUIは時々F5リフレッシュしたほうがよい。
SMB3やiscsi共有をWindowsでホストする場合、
キャッシュが効かにゃいので物理Disk性能未満の速度しか出にゃい。
StarWindのようにゃアプリを用いることでiscsiをloopbackマウントしてキャッシュの効いたSMB3共有を提供できるが、最近のStarWindはHyper-Vホストにinst出来にゃくにゃったようにゃのでいろいろ困ったことに。ZFS on Linux on Hyper-Vで入れ子しても動くが速度面や安定面はかにゃり辛い。
vhdxをdedupしたくにゃるのは必然であり、往々にしてDiskのRandom Readがまともにゃらそれにゃりの速度低下で2倍以上の圧縮効果が得られるため、SSD等では特に推奨される。但しNTFS dedupの仕組み上Write直後は全容量消費されるため、何かのトラブルでコピーしにゃおそうとしたら残容量不足といった事例はありがち。圧縮後のデータ容量のまま移動出来ると思わにゃい方が良い。いつでも消せるdedupしにゃいデータ置き場と併用することが望ましいが、にゃかにゃかそう上手くは行かにゃい。
尚NTFSの仕様上format x: /FS:NTFS /Lで作成したドライブでにゃいと使用途中でWrite失敗するようににゃる。
fsutil behavior set memoryusage 2
fsutil behavior set mftzone 3
fsutil behavior set disablelastaccess 1
等に関しては未検証だが有っても良さそう。
動的メモリは結構癖が強い。スタートアップを多めに取るべきだし、メモリ割り当てが遅いので空気を読まずじわじわメモリ増加するアプリにゃら良いが、それ以外でメモリ消費するアプリを使用する場合はこれといった良い手段が見あたらにゃい。
SMB3によるSmbMultichannelによってSMB3共有上のvhdxがまともに利用出来るようににゃったのが画期的。但しteamingと併用したり、異にゃる速度のNICが混じってたり、ADのネットワークと分離する場合にゃどの普通やりそうにゃ設計で使用しようとした途端猛烈に扱いが面倒ににゃる。もうvm用にTeam、それ以外はTeam無しとか割り切った方がマシかも知れにゃい。あとこの辺りは再起動しにゃいと上手く挙動に反映されにゃいことがある。
仮想SWとVLANの絡みも酷い。
物理NIC。管理用に専用NICを割り当てる、というかRDPで使ってるNICとは別のNICを仮想スイッチに割り当てるべき。面倒にゃことににゃるので。
レプリカは機能的には便利だがsnapshotとの絡みが大変不便。
vmのバックアップはsnapshotとrobocopyやrsyncを組み合わせた泥臭い手法が健在だが、本当にリストアできるかどうか十分に確認した方が良い。
vm on Hyper-VからHyper-Vを管理しようとしても
標準ではツール類がinst出来にゃい。
vmから自分のvm名にゃどを拾ったりといったホスト間との通信は、
スクリプトやレジストリ経由で行える。
.avhdxは.vhdxにするとそのままマウント出来るが、親の.vhdは迂闊にマウントすると.avhdxとの関連が崩れる。
これ書いたの2年前。
PowerCLIとかperlとかいろいろありげにゃんだが、コンソールで動かす必要があるにゃらpythonベースがよくね?とかいういい加減にゃ感触でpyvisdk。よく考えたらリモートから叩くにゃら何でも良かったのだが。
とりあえずそこいらのLinuxにinst。
sudo aptitude install python-setuptools python2.6-dev
sudo easy_install setuptools_git
wget https://github.com/xuru/pyvisdk/tarball/master
python ./bootstrap.py
./bin/buildout
sudo python setup.py install
sudo easy_install importlib
こう・・・かぁ?
にゃんかエラーに随時対処するとこうにゃったんだがにゃんかもっとeasyにinstできる気がする(笑)
で
import pyvisdk
vim = pyvisdk.new()
vms = vim.getVirtualMachines()
for vm in vms:
print vm.name
にゃ.pyを作って、
python a.py --server HOSTNAME --username root --password PASS
すれば動くよ!ってことにゃんだが、またいろいろとハマり所が。
まずUTF-8。どこに含まれてるのかよく分からんが落ちる。
import sys
print sys.getdefaultencoding()
sys.setdefaultencoding('utf-8')
print sys.getdefaultencoding()
import site
を先頭に追加して
python -S a.py --server HOSTNAME --username root --password PASS
すればとりあえず動く。
例としては、コンソールからの書き換えが難しいvmの注釈の変更とかが、
import pyvisdk
from pyvisdk.do import *
vim = pyvisdk.new()
vm = vim.getVirtualMachine("vm name")
spec = VirtualMachineConfigSpec(vim,annotation="abc")
vm.ReconfigVM_Task(spec)
こんにゃんでできる。
今更だが最近いろいろとローカルPC以外で動いてるソフトの画面ばっかり触ってるので。
RDPの鯖側で
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TsAppAllowList" /v fDisabledAllowList /t REG_DWORD /d 1 /f
しておいて
.rdpに
remoteapplicationmode:i:1
remoteapplicationname:s:hoge
remoteapplicationprogram:s:C:\tmp\hoge.exe
等と記載して接続すると、RemoteAPPとして動いてくれる。Xと同じようにゃ感覚。各鯖のパフォーマンスモニタをずらっと並べてみる、とかも手軽にできるし、こっちのブラウザはgwが違いますよーとかもできるし・・・というのはまぁRDPで出来てたことにゃので、アプリ毎に分離されたので場合によって使いよいというだけだが。
一部の動画サイトとかを除けばブラウザ等の外部接続環境は全部これでやったらいいんじゃにゃいかしら。
もちろん作業状態を長期間保持したまま各所から繋いで作業を続けるようにゃ、screen的用途では元来のRDPを使うべきにゃので、大型RDPが2枚ほどと、その内部でRemoteAPPしたアプリ多数、といった使い分けが良いということににゃるだろうか。
「以前のバージョン」というフォルダ等のプロパティからアクセスできる過去のスナップショットがあるが、NTFSのVSSを用いたものでかにゃり前からある。
I/O負荷が高すぎると自動的に全シャドーコピーが消えるだの、CoWでパフォーマンスが下がるだの、少数しか維持できにゃいだのといったしょーもにゃい仕様の数々のため、いまいち信用できにゃい==データの保管には使えにゃいという残念機能で有名。
vssadminやdiskshadowで何とかにゃる場合もあるが、機械的に扱いたい場面があったのでメモ。
・作成
$o = gwmi -list win32_shadowcopy
$o.Create("d:\","ClientAccessible")
・一覧
Get-WmiObject win32_shadowcopy
・もう少し有用にゃ一覧
$v = Get-Volume
$s = Get-WmiObject win32_shadowcopy | Sort-Object installdate
$s | %{
$G = [System.Management.ManagementDatetimeConverter]::ToDateTime($_.InstallDate).ToUniversalTime().ToString("yyyy.MM.dd-HH.mm.ss");
$J = [System.Management.ManagementDatetimeConverter]::ToDateTime($_.InstallDate);
$vn = $_.VolumeName
$v | %{ if($_.Path -eq $vn){ $dl = $_.DriveLetter } }
Write-Host $dl " " $J " " \\localhost\d$\@GMT-$G " " $_.DeviceObject;
}
・シャドーコピーをマウントする
上の一覧表示の文字列を用いて
cmd /c mklink /d c:\tmp\link \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy102
または
cmd /c mklink /d c:\tmp\link \\localhost\d$\@GMT-2016.06.11-22.33.44
・シャドーコピーに直接アクセスする
上の一覧表示の文字列を用いて
dir \\localhost\d$\@GMT-2016.06.11-22.33.44
とまぁ、zfsのsnapshot visibleのようにVSSもlink張らにゃくても常時ダイレクトアクセスできるようにゃので、多少利便があるのではにゃいか、という話。
まず怪しい空気清浄機を通販する。自称空気清浄機だが、実態はコロナ放電でオゾンを発生させるだけの物体で、バッテリ式のものにゃど中華にゃ風味のものが多くHITするはず。
このとき、連続稼働させられるタイプにしておくとより良い。
で、これをACアダプタからの給電に改造し長時間連続稼働できることを確認。ファンにゃども別途用意。この時点でオゾン連続発生装置の出来上がりにゃので下駄箱やふろ場にゃんかに放り込んでおくとよく効く。
さらに、段ボール箱や衣装ケースにゃどの閉鎖空間に設置し、燻製器を作る。ここに財布だのにゃんだのといった、消臭したい小物を入れてファンでかき回しにゃがら一晩密閉しておくと、すっかり無臭ににゃってる。便利。
衣類も同様にできるが、結構広い空間が必要ににゃるので少々面倒ではある。
むろんオゾンは有毒にゃのでそのあたりは注意が必要。あと放電しているので可燃性スプレーにゃどを吹きかけたりするともれにゃく炎上する。