サービスマネジメント出身のSEがインフラ部門に回されて、自分の見地の狭さに苦しむブログ
メモ
セマフォとは
同時に動いているプロセスの同期や割り込み処理を行う機構。
ハンドルとは
Windowsのオブジェクの開かれてるインスタンスを表す機構。例えばファイルの中のどのインスタンスが使われているがといった情報をハンドルが持っている。
iPhoneからの投稿
ESXiのCPU、メモリの考え方についてのメモ。
CPUから仮想記憶域にデータをロードの処理を行う。
仮想記憶域ではデータを連続したデータにソートされているが、実際にデータがどこに
配置されているか分からないので、DATとページテーブルを参照し、仮想記憶域の実データ
がメモリ上 orHDDのどこにあるか確認する。
まずDATでメモリ上からデータをロードする。
DATで見つからなかったデータは、今度はページテーブルを参照し、HDD上からメモリへデータ
をロードする。
CPU→仮想記憶域-+→DAT→メモリ
|
+→ページテーブル→HDD
(メモリにデータがない場合、HDDを参照する)
DAT:仮想記憶域のアドレスと物理メモリのアドレスマッピング。主記憶域上にある。
ページテーブル:仮想記憶域上アドレスとHDDのアドレスマッピング。主記憶域上にある。
ページング:仮想記憶域の物理メモリ上になかったデータのページフォルトの判定。
ページイン、ページアウトを行う。
CPUは命令を処理する際に仮想記憶域からデータをロードする。
しかし、CPUのほうが処理性能が速いため、データをロードしている間にCPUで待ち時間が
発生する。その待ち時間を効率化するため、CPU上にページテーブルのコピーをTLB上に
持っておき、ページインの時間を短縮させている。
物理CPUに対して、仮想マシンに割り当てるCPUをvCPUという。vCPUはオーバーコミット
が可能。vCPUのオーバーコミット時はスケジューリング機能で物理CPUの所有権を順番に
vCPUに割り当てる。
1つの仮想マシンに複数のvCPUを割り当てる、かつCPUのオーバーコミット時はskewが発生する。
複数割り当てられたvCPUのうち1つでもCPUの所有権が取れない場合、すべてのCPUが所有権を
持つまで、vCPUは動作しない。ただし、ESX4i以降はCPUの所有権が取れなくてもOSのCPUのskew
の閾値を超えない範囲でvCPUを動作するようになった。
通常複数のCPUが割り当てられたマシンは、CPU間の時間は一致しなければ処理の不一致が
発生する。そのため、必ず複数あるCPUは同時に動かす必要がある。しかし、OSではある程度
CPU間の時刻の不一致を許可している。その不一致の範囲を利用して、仮想OSにCPU使用権が
割り当てられない時の処理停止を回避している。
たとえば物理サーバに4つCPUがあるとする。
その上に仮想サーバを3台構築し、それぞれの仮想サーバにvCPUを2つずつ割り当てる。
CPU=4個
vCPU=2×3個
つまりvCPUが物理CPUより2個多く仮想上に作られることになる。
その時の物理CPUは順番にvCPUに使用権を割り当てるが、残り2つのvCPUは待機となる。
具体的には以下のようにCPUの使用権が順番に割り当てられて行く。
スケジュール1回目
物理CPU: CPU1 CPU2 CPU3 CPU4 stop stop
↓ ↓ ↓ ↓ ↓ ↓
仮想CPU:vCPU1―+―vCPU2 vCPU3―+―vCPU4 vCPU5―+―vCPU6
↓ ↓ ↓
仮想OS: 仮想OS1(実行中) 仮想OS2(実行中) 仮想OS3(停止中)
スケジュール2回目
物理CPU: stop CPU1 CPU2 CPU3 CPU4 stop
↓ ↓ ↓ ↓ ↓ ↓
仮想CPU:vCPU1―+―vCPU2 vCPU3―+―vCPU4 vCPU5―+―vCPU6
↓ ↓ ↓
仮想OS: 仮想OS1(実行中) 仮想OS2(実行中) 仮想OS3(実行中)
スケジュール3回目
物理CPU: stop stop CPU1 CPU2 CPU3 CPU4
↓ ↓ ↓ ↓ ↓ ↓
仮想CPU:vCPU1―+―vCPU2 vCPU3―+―vCPU4 vCPU5―+―vCPU6
↓ ↓ ↓
仮想OS: 仮想OS1(停止中) 仮想OS2(実行中) 仮想OS3(実行中)
仮想化を実装した場合、仮想OSで利用するカーネル領域と、ESXで利用カーネル領域が
2つ存在する。仮想OSが直接物理CPUやメモリに変更してしまうと、ほかの仮想OSやESXが
処理を進めることができない。そのためIntel VT-xやAMD-VのCPUでは、仮想OSとESXの処理
を割り込みでマルチで処理できるようにしている。
複数の仮想OSに物理メモリを割り当てるためには、VMMで仮想のメモリを作成して割り当てる
必要がある。この場合、仮想OS上の仮想記憶域のページテーブルと、ESX上の仮想記憶域の
ページテーブルを物理メモリ上で2重管理になり非効率となる。そのためCPU側でテーブルを
持たせることによってメモリ処理を効率化している。
赤本読んでて気になったことをまとめとく。
他にもあれば後で追記しておく。
1.記憶域プールにディスクアサインする際、ディスクサイズや回転数はなんでも良いのか?
→何でも良い。
ただし、どのディスクに書き込まれるかはOSご判定するため、ライト性能にばらつきが出る。
ディスク性能は均等なものが好ましい。
データブロックは100MB単位で分割されて物理ディスクに書き込まれる。Get-VirtualDiskコマンドでディスクの物理レイアウトを確認できる。
さらに、SSDをプールにアサインした場合、記憶域階層を使って、SSDをライトキャッシュとして利用できる。
ディスクがSSDかHDDかはOSが自動判別するが、判別に失敗することもあるのでその時は
Set-PhysicalDisk -FriendlyName Pディスク名 -MediaType SSD (SSDとして指定)
コマンドで変更可能。
2.記憶域プールのディスク拡張はオンラインで出来るのか?
3.記憶域プールにディスクアサインする際、ディスクの状態はオンラインなのか?初期化は必要か?
iPhoneからの投稿
他にもあれば後で追記しておく。
1.記憶域プールにディスクアサインする際、ディスクサイズや回転数はなんでも良いのか?
→何でも良い。
ただし、どのディスクに書き込まれるかはOSご判定するため、ライト性能にばらつきが出る。
ディスク性能は均等なものが好ましい。
データブロックは100MB単位で分割されて物理ディスクに書き込まれる。Get-VirtualDiskコマンドでディスクの物理レイアウトを確認できる。
さらに、SSDをプールにアサインした場合、記憶域階層を使って、SSDをライトキャッシュとして利用できる。
ディスクがSSDかHDDかはOSが自動判別するが、判別に失敗することもあるのでその時は
Set-PhysicalDisk -FriendlyName Pディスク名 -MediaType SSD (SSDとして指定)
コマンドで変更可能。
2.記憶域プールのディスク拡張はオンラインで出来るのか?
3.記憶域プールにディスクアサインする際、ディスクの状態はオンラインなのか?初期化は必要か?
iPhoneからの投稿
特に2008R2と変わらないけれど、忘れがちなのでメモっておく。
1.全てのNICのIP、サブネットを指定しておく
2.NICのDNSを自身にしておく
3..NET4.5をインストールしておく
久しぶりにADをインストールしたら、DNSの設定が漏れていて失敗したので
記念にメモ。。。
1.全てのNICのIP、サブネットを指定しておく
2.NICのDNSを自身にしておく
3..NET4.5をインストールしておく
久しぶりにADをインストールしたら、DNSの設定が漏れていて失敗したので
記念にメモ。。。
VMplayerのnat設定をすぐに忘れてしまうので、メモしておく。
【ホスト側(物理NIC)の設定】
1.アクティブなNICの[プロパティ]-[共有タブ]の「ネットワークのほかのユーザに、
このコンピュータのインターネット接続を通しての接続を許可する」にチェック
を入れる。
2.同設定の「ホームネットワーク接続」でVMnet8を選択する
3.2.を設定すると仮想NICのVMnet8に自動的に割り振られるIPアドレス(ゲストOSのG/W)を
確認する
4.vmnetcfgのVMnet8の情報がNATになっていることを確認する
5.vmnetcfgのVMnet8の情報のNAT設定から、G/Wのアドレスが3.で確認したものと一致
していることを確認する
6.vmnetcfgのVMnet8の情報の「ローカルDHCPサービスを使用してIPアドレスをVMに配布する」
のチェックが外れていることを確認する
【ゲストOSのNIC設定】
1.IPアドレスのG/Wを3.と5.で設定したものを一致していることを確認する
2.Windowsの場合、ファイアウォールが無効になっていることを確認する
ちなみに各NICの概念は以下の通り。
ホストOS:物理NIC(VMnet8は物理NICを利用してインターネットへ接続)
|
|
+---ホストOS:VMnet8(ゲストOSから見たデフォルトG/W)
|
|
+---ゲストOS:仮想NIC
ホストOSとゲストOSはVMnet8のアドレスと、ゲストOSのアドレスが同一セグメントに
あるため、通信が可能となる。
例)
ホストOS:物理NIC(VMnet8は物理NICを利用してインターネットへ接続)
IP:なんでも良い
|
|
+---ホストOS:VMnet8(ゲストOSから見たデフォルトG/W)
IP:192.168.137.1/24
デフォルトG/W:なし
|
|
+---ゲストOS:仮想NIC
IP:192.168.137.10
デフォルトG/W:192.168.137.1
ファイアウォール:無効(ホスト、ゲスト間の疎通を取りたい場合のみ)
【ホスト側(物理NIC)の設定】
1.アクティブなNICの[プロパティ]-[共有タブ]の「ネットワークのほかのユーザに、
このコンピュータのインターネット接続を通しての接続を許可する」にチェック
を入れる。
2.同設定の「ホームネットワーク接続」でVMnet8を選択する
3.2.を設定すると仮想NICのVMnet8に自動的に割り振られるIPアドレス(ゲストOSのG/W)を
確認する
4.vmnetcfgのVMnet8の情報がNATになっていることを確認する
5.vmnetcfgのVMnet8の情報のNAT設定から、G/Wのアドレスが3.で確認したものと一致
していることを確認する
6.vmnetcfgのVMnet8の情報の「ローカルDHCPサービスを使用してIPアドレスをVMに配布する」
のチェックが外れていることを確認する
【ゲストOSのNIC設定】
1.IPアドレスのG/Wを3.と5.で設定したものを一致していることを確認する
2.Windowsの場合、ファイアウォールが無効になっていることを確認する
ちなみに各NICの概念は以下の通り。
ホストOS:物理NIC(VMnet8は物理NICを利用してインターネットへ接続)
|
|
+---ホストOS:VMnet8(ゲストOSから見たデフォルトG/W)
|
|
+---ゲストOS:仮想NIC
ホストOSとゲストOSはVMnet8のアドレスと、ゲストOSのアドレスが同一セグメントに
あるため、通信が可能となる。
例)
ホストOS:物理NIC(VMnet8は物理NICを利用してインターネットへ接続)
IP:なんでも良い
|
|
+---ホストOS:VMnet8(ゲストOSから見たデフォルトG/W)
IP:192.168.137.1/24
デフォルトG/W:なし
|
|
+---ゲストOS:仮想NIC
IP:192.168.137.10
デフォルトG/W:192.168.137.1
ファイアウォール:無効(ホスト、ゲスト間の疎通を取りたい場合のみ)
