Hyper-Vで仮想マシンが使用できるメモリサイズの確認
Hyper-Vホスト上でタスクマネージャーからメモリ使用量を確認して、まだメモリに空きがあると思っても、何故か仮想マシンが起動できないときがある。ホスト用のメモリが必要だったり、仮想マシンのオーバーヘッドによるもののせいであるとのこと。
また、タスクマネージャー上からみて空きがあって、仮想マシンを無事起動できたとしても、ホストのメモリが不足して、いきなり仮想マシンが落ちることもある。
Hyper-Vをサイジングするにあたっては、余裕をもって設計する必要があります。メモリサイズをギリギリにしてしまうと不安定になること請け合い。あと、既にあるHyper-V上にあとどれだけ仮想マシン向けにメモリを利用できるかを考える必要がある。
で、実際に仮想マシンに使えるメモリをざっくり算出する計算式は下記。
[タスクマネージャーの"利用可能"メモリ] – [仮想マシンすべてのメモリ予約サイズ]
これはだいたいの目安。
Microsoftの公式見解ではこうなっている。
[Windows Server 2008 の場合]
384MB + 30MB per 1GB of physical memory on the host machine.
なので、例えばホストに積んでるメモリが32GBの場合、
384MB + (30MB * 32) = 約1.3GB
となる。なので、
32GB - 約1.3GB = 約30GB
が仮想マシンに利用できるメモリサイズとなるようです。
Hyper-V Dynamic Memory and Host Memory Reserve setting – PFE Virtualization Blog
[Windows Server 2012の場合]
MSから具体的な計算式まで公開されていない。ただし、パフォーマンスカウンタのHyper-V Dynamic Memory Balancer\Available Memoryの値が、仮想マシンに利用できるメモリサイズとなるので、ホストに積んでるメモリが32GBの場合、
32GB - [Available Memory]
が仮想マシンに利用できるメモリサイズになる。
Virtual machine that's running on Windows Server 2012 R2 doesn't start
Windows Server 2012の場合、ホストで使うメモリが分かりにくいので、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\VirtualizationキーのMemoryReserve(DWORD)に予約サイズをMB単位で指定する、といったこともできる。当然、非推奨となっているため、もしどうしてもしたい場合は自己責任でしましょう。
PowerShellで計算できるみたいなので、備忘録。
(参考サイト)仮想マシンが使用できるメモリーサイズ
# 割り当て可能メモリーサイズを実際に聞いてみる
$Counter = Get-counter -Counter "\hyper-v dynamic memory balancer(system balancer)\available memory"
$VMMem = $Counter.CounterSamples.CookedValue
"Hyper-V available memory = {0} GB" -f ($VMMem * 1MB / 1GB)
# 割り当て済みメモリーサイズと合算して、トータル割り当て可能メモリーサイズを算出する
$MemoryAssigned = 0
Get-VM | % { $MemoryAssigned += $_.MemoryAssigned}
"Total memory size can be assigned to the VM = {0} GB" -f *1
Hyper-Vにバックアップソフトを入れているとか、常駐のソフトを何か入れている場合は予期せぬメモリ消化で、仮想マシンが不安定になるので、上記はあくまで目安。やっぱり多めにメモリを積んで、多めにバッファを取ることをお勧めします。
*1:$VMMem * 1MB / 1GB) + ($MemoryAssigned / 1GB
CentOSのVMwareTools動作確認&停止時の起動設定
CentOSのVMware Toolsが起動していないために、Acronis Backup for VMware(旧vmProtect)が「この仮想コンピュータのスナップショットに不整合が生じている可能性があり、ソース ファイルの除外はサポートされません。」と怒られるトラブルがあったので、その対応まとめメモ。
【原因詳細】
VMware Toolsがいつのまにか停止してしまうという現象。原因はvSphere上のLinuxのカーネルのアップデートによるものだそうです。
●VMware Toolsのバージョン確認コマンド
[root@hogesv ~]# vmware-toolbox-cmd -v
9.0.5.21789 (build-1065307)
●VMwareToolsの動作確認・起動
[root@hogesv ~]# status vmware-tools
vmware-tools start/running
●VMwareToolsのサービスが起動しない際の対処法
[root@hogesv ~]# /usr/bin/vmware-config-tools.pl
Initializing...
Making sure services for VMware Tools are stopped.
vmware-tools stop/waiting
~~中略~~
色々と確認されるがすべてEnter(デフォルト)で進む
~~中略~~
The configuration of VMware Tools 8.6.10 build-913593 for Linux for this
running kernel completed successfully.
You must restart your X session before any mouse or graphics changes take
effect.
You can now run VMware Tools by invoking "/usr/bin/vmware-toolbox-cmd" from the
command line or by invoking "/usr/bin/vmware-toolbox" from the command line
during an X server session.
To enable advanced X features (e.g., guest resolution fit, drag and drop, and
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session; and,
3. Restart your X session.
Enjoy,
--the VMware team
で完了。"vmware-toolbox-cmd -v"コマンドにて動作確認
できればOSごと再起動して、再度VMware ToolsがStartになっていることを確認。
(参考URL)
http://cloud.nifty.com/cs/catalog/cloud_faq/catalog_120416000931_1.htm
http://cloud.nifty.com/cs/catalog/cloud_faq/catalog_130830001417_1.htm
OneDrive for Businessの要件および注意点
OneDrive for Businessの要件および注意点
1.ファイルのダウンロード、アップロードの転送速度
OneDrive for Businessのファイル転送速度はテストした結果下記の通りでした。(2014年12月19日時点)
回線環境:FTTH 100Mbps
アップロード:8Mbps
ダウンロード:30Mbps
※1GBのファイルを転送場合、Upは約17分程度、Downは4分30秒程度かかる計算
導入時は利用環境のインターネット回線の速度にも要注意。(ADSLは厳しいかと。。。)
2.最大ファイルサイズについて
OneDrive上に保存できる1つのファイルに対する容量制限は2GBまで。
写真のRAW画像や、ビデオファイル等を扱う場合は厳しいことが想定される。
3.同期可能アイテム数について(保存可能ファイル数)
1ユーザーあたりのOneDriveに保存できるアイテムは、20,000アイテムまで。
ただし、PCからOneDriveを同期する場合は20,000アイテムだけど、Webブラウザから使用する場合は5,000アイテムまでという制約がある。
※1 5,000アイテムを超えると、WebブラウザからOneDriveに保存したアイテム一覧が表示されなくなる
※2 ちなみにアイテムとは、フォルダも1アイテムとしてカウント
【参考サイト】
OneDrive for Businessを介してSharePointライブラリをコンピューターに同期する際の制限事項
http://support.microsoft.com/kb/2933738/ja
OneDrive for Businessで扱っているアイテム数の確認方法
http://community.office365.com/ja-jp/f/323/t/230588.aspx
OneDriveとOneDrive (Impress)
http://internet.watch.impress.co.jp/docs/column/shimizu/20140811_661556.html
OneDrive for Businessは容量無制限と宣伝しててコレは良い!!って感じに見えますが、上記の通りの制限があるためバックアップやファイルサーバーの代替手段にはなりえないので、十分に注意しましょう。。。
それにしてもMicrosoft、宣伝がうまいよねぇ。。。
Office365へのPowerShell接続手順
Office365のPowerShell接続方法は、何故かコロコロ変更があって、ネットで情報を探してもなかなかまとまった情報がないので、2014年12月15日現在の手順を掲載。
(参考サイト)
単一の Windows PowerShell ウィンドウで Office 365 に接続する
1.PowerShell自体の設定
# Get-ExecutionPolicy
にて、現在のPowerShell接続ポリシーを確認。実行ポリシーが Unrestricted または RemoteSigned に設定されていなければ、下記コマンドを実行。
# Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policiesのヘルプ トピック(http://go.microsoft.com/fwlink/?LinkID=135170)で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"):
と、上記のように変更を聞かれるので、「Y」を入力してEnterで変更。
2.Azure ADモジュールの導入
Manage Azure AD using Windows PowerShell
上記リンク内の「Azure ADモジュールのインストール」を見ての通り、下記2つのプログラムをインストールする必要がある。
【Microsoft Online Services Sign-In Assistant for IT Professionals RTW】
http://www.microsoft.com/ja-jp/download/details.aspx?id=41950
【Azure Active Directory Module for Windows PowerShell (64 ビット バージョン)】
http://go.microsoft.com/fwlink/p/?linkid=236297
※32bitバージョンは2014年10月20日で廃止とのMSから案内あり。(打ち切るなんてヒドイ!)
が、今のところプログラムのダウンロード可能&利用可能。
32bitOSから利用しようとしている場合はこちらをダウンロード&実行。
インストール後、OSの再起動を求められるので再起動を実施。
3.Windows PowerShell資格オブジェクトを作成
管理者権限でPowerShellを起動して、下記コマンドを実行
# $credential = Get-Credential
「Windows PowerShell資格情報の要求」ダイアログが表示されるので、接続したいOffice365管理者権限のユーザーID・パスワードを入力する。
4.Office365へ接続
PowerShellにて下記コマンドにてOffice 365 モジュールのインポート
# Import-Module MsOnline
「3.」で設定したPowerShell資格オブジェクトを利用してOffice365へ接続
# Connect-MsolService -Credential $credential
これでOffice365への接続が完了しました。
(おまけ)Exchange Onlineへの接続
「4.」までで、Office365へは接続が完了しましたので、Office365管理センターで使うようなこと(ユーザーの一括登録とか)はこのままでコマンドが使えますが、Exchange OnlineやSharePoint Onlineなどは、別途接続が必要ですので、その接続方法を紹介。今回は、Exchange Onlineへの接続を紹介。
【Exchange Onlineへの接続】
下記PowerShellコマンドでExchange Onlineへ接続します。
# $exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication "Basic" -AllowRedirection
下記PowerShellコマンドでExchange Onlineモジュールをインポートします。
# Import-PSSession $exchangeSession
これでExchange Onlineに接続できました。
# Get-User
などで、登録したアカウントがあるかを確認してみましょう。
Office365の全ユーザーパスワード無期限化スクリプト
Office365のパスワード無期限化設定は、その時点での無期限化設定です。ユーザーを新規作成したときは、再度無期限化の設定をしなけらばならず、常時運用している場合は面倒かつトラブルのもととなります。
そこで、全ユーザーのパスワード無期限化をPowerShellスクリプトを使って、サーバーなどに設定して自動化してしまいましょう!
まずは、下記の記事を参考に、PowerShellでOffice365の操作ができるようにツールを導入。
下記のスクリプト実行フォルダを作成します。
C:\script\
C:\script\Office365\
C:\script\Office365\log\
下記PowerShellスクリプトを "Office365-PW-NeverExpires.ps1" という名前で、 "C:\script\Office365\" フォルダへ保存。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
# ----------------------------------------------------------------
# - Office 365 全ユーザーパスワード無期限化PowerShellスクリプト
# - Office365-PW-NeverExpires.ps1
# ----------------------------------------------------------------
# Office365のモジュールをダウンロード
Import-Module MSOnline
# Office365の資格情報を入力&認証
$LiveCredential = ConvertTo-SecureString "Password" -AsPlainText -force | % { New-Object System.Management.Automation.PSCredential("aaa@bbb.com", $_) } | % {Get-Credential $_}
Connect-MsolService -Credential $LiveCredential
echo ユーザーのパスワード無期限化の設定を確認(実行前)
Get-MSOLUser | Select UserPrincipalName, PasswordNeverExpires
echo .------------------------------------------------------------
echo .
echo .
echo 全てのユーザーのパスワード無期限化を設定
Get-MSOLUser | Set-MsolUser -PasswordNeverExpires $true
echo .
echo .
echo .------------------------------------------------------------
echo .
echo .
echo ユーザーのパスワード無期限化の設定を確認(実行後)
Get-MSOLUser | Select UserPrincipalName, PasswordNeverExpires
echo .------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
次に、 "Office365-PW-NeverExpires.ps1" を実行するためのWindowsバッチファイル、 "Office365-AutoPWNeverExpires.bat" を "C:\script\Office365\" 作成します。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rem ----------------------------------------------------------------
rem - Office 365 全ユーザーパスワード無期限化スクリプト実行
rem - Office365-AutoPWNeverExpires.bat
rem ----------------------------------------------------------------
@echo off
rem 変数定義
set DT=%date%
set LOG=C:\script\Office365\Log\%DT:~0,4%%DT:~5,2%%DT:~8,2%.log
set PSexePath="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
set PSscriptPath="C:\script\Office365\Office365-PW-NeverExpires.ps1"
echo --------------------------------------------------------------- > %LOG%
echo --- Office 365 全ユーザーパスワード無期限化スクリプト実行 >> %LOG%
echo --- Start Time : %date% %time% >> %LOG%
echo. >> %LOG%
echo. >> %LOG%
echo -- スクリプト実行 >> %LOG%
call %PSexePath% %PSscriptPath% >> %LOG%
echo. >> %LOG%
echo. >> %LOG%
echo --- End Time : %date% %time% >> %LOG%
echo --------------------------------------------------------------- >> %LOG%
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
これで準備完了。
あとは、タスクスケジューラへ "Office365-AutoPWNeverExpires.bat" を登録し、正常に動くかを確認すれば出来上がりです。
実行結果は "C:\script\Office365\log\" に保存されるので、確認してみて下さい。
(2013/09/08現在利用可能)
Office365の仕様変更で使えなくなる可能性もあるのでご注意を。。。
Office365 ユーザーパスワード無期限化設定
Office365のユーザーパスワードの有効期限は規定で90日と設定されており、管理者画面のGUIでは無期限化設定ができません。
しかし、PowerShellを使ってOffice365へ接続し、無期限にすることができますので、その手順を掲載。
下記サイトを参考に、Office 365 コマンドレットをインストール
(必要なモジュール)
1.Microsoft Online Services サインイン アシスタント
(IT プロフェッショナル 用 Microsoft Online Services サインイン アシスタント BETA)
※2013/10/25現在、下記を使わないと「2.」のインストールができない不具合あり。
http://www.microsoft.com/ja-jp/download/details.aspx?id=39267
2.Windows PowerShell 用 Windows Azure Active Directory モジュール
(Windows PowerShell コマンドレットを使用して Windows Azure AD テナントを管理する)
http://technet.microsoft.com/ja-jp/library/jj151805.aspx
- PowerShellを起動し、下記コマンドを実行
# Import-Module MSOnline
# $LiveCredential = Get-Credential
※初めてPowerShellを使う場合は、下記コマンドで実行ポリシーを変更してください。
エラーで弾かれますのでご注意を。
# Set-ExecutionPolicy RemoteSigned
(参考)http://www.atmarkit.co.jp/fwin2k/win2ktips/1023ps1sec/ps1sec.html - 認証ダイアログが表示されるので、Office365の管理者ログオンIDとパスワードを入力
- 再度PowerShellより下記コマンドを実行
# Connect-MsolService -Credential $LiveCredential
これで、対象のOffice365ドメインにアクセスできる状態になったため、必要に応じ下記コマンドを実行
・すべてのユーザーのパスワード無期限設定を確認
# Get-MsolUser | select UserPrincipalName, PasswordNeverExpires
・一人のユーザーのパスワードを無期限に設定
# Get-MsolUser -UserPrincipalName xxxx@xxxx.onmicrosoft.com | Set-MsolUser -PasswordNeverExpires $true
・組織内のすべてのユーザーのパスワードを無期限に設定
# Get-MsolUser | Set-MsolUser -PasswordNeverExpires $true
YAMAHAルーターLuaスクリプトによる定期状態メール通知
Luaスクリプトの使えるYAMAHAルーターで、定期的なハードウェア状態のメール通知の設定手順を掲載。
Luaスクリプトを使ったYAMAHAルーターからのメール通知設定手順のおおまかな流れは、、、
と、結構シンプルです。
【ルーター情報】
IP : 192.168.1.254
ルーターのadministratorパスワード : xyzxyz
【送信メールサーバー情報】
SMTPサーバー
smtp.xxx.com (IPアドレスでも可能)
ポート
25
LOGIN(SMTP-AUTH)
使用しない
送信者
abc@xxx.com
受信者
cde@yyy.co.jp
【Luaスクリプト保存場所】
C:\script\ShowEnvironment.lua
※ 必ずShift-JIS形式で編集!!
【定期ハードウェア状態メール通知Luaスクリプト】
下記のLuaスクリプトを「ShowEnvironment.lua」という名前で保存
※ 必ずShift-JIS形式で編集&保存すること!!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-- ##### 定期ハードウェア状態メール通知Luaスクリプト #####
--------------------------## 変数の代入 ##--------------------------------
-- ルーター名
rtname = "(RTX810)"
-- "show environment"結果を通知する
cmd = "show environment"
-- メールの設定
mail_tbl = {
smtp_address = "smtp.xxx.com",
from = "abc@xxx.com",
to = "cde@yyy.co.jp",
subject = rtname .. " " ..cmd .. "実行結果通知"
}
-- メールの送信に失敗した時に出力する SYSLOG のレベル (info, debug, notice)
log_level = "(info)"
----------------------## 変数の代入ここまで ##----------------------------
------------------------------------------------------------
-- メインルーチン --
------------------------------------------------------------
local rtn, str
rtn, str = rt.command(cmd)
if rtn and str then
mail_tbl.text = rtname .. " " .. cmd .. "の実行結果\r\n\r\n" .. str
rt.mail(mail_tbl)
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
【YAMAHAルーターへの設定1】
# tftp host any
// TFTPサーバーの接続許可設定
# syslog info on
// Luaスクリプトが動いているかの確認のためにsyslogにログを残す設定
# make directory /dir1
// Luaスクリプトを保存するためのディレクトリ作成
# show file list /all
// 作成したディレクトリの確認
【TFTPでのYAMAHAルーターへの転送】
Windows標準のTFTPクライアントを使用。
※TFTPクライアントの利用設定方法は下記
http://symfoware.blog68.fc2.com/blog-entry-751.html
ルーター本体の内蔵フラッシュROMのRTFS領域へ転送して保存します。
※RTFSについて
http://www.rtpro.yamaha.co.jp/RT/docs/rtfs/index.html
コマンドプロンプトより、
# cd C:\script
// Luaスクリプト保存フォルダへ移動
# tftp 192.168.1.254 put ShowEnvironment.lua /dir1/ShowEnvironment.lua/xyzxyz
YAMAHAルーターのコンソールより、
# show file list /all
コマンドにてアップロードされているか確認。
【YAMAHAルーターへの設定2】
YAMAHAルーターのコンソールより、Luaスクリプトをスケジュール実行させるように設定する。
※時間指定で実行させるには、
# schedule at 1 08:50:00 * lua /dir1/ShowEnvironment.lua
# schedule at 2 09:00:00 * lua /dir1/ShowEnvironment.lua
# schedule at 3 09:10:00 * lua /dir1/ShowEnvironment.lua
※時間指定で毎分実行させるには、
# schedule at 1 08:*:00 * lua /dir1/ShowEnvironment.lua
# schedule at 2 09:*:00 * lua /dir1/ShowEnvironment.lua
【不要になったLuaスクリプト実行ファイル削除】
YAMAHAルーターのコンソールより、保存したディレクトリごと削除
# delete /dir1
# show file list /all
メール送信については、587ポート、SMTP-AUTH認証、POP before SMTPなどの指定できるみたい。使うメールサーバーの仕様に沿ってLuaスクリプトの変数部分を追加する必要があります。下記URLを参考に頑張ってみて下さい。
Lua言語のライブラリ関数(rt.mail)
http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#rt.mail
(参考サイト)
Luaスクリプト導入マニュアル
http://jp.yamaha.com/products/network/solution/lua/script/manual/#map_trouble
ルーターの状態を報告する
http://jp.yamaha.com/products/network/solution/lua/script/alert/