2015年11月20日金曜日

WindowsでTelnetを使わずにポート番号を指定して接続確認を実施する方法

最近のWindowsではTelnetクライアントは標準ではインストールされなくなった。普段はTelnetを使う用途はないので問題にはならないが、クライアントからサーバへ特定のポートで接続できるか確認する際に困ることがある。

Windowsでできる別の方法

というわけで、今まではいちいちTelnetクライアントを追加インストールしていたが、意外なコマンドで手軽に実施する方法があった。FTPコマンドを使うのだ。

使い方は以下の通り。

   ftp
   open <HOST名 or IPアドレス> <ポート番号>
   
    →接続OK:「www.google.com に接続しました。」が表示
    →接続NG:何も表示されない

実行例を示す。www.google.comに対して、80番ポートで接続可能か確認しており、接続OKのパターンとなる。なお、接続してからプロンプトが戻るまでは時間を要するが、「Ctrl+C」にて接続を閉じることができる。

   C:\>ftp
   ftp> open www.google.com 80
   www.google.com に接続しました。
   接続がリモート ホストによって閉じられました。
   ftp>

以下は接続NGのパターン。何も表示されずしばらく経過したのち、タイムアウトの出力がされる。タイムアウトまでは「Ctrl+C」などを押してもキャンセルできないため、待たねばならなくなる。Windows 10のPCで時間測定したところ、105秒(1分45秒)でタイムアウトするようだ(ただし、タイミングによっては21秒となる場合があり、法則がよくわからなかった)。

C:\>ftp
   ftp> open www.google.com 81
   > ftp: connect :接続がタイムアウトしました
   ftp>

2015年11月15日日曜日

Windows Updateが「現在サービスが実行されていない」というエラーが発生して実行できなくなった件

エラー事象について

ある日Windows 7 SP1のPCのコントロールパネルからWindows Updateを確認すると×印が表示されていた。


さらに、「更新プログラムの確認」ボタンを押すと以下エラーのポップアップが表示された。


<エラーメッセージ>
"現在サービスが実行されていないため、Windows Update で更新プログラムを確認できません。このコンピューターの再起動が必要な可能性があります。"

しかし、サービスを確認するとWindows Updateはしっかり起動している。ということで、微妙に試行錯誤したので解決までの顛末を記載する。

マイクロソフトのKBのFix itを試す

このメッセージで調べると以下KBがヒットした。

"Windows Update で更新プログラムを確認できません" エラー メッセージが更新プログラムをインストールしようとすると表示される
https://support.microsoft.com/ja-jp/kb/2730071

Fix itが用意されていたのでダウンロードして実行してみた。なにやら問題が見つかって解決済みと表示されたので、問題は修復されたのかと期待したが、結果的にエラーは解消されなかった。


別の技術情報の回避策を試す

原因不明で困っていると、「Windows Update サポート チーム (日本)」のブログに情報を見つけることができた。

[C8000247] 「現在サービスが実行されていないため ~」 のエラーについて
http://blogs.technet.com/b/wuj/archive/2013/07/26/c8000247.aspx

この中に以下記載がある。
多くの場合、この状態は HDD を交換したコンピューターで発生しています。これは Windows Update 自体に直接的な原因があるわけではなく、HDD の適切なドライバーが適用できていないことが要因です。

要因となっているのは  Advanced Format Disk と呼ばれる新しい HDD のフォーマットです。このフォーマットに対応した HDD を使っている場合、適切なドライバーが適用されていないと一部のデータに正常にアクセスできないことがあります。この場合、適切なドライバーを入手してインストールしてください
Windows UpdateにHDDのドライバーが関係するとはなかなか思いつかず、この情報は目から鱗だった。そして、このPCは先日SSDに換装したばかりだったので、このブログに記載の以下回避手順を試してみることにした。
多くの場合 Intel Rapid Storage Technology をインストールすることでも回避できるようです。このあたりはご利用環境にもよるので参考としてご認識ください。

https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=3409&DwnldID=22036&lang=jpn
- ファイル名: iata_cd.exe
- バージョン: 11.6.0.1030
- 言語: マルチ・ランゲージ
該当のドライバをインストールして、正常にドライバがインストールされた。再起動してWindows Updateを実施すると、エラーは解消されていた。


まとめ

結局、問題はHDDのドライバー問題で、「Advanced Format Disk 」という比較的新しいディスクフォーマットに対応したドライバーが必要だったということだった。後で調べて見つけた以下KBにも詳しく記載がされていた。

Windows 7 および Windows Server 2008 R2 と Advanced Format Disk の互換性を向上させる更新プログラムを入手できます
https://support.microsoft.com/ja-jp/kb/982018


2015年10月12日月曜日

QNAPのQTS(OS)を4.2にバージョンアップしてみた

先日QNAPのOSであるQTSの最新バージョン4.2.0がリリースされたようだ。現在、バージョン4.1.4を利用しており、特にこれといって不満はなかったのだが、インターフェースが新しくなり操作が軽くなったとの情報もあったので、バージョンアップしてみることにした。

なお、QTS 4.2の詳細な情報は以下URLに記載されている。
https://www.qnap.com/qts/4.2/jp/

バージョンアップの流れ

バージョンアップはいたってシンプルで、すべてQTSのWeb画面からGUI操作にて完了する。

1. 「システム設定」→「ファームウェア更新」→「ライブ更新」画面にて、現在のバージョンを確認しgておく。


2. 「更新を確認」ボタンを押すと4.2.0の更新情報が出てくるので、「OK」を押す。


2. わざわざ「新機能」のページが表示されるので「続行」を押せばバージョンアップのプロセスが開始される。再起動の時間も含めて15分もあればバージョンアップは終了する。


3. ログインして、バージョンを確認。問題なく4.2.0にあがっていた。


4. バージョンアップ後、App Centerで個別にバージョンアップが必要なアプリがないか確認しておくこと。

バージョンアップで変わった点

少しだけ管理画面を操作した中で見つけた変更点を記載しておく。

①画面デザインが一新した。コントロールパネルのアイコンもすべて今風のアイコンデザインになっている。操作性もよくなっており、バージョンアップ前よりサクサク動くような気もする。


②ダッシュボードから、リソースモニター等をドラッグアンドドロップで画面上に配置できるようになった(前バージョンでそもそもそのような操作をしたことがなかったので、もともとできていたかもしれない)。


③画面の表示モードが選択可能になった。タブモードにすると、各ウィンドウは画面いっぱいに表示されるようになる。ウィンドウモードは今までの表示方式と同じ。フレームレスモードはウィンドウにマウスオーバーすると、最小化や閉じるボタンが表示されるというモードになった。私はスマートフォンからも操作することがあるので、タブモードで運用することにした。



④「システム設定」→「ハードウェア」→「一般」タブに謎のオプション「高パフォーマンスモードを有効にする」が増えていた。「ネットワーク環境が不安定な場合は有効にするな」とのことだが、自宅のLANで使っているのだから安定しているだろうということで、チェックをONにして転送速度を計測してみたが、特に変化がなかったのでオフに戻した。


まとめ

というわけで、バージョンアップは短い時間で簡単に実施できるし、ただのファイルサーバーとしてQNAPを使っているようなユーザーにおいては特に不具合もなく使えそうだ。個人的には画面表示が洗練されることや操作性が改善されることもあるので、特に理由がなければバージョンアップをお勧めする。

2015年8月8日土曜日

Windows 7 Proの仮想マシンをWindows 10 Proにアップグレードしてみた

Windows 10はWindows 7やWindows 8のユーザーであれば1年間に限り無償アップロード権がもらえる。先日7/29にとうとうアップグレードの開始日となった。

とはいっても、私のWindows 7とWindows 8.1のPCはどちらもアップグレードの予約用のアイコンが表示されなかったため、何もせず期日を迎えてしまった。アップグレードは予約をしたPCに対し順次開始されるような雰囲気があったが、実際は手動であればいつでも好きなときにアップグレードすることができたので、その手順を記載する。

Windows 10のメディア作成ツールを入手

以下サイトからメディア作成ツールを入手する。32bitと64bitがあるので、現在使っているOSに合わせてダウンロードすればよい。

https://www.microsoft.com/ja-jp/software-download/windows10

アップグレードの開始

メディア作成ツールという名前なので、Windows 10のISOファイルも作成することはできるのだが、このツールが直接OSのアップグレードを実行する機能もある。今回はその機能を使ってみた。

なお、今回自分がアップグレード対象としたのは、Windows 7上のVMware Workstation 11で稼動しているWindows 7。さすがにリリース直後のOSをメインPCにインストールする勇気はでなかった。

さて、メディア作成ツールを起動すると以下画面が出る。ここで「このPCを今すぐアップグレードする」を選択する。
※インストールメディア(ISOも作成可能)を作りたければ、下を選ぶ。


そうすると以下のような遷移で処理が動く。

 ①Windows 10をダウンロードしています (6分)
 ②ダウンロードを検証しています (2分)
 ③Windows 10のメディアを作成しています (14分)
 ④更新プログラムをダウンロードしています (1分)

ちなみに、これはよくない仕様だが、Windows 10にアップグレードできない条件と合致すると、④で止まる。④に到達するまでそこそこ時間を要するので、条件チェックは一番最初にして欲しい。最初1GBのメモリの仮想マシンをアップグレードしようとしたら、以下メッセージで失敗してしましまった。


その後は、ライセンス条項の同意など一般的な内容なので、次へ進んでいけばよく、最終的に「インストールする準備ができました」の画面になる。


インストール

以下のような画面が出てインストールが進んでいく。時間は45分要した。





初回起動

アップグレードが終了すると、初回起動時だけに表示される画面に遷移する。面倒だったので「簡単設定を使う」を選択し終わらせてしまった。




Windows 10の起動とVMware Toolsの再インストール

最終処理が終わると、Windows 10のデスクトップが表示される。



これで通常のPCでのアップグレードは終了だが、VMware仮想環境の場合は、以下を実施する。

 ①仮想マシンをシャットダウン
 ②仮想マシンの設定画面にて「ゲストOS」の項目を「Windows 10 x64」に変更
 ③仮想マシンを起動
 ④VMware Toolsを再インストール

VMware Toolsは、OSのバージョンが変わると、微妙にインストールされるドライバや変更される設定が異なることがあるので、上記を実施している。

なお、上記②の手順について補足だが、VMware Workstation 11には「Windows 10 x64」の選択肢が用意されていた。しかし、ESXiの場合はバージョンによっては表示されないと思うので、アップデートがVMware社から用意されるようであればアップデートする。そうでない場合は、一番近いOS(Windows 8やWindows Server 2012)などを選んで起動することを期待してみるのが良い。
※今回の場合であれば、Windows 7の設定状態でも起動もするし、VMware Toolsも動作した

最後に

これでインストールが完了したので、Windows 10の使い勝手を確認しようと思う。常用できそうであれば、メインPCをWindows 10にアップグレードするつもり。

2015年8月5日水曜日

Lenovo Thinkpad T400のHDDをSSDに換装した件

Lenovo Thinkpad T400は7年前のPCということもあって、バッテリーは既に息絶え、熱暴走も起き、起動に時間が掛かる困ったPCになってきていた。

選択肢としては2つあって、新しいノートPCに買い換えるか、パーツを交換して延命するかだった。そんな時、Amazonからのお知らせ「今ならSSD買うと5%OFFにするよ」とのこと。気づけばSSD 256GBをポチっていた。

せっかくなのでベンチマーク

というわけで、初めてのSSD体験となるので、ベンチマークしてみたという話。T400はHDDにネジ一本外せばアクセスでき、交換は容易だった。さっそく「CrystalDiskMark」を使って測定をしてみた。

◆SSD(上)とHDD(下)

◆HDDベンチマーク結果


◆SSDベンチマーク結果


SSDの圧倒的な性能差異。シーケンシャルアクセスが爆速なのはわかっていたが、HDDでは極端に性能劣化するランダムアクセス(なんと1MB/sもでない)であっても、ある程度の性能を発揮できている。

ちなみにSSDが300MB/sより下で性能限界となるのは、T400がSATA2だから。SATA3であれば、600MB/sが上限となり、このディスクの性能はもっと活かすことができた可能性が高い。

2015年8月4日火曜日

Lenovo Thinkpad T400が熱暴走して落ちまくる件

自宅では2008年ごろに購入したThinkpad T400のノートPCをメインPCとして使っている。当時は結構高いスペックのものを選んだので、その分費用も結構したと記憶している。

既に7年が経過し、今となってはコアも2つしかない貧弱マシンではあるが、HDDのI/Oの遅さ以外はまあまあ我慢できるレベルなので、壊れるまで使いたいと考えている(HDDのI/Oが遅い問題は、別途SSDに換装して概ね解決した)

しかし、使い続けようとした矢先、問題が起きた。

問題とは

SSDに交換するということで、OSもクリーンインストールすることにした。Windows 7 Professionalのインストールは問題なくうまくいったのだが、その後のWindows Updateが始まると、CPUが触れないくらい発熱し、ついには電源がブチッと切れるようになってしまった。そのせいで、Windows Updateが中途半端なところで終了し、イベントログにエラーが出るようになったり、そもそもWindows Updateが動作しなくなったりと散々であった。

ありがたいことにクリーンインストール直後だったので、システム復元を有効にしていたこともあって、電源が落ちる度に復元して復旧させることができたが、かれこれ10回はシステム復旧を行っていた。

「TPFanControl」でFanの回転数を上げる

この発熱の原因は、CPU温度が上昇してもFanが回転していないのではないかと考えた。昔からあるSpeedFanというソフトで温度を測るとCPU温度は80度を超えていて、非常に高温であることはわかったのだが、残念ながらSpeedFanではFanを検出できず測定できなかった。

別のソフトを探したところ、Thinkpad用のFanコントロールツールを見つけることができた。

TPFanControl by troubadix
http://www.staff.uni-marburg.de/~schmitzr/donate.html

ここで「download: latest common version of TPFanControl for Windows 8 / 7 / Vista / XP, 32/64bit, Celsius/Fahrenheit, service/non_service」のリンクからダウンロードする。私がダウンロードした際はVer.0.62だった。

このソフトをインストールすると、「C:\Program Files\TPFanControl」にファイルが置かれる。その中に「TPFanControl.ini」という設定ファイルがあって、これは直接メモ帳などで編集して使うことを想定しているらしい。

最低限気にするのは以下箇所だけで問題ない。温度とFan回転数は好みでチューニングする必要あり。

-------------------------
StartMinimized=1 // 0を1にする。起動時にタスクトレイに入れる設定

Level=60 0         // 60℃であれば回転数0にする
Level=65 1         // 65℃であれば回転数1にする
Level=70 3         // 70℃であれば回転数3にする
Level=75 7         // 75℃であれば回転数7にする
Level=80 64       // 80℃であれば回転数64にする
-------------------------

なお、回転数128という記述もデフォルトのiniファイルには存在するが、Thinkpad T400では128を設定すると逆にFan回転数が落ちてしまった。どうやらT400はある程度CPU温度が高くなりすぎてしまうとFan回転数が落ちるという仕様(なのか不具合なのかわからないが)のようだ。

そのため、高い温度でずっと稼動しても温度が下がらないので、熱暴走で落ちる原因になっている。ありがたいことに「TPFanControl」を起動させておけば、高い回転数を維持できるので、熱暴走を防ぐことはできた。

物理的な掃除

そもそも昔はこんなに熱くなかったはずなので、エアダスターを使ってFan周りのほこりを吹き払ってみた。結果、CPU温度は10~20℃も低下し、CPUの使用率が上がっても、温度上昇がゆるやかになり、冷えやすくもなった。

結局、Fanの汚れが熱暴走の直接的原因だった。ほこりを少し吹き払った程度ではそんなに変化はないだろうと当初は思っていたが、考えを改める必要があると感じた。


2015年7月28日火曜日

QNAP TS-112PのrsyncとRTRRのローカルフォルダ間での転送速度比較

QNAPではNAS間のバックアップを目的として、大きく以下2通りの方法が提供されている。

 ・rsync
 ・RTRR (Realtime Remote Replication)

これらは本来、2台のNASを用いて遠隔地間でバックアップを実現するための機能なのだが、ローカルフォルダ間のファイルコピーを定期的(あるいはリアルタイム)に実施する機能としても利用できる。

今回その使い方を調べる意味で設定を入れてみて、その際に転送速度も計測してみたので、その内容を記載する。

rsyncの設定方法

QNAPの管理画面から「バックアップマネージャ」を開く。すると、左側に「Rsyncサーバ」という項目があるため選択すると以下の様な画面が表示される。


設定箇所は1箇所で、「リモートサーバからローカルホストへのバックアップを有効にする」にチェックを入れる。

次に「NAS to NAS」を選択する。なお、「Rsync」という項目もあり、同じような画面が表示されるが、ここを選んでもrsyncのせっていはできない。


「レプリケーションジョブの作成」ボタンを押す。ここからの細かな設定は割愛するが、ローカルフォルダ間でコピーを実施するため、接続先に自分自身を指定する。指定の仕方としては、リモートサーバーのIPアドレスを「127.0.0.1」に設定すれば良い。



RTRRの設定方法

「バックアップマネージャ」から「RTRR」を選んで設定すれば良い(ローカルで使用する場合は、「RTRRサーバー」でのRTRRサービス有効化が不要だったのが謎)。

RTRRのジョブ設定はウィザード形式で進む。ローカルフォルダ間でコピーをする際は、「同期化する場所の選択」で「ローカルフォルダからローカルフォルダ、または外部ドライブへ」を選べば良い。また、rsyncとの違いとしてリアルタイムでのレプリケーションがスケジュールとして選択可能。

転送速度比較

測定方法としては以下2パターンにて実施を行った。

 ①内蔵ディスク→内蔵ディスクでコピー
  /Download→/home/admin
  容量:1ファイル/約700GB
  rsync・RTRRともにオプションは全て無効

 ②外付けディスク→内臓ディスクへコピー
  /USBDisk1/hoge→/home/admin
  容量:2ファイル/約715GB
  rsync・RTRRともにオプションは全て無効

結果は以下の通り。

 ①内蔵ディスク→内蔵ディスクでコピー
  rsync:11.12MB/s
  RTRR:46.80MB/s

 ②外付けディスク→内臓ディスクへコピー
  rsync:13.36MB/s
  RTRR:44.94MB/s

①②共に、RTRRがrsyncに比べて3~4倍速いことがわかった(rsyncの処理の負荷によるものと想定)。RTRRはGUIでログ等が細かく確認できるため、特に理由がなければローカルフォルダ間のコピーではRTRRの利用を推奨する。

①のコピー処理は同一のディスクでシーケンシャルReadとWriteが発生するので速度が遅くなると思ったが、結果は①②もほぼ変わらないどころか、①の方が少し速い。これについては原因不明(内蔵HDDが7200rpmだからReadとWriteの処理を捌ききれた?外付けHDDがNTFSフォーマットだから?)。

また、一般にReadよりもWriteの方が処理が遅いはずなので、このNAS(QNAP TS-112P)のシーケンシャルWriteの性能は40~50MB/sあたりで頭打ちということも示す結果のような気がする。別途きちんとベンチマークして確認したい。

2015年7月15日水曜日

ドコモの通信の最適化と無効化方法について

ドコモの通信の最適化とは

いつからかドコモは「通信の最適化」という機能が備わっていて、spモード細則から引用すると以下の内容になっている。
(3) 通信の最適化

①別途当社の定めるところに従い同意いただいた場合、spモードのアクセスポイントを経由したパケット通信において、画面の表示速度や動画の再生開始時間を早くするための通信の最適化を行う場合があります。最適化とは、端末の画面に適したサイズに画像・動画を圧縮することや、より伝送効率の高いコーデック形式に動画を変換することをいいます。

②HTTPS(Hypertext Transfer Protocol Secure)通信時の画像等、spモード電子メールを含むメールの添付ファイルの最適化は行いません。

③最適化された画像等を復元することはできません。
最適化というと聞こえはよいが、要するに画像や動画の品質を低下させることを意味する。また、自分のコントールできない箇所でデータに変換が掛かることが気持ち悪いので、私個人としては無効にすることをおすすめする。

※「同意いただいた場合」と書いてあるが、同意した記憶が無くても契約時にデフォルトで有効になっている可能性が高いので、確認することをおすすめする

なお、通信を圧縮して月々の通信料を削減したいのであれば、Google ChromeやOpera等のブラウザの機能を使った方が、目に見える形で圧縮率がわかるし、好きな時にON・OFFが選べて良いと思う。

通信の最適化の無効化(非適用)方法

無効化方法は以下の通り。なお、ドコモは以下の通りオンライン手続きが可能だが、auは電話だけ、ソフトバンクに至っては無効化不可(強制)のようだ。

 ①スマートフォンで「dmenu」を開く
 ②dmenuの画面下部にある「契約内容確認などオンライン手続き」を開く
 ③「ご契約内容の確認・変更」を押す
 ④契約内容が複数ページにまたがって表示されるので、「spモード」を探す(後半にある)
 ⑤「通信の最適化」が「適用」になっている場合は「変更」を押し「非適用」に変える

2015年6月28日日曜日

Googleカレンダーでスケジュールを共有しスマートフォンで確認する方法

家族とスケジュール共有する際に、口頭で伝えたり壁掛けカレンダーに書いたりして情報共有していたが、伝え忘れも多いし、時代にそぐわない気もしたので、Googleカレンダーでスケジュールを共有することにした。

Googleカレンダーで共有用カレンダーを作成

PCでGoogleカレンダーにアクセスする。「設定」画面→「カレンダー」タブを選択し、「新しいカレンダーの作成」ボタンを押す。

以下の様な「新しいカレンダーの作成」画面となるため、以下のように設定する。

 ・カレンダー名:任意 ※今回は「家族と共有」という名前にした
 ・特定のユーザーと共有:ここに共有したい相手のGmailアドレスを入力
  ※この際に、「権限の設定」は「変更および共有の管理権限」にする
  ※「閲覧権権限」のみ与えることも当然可能


これで共有用のカレンダーが作成された。


引き続きスマートフォンでも閲覧・編集できるよう設定を行う。

スマートフォン(Android)での設定

以下手順は、カレンダー作成アカウント・共有されたアカウントで同様となる。

まずはAndroidの設定画面の「アカウント」を選び、Googleアカウントの同期を実施して情報の最新化を行う。

その後、カレンダーを表示させる設定をするのだが、これは、Androidにて標準でインストールされているカレンダーアプリでしかできないようだ。この標準カレンダーアプリだが、通常は「カレンダー」といった名前でインストールされているはず。ただし、機種によっては名前が異なり、Galaxy S6では「Sプランナー」というアプリ名となっている。

以下は全て「Sプランナー」での設定画面となる。設定操作も微妙に異なるため注意が必要。

標準カレンダーアプリから「その他」→「カレンダーの管理」を選択する。


すると、先ほど作成した「家族と共有」のカレンダーが表示されているのでオンにする。


この設定をすれば、他のアプリ(例えば、ジョルテなど)でもカレンダーの表示設定ができるようになる。

2015年6月16日火曜日

QNAPのNAS「TS-112P」を買ってみた (DDNS・マルティメディア管理機能編)

初期設定とデータ移行は終わったので、QNAPが提供するDDNSに登録して外出中もNASにアクセスできるようにすることと、マルティメディア管理の設定を実施して、Photo Station・Music Station・Video Stationのアプリから、マルティメディア再生をできるようにする。



DDNS

ブラウザでmyQNAPcloudにアクセスし、「サインアップ」を選んでユーザー登録を実施する。

https://www.myqnapcloud.com/

また、NASの管理画面のApp CenterからCloud Linkも追加インストールする。後はmyQNAPcloudで、自身のデバイスを登録すればOK。その際にDDNSへも登録される。登録されたアドレスは以下のようになる。

http://<登録名>.myqnapcloud.com/

DDNS登録後は、無線LANルーターの設定も必要。Buffaloの場合は、管理画面の「ゲーム&アプリ」→「ポート変換」を選択し、以下の様なルールを作成しておく。

ポート変換登録情報
グループInternet側IPアドレス
LAN側IPアドレス
プロトコル
LAN側ポート
操作
QNAPエアステーションのInternet側IPアドレス
192.168.X.X
HTTPS(TCPポート:443)
HTTPS(TCPポート:443)
エアステーションのInternet側IPアドレス
192.168.X.X
HTTP(TCPポート:80)
TCPポート:8080

設定後は、無線LANルーターの外から実際にアクセスしてみて、接続確認できればOK。Androidから繋ぐ場合はアプリがあるのでそれを使うのも良い。

マルティメディア管理

QNAPはマルティメディア管理機能が充実しているので、有効に設定する。

NASの管理画面から「コントロールパネル」→「マルティメディア管理」を選択し、以下設定を行う。

 ・メディアフォルダ
  - 画像・音楽・動画が保存されているフォルダを設定(デフォルトではMultimediaとhomesのみ)

 ・メディアライブラリー
  - メディアスキャン設定は好みだが、スケジュールスキャンに設定。
   ※ライブラリに追加された新しいファイルをリアルタイムスキャンする設定もある
  - 初回は手作業で「今スキャンする」を実施
   ※画像のサムネイル生成は枚数が多いと数日かかるので気長に待つこと

これでWebベースのアプリやAndroidアプリから、画像・音楽・動画のファイルを閲覧することができるようになる。なお、Video Stationのアプリだけはデフォルトインストールされていないので、App Centerから追加する必要がある。

スケジュールされたタスク

QNAPのNASは各種処理をスケジュールして実行できる。タスクスケジューラのようなものがあれば良いのだが、残念ながらその機能は無い。

参考までに私のNASでスケジュールされたタスクを記載しておく。バックアップやメディアスキャンは初回に時間を要するが、初回以降は差分の確認処理なので比較的短時間で終了する。

 ・NAS→USB HDDバックアップ:毎日1:00開始
 ・メディアスキャン:毎日2:00開始 ※日次しか選択できない
 ・HDDのSMART簡易テスト:毎週月曜日5:00開始


2015年6月14日日曜日

QNAPのNAS「TS-112P」を買ってみた (初期設定編)

以前BuffaloのNASを使っていたが1年で壊れたので、QNAPのNASを買ってみた。購入したモデルは以下の通り。

 ・QNAP TS-112P
 ・Seagate HDD 2TB 7200rpm

初期設定の備忘録としてまとめておく。


※図は現在のNAS周りの状況。空気清浄機の裏側の隙間に配置した。NASの隣がBuffaloのUSBハードディスク、上がBuffaloの無線LANルーター。無線LANルーターの速度がボトルネックになりつつあるので、買い替えも検討中

初期故障

Amazonで購入したのだが、起動してから5分おきにビープ音が鳴りStatusランプが赤点灯。どうも様子がおかしい。以下サイトで調べてみると、ファンの故障のようだ。

http://docs.qnap.com/nas/4.0/jp/index.html?checking_system_status.htm

実際ファンを見てみると回転していなかった。箱に記載のあったテックウインドのサポートに連絡してみると、ファンまたはオンボードの故障の可能性があるとのこと。Amazonで交換して欲しいとのことだった。

本題とは外れるが、Amazonでの交換手順は以下の通り。
  1. メーカーに連絡し故障判断をしてもらう(今回の場合はテックウインド。その際に、故障の診断内容と担当者名を控えておくと良いらしい)
  2. Amazonの注文履歴から「商品の返品・交換」をクリック
  3. 返品理由欄に控えておいた故障の診断内容と担当者名を記載(私はここでそれを書くのを忘れてしまったので、返品のダンボールの中に手書きで記入した)
  4. 交換処理をすると、とりあえず新しいNASの購入処理になる。この時点ではNASを2台購入した代金で処理される
  5. 返品するNASはAmazonが自動生成する宛先、ラベルとバーコードをダンボール内に入れて返送する(Amazonで案内される郵便局に電話すれば集荷に来てくれる)。この際、故障であれば着払いで処理する
  6. 返品商品がAmazonに届くと、金額が払い戻される
というわけで、Amazonに交換依頼を出して、次に届いたNASは正常に起動したので、ようやくセットアップを開始できることになった。

DHCP問題

起動は正常にされるのだが、今度はネットワークに接続されず管理画面へのアクセスができない。PCとクロスケーブルで直結するとリンクアップして、169.254.100.100というIPアドレスで割り当てられているようだ。

管理画面にアクセスできたので、IPをStaticに変更してみたりしたが、Buffaloのルーターのポートに指すとやはりネットワークに接続できない。

散々悩んだ挙句、ルーター再起動できちんとDHCPでIPを取れるようになった。結局原因はBuffaloのルーターで、ググるとBuffaloのルーターではよくあることのようだ。

NASのネットワーク設定はDHCPに戻し、Buffaloのルーター側でMACアドレスとDHCPでリースするIPアドレスを紐付けて固定するよう設定した。

初期設定

設定した項目は以下の通り。

◆ファームウェア更新
 ・とりあえず手動で最新版の4.1.4へ

◆一般設定
 ・時刻をGMT+9:00に変更
 ・タイムサーバーをntp.jst.mfeed.ad.jpに変更
 ・ログイン画面をデフォルトのオシャレなやつから地味なやつに変更

◆ストレージマネージャー
 ・ハードディスクSMARTの簡易テントを毎週月曜5:00に設定

◆ハードウェア
 ・アラームブザーについて、システム操作・システムイベント共に無効に設定
  →ただし、無効にしても起動時に1回どうしてもブザーが1回鳴る

◆通知
 ・SMTPサーバでGmailアドレスを指定し、「テストEメールの送信」を実施
  →この際に、Gmail側で「安全性の低いアプリのアクセス」を「オンにする」必要あり
 ・アラート通知も同様にEメールにチェックしてGmailアドレスを指定

◆外部ストレージ
 ・USBハードディスクを背面に接続すると勝手に認識する
  →性能面からUSB3.0のHDDを接続した方が良い
  →EXT4、EXT3、FAT32、NTFS、HFS+でフォーマット可能。
   PCで直接接続できるようにNTFSでフォーマットした

◆システムログ
 ・Syslogクライアント管理で、自分自身のIPアドレス宛てにSyslog転送を設定
  →後ほどNASのSyslogサーバを機能させる

◆ユーザー
 ・デフォルトのadminだけでも良いが、一応管理アカウントとして新しく作成

◆Win/Mac/NFS
 ・Microsoftネットワークで、以下設定を実施
  - サーバの名前:任意で適当に設定
  - ワークグループ:WORKGROUP
  - スタンドアロンサーバ
 ・Appleネットワーク・NFSサービスは使う予定が無いので無効のままにする

◆FTPサービス
 ・デフォルトで有効だが、使わないので無効に

◆Telnet / SSH
 ・Telnetは使わないので無効に

◆ネットワークごみ箱
 ・ファイル削除を実施する度に各フォルダに@Recycleというゴミ箱フォルダができる機能。
  うざいので無効に
  →外部ストレージのバックアップからも復元できるので無効でOKとした

◆ストレージマネージャー
 ・External Backupの外部ドライブで、日次でバックアップを取得する設定を実施
  →初回はそこそこ時間が掛かるが、2回目以降は差分バックアップになる
  →「余分なファイルの削除」のオプションをチェックしないことで、削除は反映されなくなる

◆VPNサーバ
 ・デフォルト有効だが、使わないので無効に

◆Syslogサーバ
 ・デフォルトで無効なので有効にする。ルーターとNAS自身のログを保存するように設定

データ移行

データ移行はUSBハードディスクからNASに対して行う。直接NASにUSBハードディスク挿せば認識してデータコピーができそうだが、タイムスタンプがどうなるかわからなかったので、一度PCを経由して、

   [USBハードディスク] --USB2.0 480Mbps-> [PC] --有線LAN 1Gbps-> [NAS]

といった経路でrobocopy使ってデータをコピーする。ボトルネックはUSB2.0の部分で、480Mbps = 60MB/sが理論値の最大転送量となる。実測値では30MB/s程度が限界だった。540GBのデータ移行で7時間程掛かった。

また、ファイルをどこに保存するか悩んだが、デフォルトで存在する「public」フォルダに全て保存することにした。

その他の設定

他にも以下のような設定を実施したが、記述量が多くなるので別途分けて記載する。

 ・QNAPのDDNSへ登録して、外出中もNASにアクセスできるように
 ・マルティメディア管理に関する設定

参考URL

QNAP Turbo NAS ソフトウェア取扱説明書 (バージョン: 4.0)
http://docs.qnap.com/nas/4.0/jp/index.html

2015年6月7日日曜日

robocopyを使ったハードディスクのバックアップスクリプト

以前Buffalo製のNASを使っており、そんなに安くもない値段がしたNASだったが、1年ちょっとで起動しなくなった。そのNASはUSBを繋げばバックアップを取得できる仕様だったのでデータロストはしなかったが、BuffaloのNASは二度と使わないと心に決めた瞬間だった(といいながら、現状はBuffalo製のUSBハードディスクにデータを保存している)。

データロストを恐れて、さらにもう1つUSBハードディスクを買って、気が向いたら手動でUSBハードディスク間のコピーを実施する運用にしているが、その際に、手作業でコピーするのは面倒なので、Windows標準で使えるrobocopyコマンドを使ってスクリプトを作っておくことにした。

スクリプト内容

先にスクリプトの中身を見せてしまうと、以下のようになる。極めてシンプルだが、差分コピーでコピー元(SRC)とコピー先(DST)をミラーリングできるスグレモノ。タイムスタンプもディレクトリ含めてきちんと一致してコピーされる。

-------------------ここから
@echo off
set SRC=d:\
set DST=z:\

echo %SRC%→%DST%のミラーリングを開始します。
pause

set TODAY=%DATE:/=%
robocopy %SRC% %DST% /MIR /DCOPY:T /R:1 /W:5 /XD "System Volume Information" "$RECYCLE.BIN" > d:\copy_%TODAY%.log

echo %SRC%→%DST%のミラーリングが終了しました。
pause

exit 0
-------------------ここまで

スクリプトのログ

これを実行すると、以下のようなログが出力される(以下ログは表示用に少し整形済み)。2回目以降は差分コピーなので、変更が少なければかなり短い時間でコピーは終わる。

ログの最後には、結果のサマリが表示され、ファイル数・スキップ数(同一ファイルが存在)・失敗数(何らかの理由でコピー失敗)などが確認できる。

-------------------ここから

------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                            
------------------------------------------------------------

  開始: Sun Jun 07 17:31:36 2015

   コピー元 : d:\
     コピー先 : z:\

    ファイル: *.*
 
 除外ディレクトリ: System Volume Information
   $RECYCLE.BIN
 
  オプション: *.* /S /E /COPY:DAT /DCOPY:T /PURGE /MIR /R:1 /W:5

------------------------------------------------------------

                   3 d:\
    新しいファイル   338   copy - コピー.bat  0%  100%
    より新しい         299   copy.bat              0%  100%
    より新しい            0   copy_20150607.log 0%  100%

               … (中略) …

                   2 d:\temp\

------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:      3198         0      3198         0         0         0
     ファイル:     83816         3     83813         0         0         0
      バイト: 532.962 g       637 532.962 g         0         0         0
       時刻:   0:00:03   0:00:01                       0:00:00   0:00:02


       速度:                 619 バイト/秒
       速度:               0.035 MB/分

       終了: Sun Jun 07 17:31:39 2015

-------------------ここまで

robocopyの説明

robocopyコマンドはオプションが多数存在するが、今回使用しているコマンドのオプションについて簡単に説明する。

◆コマンド
robocopy %SRC% %DST% /MIR /DCOPY:T /R:1 /W:5 /XD "System Volume Information" "$RECYCLE.BIN" > d:\copy_%TODAY%.log

◆使用オプション
/MIR : MIRRORの意味。全てのファイルのコピーと削除を行いディスクの内容を同一にする
/DCOPY:T : ディレクトリのタイムスタンプのコピー
/R:1 : Retry回数。省略すると100万回繰り返すので必ず指定することを推奨
/W:5 : リトライ時にWaitする時間。省略すると30秒
/XD : eXclude Directoryの略と思われる。コピー除外フォルダを指定する。

参考URL

Robocopy
https://technet.microsoft.com/ja-jp/library/cc733145%28v=ws.10%29.aspx

2015年4月25日土曜日

Excelでよく使うショートカットキー

設計書は「Wordで書くよ派」と「Excelで書くよ派」が存在する。色々あって結局Excelで作ることが多くなってしまったが、その際に覚えておくと良いショートカットキーを記載する。赤字は個人的に良く使うショートカット。

書式設定系

Ctrl + 1
「セルの書式設定」を開く

Ctrl + 2
Bold   ←Ctrl + Bでもできるので、そこまで使わない

Ctrl + 3 / Ctrl + I
Italic   ←Ctrl + Iでもできるので、そこまで使わない

Ctrl + 4 / Ctrl + U
下線   ←Ctrl + Uでもできるので、そこまで使わない

Ctrl + 5
取り消し線

Ctrl + 9
行を非表示にする

Ctrl + 0
列を非表示にする

+
数式入力を開始する。普通は"="を使うと思うが、"+"でも同じことができる。テンキーがあれば指の移動が少なくなることから("="を押す場合はテンキーから指を離す必要がある)、数式入力を繰り返す業務では効率良くなるらしい…

Ctrl + PageUp / Ctrl + PageDown
シートを移動。PageUpで左へ、PageDownで右へ。ただし、ノートPC等でPageUp/PageDownがFnキー押さないといけないPCは押すボタンが多くて大変

Ctrl + N
新規ワークシート作成

Ctrl + H
「検索と置換」の「置換タブ」を開く(Ctrl + Fだと「検索タブ」)

Ctrl + "+"
本日日付をyyyy/m/dで入力




2015年4月22日水曜日

End Of Support (EOS) の調べ方

サーバーやソフトウェアについて、更改時期等を検討する際にサポート終了日(End Of Support ; EOS)を知っておくことは重要となる。製品の保守契約を結んでいれば、サポート窓口に都度問い合わせすることもできるが、いちいち面倒だし、自分で調べればわかることは自分で調べて解決した方が良い。

ということで、私が知っている範囲で各メーカーのEOSを確認する方法をまとめておく。

HP

HPのサーバーやストレージ等のハードウェアであれば、以下サイトで検索することでサポート期限を知ることができる。終了日が表示された場合はEOSが確定しており、逆に検索結果に表示されない場合は、まだEOS未定の製品となる。

◆ポストワランティサービス終了日確認サイト
http://h50146.www5.hp.com/services/ps/carepack/fixed/serve_purchase/service/pwp/check.html

また、HPのソフトウェア製品は一覧や検索サイトは無さそうで、各製品毎にGoogle先生にお問い合わせする必要がある。

いくつか調べてみたが、以下にその情報がある。URLも変わる可能性もあるので、基本的には都度調べた方が良い。

◆HP-UX
http://h50146.www5.hp.com/products/software/oe/hpux/topics/support/

◆Systems Insight Manager
http://h20564.www2.hp.com/hpsc/doc/public/display?docLocale=null&docId=emr_na-c04273185

◆Data Protector
http://h50146.www5.hp.com/products/software/management/openview/support/pdfs/swop_e12013.pdf

IBM

IBM製品はあまり使ったことが無いが、以下検索サイトが用意されているので調べやすそう。

◆Support Lifecycle
http://www-01.ibm.com/software/support/lifecycle/index.html

EMC

以下のEMCのコミュニティの情報が詳しい。

◆EOS (End of Sale:製品販売終了)
https://community.emc.com/thread/167546

Cisco

Ciscoは残念ながら、EOSを検索したり一覧で表示できるサイトが無いようだ。従って、有志で作ったと思われる以下サイトにて確認する。

◆Cisco End-Of-Sale 情報サイト
http://cisco.end-of-sale.info/

◆製品ライフサイクルの終了:概要
http://www.cisco.com/web/JP/product/products_end_of_life_policy.html

F5

F5のBIG-IPなどは、ハードウェアのサポートとソフトウェアのサポートに別れる。ソフトウェアというのは要はOSで、BIG-IPの場合はTMOS(Traffic Manager Operating System)と呼ばれる。

一般的にハードウェアのサポートは長期間に渡るが、ソフトウェアのサポートは数年となるため、定期的なバージョンアップが推奨される。

◆SOL4309: F5 platform life cycle support policy ←HWサポート期限
https://support.f5.com/kb/en-us/solutions/public/4000/300/sol4309.html

◆SOL5903: BIG-IP software support policy ←SWサポート期限
https://support.f5.com/kb/en-us/solutions/public/5000/900/sol5903.html

◆SOL3225: F5 End of Life policy
https://support.f5.com/kb/en-us/solutions/public/3000/200/sol3225.html

Microsoft

Microsoftは5年のメインストリームサポートと、さらに5年の延長サポートがあり、合計10年のサポートで構成されている。また、Service Packは別途Service Packサポートがあり、「次のService Packのリリース後の24ヶ月後または、その製品のサポート終了」までがサポート期限となる。

◆サポート ライフサイクル検索
https://support.microsoft.com/ja-jp/lifecycle/search

◆マイクロソフト サポート ライフサイクル ポリシー
https://support.microsoft.com/en-us/gp/lifecycle/ja#gp/gp_msl_policy/ja

Red Hat Enterprise Linux

RHELは以下URLにサポートポリシー含めて、綺麗にまとまっている。以下のように細かくサポートのフェーズが分割されている。

・運用フェーズ 1 (約 5 年半)
・運用フェーズ 2 (約 1 年)
・運用フェーズ 3 (約 3 年半)
・延長ライフフェーズ (未定)

◆Red Hat Enterprise Linux のライフサイクル
https://access.redhat.com/ja/support/policy/updates/errata

◆Red Hat Enterprise Linux Life Cycle(上記の英語版)
https://access.redhat.com/support/policy/updates/errata

VMware

VMwareはPDFで全製品のEOS一覧が提供されている。

◆VMware Lifecycle Product Matrix
http://www.vmware.com/files/jp/pdf/support/Product-Lifecycle-Matrix.pdf

◆VMware サポート ポリシー
http://www.vmware.com/jp/support/policies/lifecycle

ARCserve

CA社から独立してARCserve社となった。以下URLで確認できる。

◆CSP サポート対象製品一覧表
http://www.arcserve.com/jp/lpg/jpsupport/csp/productlist.aspx

◆CSP サポート対象製品一覧表(サポート終了)
http://www.arcserve.com/jp/lpg/jpsupport/csp/eos.aspx

SUSE Linux Enterprise

使ったことは無いがSUSEも調べてみた。一般サポートと拡張サポートで合計13年がサポート期間となる。

◆Lifecycle Dates by Product
https://www.suse.com/lifecycle/

◆サーバプラットフォーム製品サポートライフサイクルのポリシーと定義
https://www.suse.com/ja-jp/support/policy.html

2015年4月16日木曜日

sudoまとめ

rootにsuしなくても特権コマンドを実行できるようにするsudoの設定方法や小ネタまとめ。

設定方法

例えば、sudogroupというグループを作って、以下の様な条件で設定を行うことにする。
  • sudogroupグループに属するグループのみsudo許可
  • su以外の全てのコマンドをsudo可能にする。suを除外する理由は、suで別ユーザーにスイッチできてしまうことを防ぐため
それでは、以下で設定を実施していく。

①まずはsudoできるグループとして適当にsudogroupという名前でグループを作成する。普通のコマンドで作成すれば良い。

 groupadd sudogroup

②適当にユーザーも作っておく。

 useradd -g sudogroup testuser

③visudoにて以下の2行を最後に追加。なお、sudoの設定ファイルは/etc/sudoersとなるが、visudoコマンドで編集することが推奨される(sudoersファイルのパーミッション変更や保存時の構文チェック機能がある)。

 Cmnd_Alias SU = /bin/su
 %sudogroup ALL = (ALL) ALL, !SU

※ちなみに構文にエラーがあると、:wqでvisudoを閉じた後にエラーが表示される。以下はCmnd Aliasで指定されていないエイリアス名"SU"を指定した際のエラー例
 visudo: Warning: Host_Alias `SU' referenced but not defined
 visudo: Warning: Cmnd_Alias `SU' referenced but not defined

④visudoの変更を保存して閉じた時点で設定が反映されるので、試しにsudo使って/root配下にlsできることを確認してみる。

 $ ls /root/
 ls: cannot open directory /root/: 許可がありません

 $ sudo ls /root/
 [sudo] password for testuser:   ←★自身のパスワードを入力
 httpd-2.2.15-9.el6.x86_64.rpm
 httpd-tools-2.2.15-9.el6.x86_64.rpm
 install.log
 install.log.syslog

またsudo suも実行できない。

 $ sudo su
 [sudo] password for testuser:   ←★自身のパスワードを入力
 Sorry, user testuser is not allowed to execute '/bin/su' as root on RHEL6_HOST.

ちなみに、このままだと普通にsu("sudo su"ではなく"su"単体での利用)は使えるので、/etc/pam.d/suで一般ユーザーがsuできないよう設定しておくと良い。

 # vi /etc/pam.d/su
 auth            required        pam_wheel.so group=wheel


初回sudo時に表示されるエラーについて

初回sudoを実行すると、以下メッセージが表示される。
<原文>
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

<適当な日本語訳>
あなたがシステム管理者から通常のレクチャーを受けていると信じている。要約すると次の3点になる。

#1 他人のプライバシーを尊重せよ
#2 コマンドを打つ前に考えよ
#3 大きな力を持つことは大きな責任を持つということ
これは別に設定をミスっているというものでは無く、sudoデフォルトの注意事項のようで、sudoやるときは特権コマンドを実行できるから、責任の重さを噛み締めよ、ということらしい。

sudoしたコマンドの結果をリダイレクトしても書き込めない問題

sudoしてもリダイレクト処理はrootではなくもとのユーザーの権限になってしまうので、リダイレクト先のディレクトリに書き込み権限が無いとエラーになる。例えば、以下の様なコマンドは書き込みに失敗する。

 $ sudo ls /root > /root/ls_root.txt

回避するには以下のようにすれば良い。

 bash -c "<実行コマンド文字列>"
  例:sudo bash -c "ls /root > /root/ls_root.txt"

bashの-cオプションは、実行するコマンドをその後の文字列から読み込むという処理を表す。


2015年4月8日水曜日

正規表現の動作を手軽に検証する方法

Linuxのシェルスクリプトを作る時などで、正規表現を使えるとロジックが綺麗になる場合があるが、正規表現が頭の中で組み立てたものが、果たして想定通りの動きをしてくれるか不安になることが多い。

はじめはLinuxで検証用のスクリプトでも作ろうかと思ったのだが、よく考えたら正規表現を使えるコマンドがPower Shellにあるので、それを使えばお手軽に端末で正規表現の検証をできることに気がついたので、方法について記載する。

正規表現検証方法

例えば以下の様なテキストファイルを作るとする。ファイル名は適当に「test.txt」とする。

patternAAA01
patternBBB02
patternXXX003
patternYY04
patternZZZ5
ApatternCCC06

この中から「pattern + 英字大文字3文字 + 数字2桁」の条件で抜き出せる正規表現を考えていくことにする。

まず考えた正規表現は以下の通りになったとする(先に言ってしまうと、これでは最適な結果は得られない)。

<正規表現>
pattern[A-Z]{3}\d{2}

これを検証する方法は、別記事で書いた「Windows標準コマンドでgrepする」で記載した"Select-String"コマンドレットを使えば良い。"-Pattern"のオプションを使えば正規表現での検索が使える。

<コマンド>
Select-String .\test.txt -Pattern "pattern[A-Z]{3}\d{2}"

<結果>
test.txt:1:patternAAA01
test.txt:2:patternBBB02
test.txt:3:patternXXX003
test.txt:6:ApatternCCC06

上記の結果の通り、No3とNo6が余計に引っかかってしまった。改良して以下の正規表現にしてみる。

<正規表現>
^pattern[A-Z]{3}\d{2}$

<コマンド>
Select-String .\test.txt -Pattern "^pattern[A-Z]{3}\d{2}$"

<結果>
test.txt:1:patternAAA01
test.txt:2:patternBBB02

想定通りの動作となる正規表現であることが確認できた。

参考URL

.NET Framework の正規表現
https://msdn.microsoft.com/ja-jp/library/hs600312(v=vs.110).aspx

正規表現言語 - クイック リファレンス
https://msdn.microsoft.com/ja-jp/library/az24scfc(v=vs.110).aspx


2015年4月2日木曜日

VMwareの互換性確認方法

VMware製品も多種多様になってきて、各種HW・SWのバージョン互換性を確認する機会がますます増えるようになった。バージョン互換性を確認する方法で最も簡単なものは、VMwareが提供しているCompatibility Guideを確認することだ。

昔はPDFで提供されていたものは、今は最新情報を随時Web上で確認できるようになっている。ガイドも多様化しているので、「何が検索できるか」を簡単に調べたので記載する。

VMware Compatibility Guide

http://www.vmware.com/resources/compatibility/search.php

VMware製品と各種HW(CPU、サーバー製品、ストレージ製品、IOデバイス)の互換性確認や、対応仮想OSの確認などができる。略称VCG。


画面上部にある「Search Compatibility Guide」に検索ワードを指定して検索すること方法が手っ取り早い。

「What are you looking for」から検索ツールが選べるが、以下の様なものがある。

・Systems / Servers : サーバー製品との互換性確認
・IO Devices : IOデバイス(NIC、HBA)製品との互換性確認
・View : VMware Horizon Viewの互換性確認
・Storage/SAN : ストレージ製品との互換性確認
・Guest OS : 各VMware製品と対応仮想OSの確認
・Host OS : 現在はガイドから削除。以下KB参照とのこと
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2100429


VMware Product Interoperability Matrixes

http://www.vmware.com/resources/compatibility/sim/interop_matrix.php

VMware製品の各バージョンと各製品の互換性を確認することができる。


上の画面キャプチャではvCenter Server 5.1と管理対象とできるESX一覧を表示した。緑マークがあれば互換性ありということになるが、場合によっては制約事項があるので、マウスオーバーしてコメントを確認した方が良い。画面キャプチャでは、ESXi 5.1 U1の場合は、vCenter Server 5.1.0aと互換性がある旨記載がある。大抵は何らかのBug対応で制約事項があったりする。

Configuration Maximum

(英語) http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003497
(日本語) http://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2096917

これは昔からPDFで提供されている。URLで示したKBがリンク集になっており、英語と日本語がある。当たり前だが英語の方が更新が早い。

また、「構成の上限」という名前でPDF自体も日本語化されている場合がある。URLはバージョンによって異なるので、以下にまとめてみた。残念ながら現時点では6.0の日本語PDFは存在しないようだ。

http://www.vmware.com/files/jp/pdf/vsphere-55-configuration-maximums.pdf
http://www.vmware.com/files/jp/pdf/vsphere-51-configuration-maximums.pdf
http://www.vmware.com/files/jp/pdf/vsp_50_config_max_ja.pdf
http://www.vmware.com/files/jp/pdf/support/VMware-vsp_41_config_max-PG-JP.pdf




2015年4月1日水曜日

vmware.logが"can't open 'vmware.log': Device or resource busy"でコピーや閲覧ができない

ESXi Shellにログインして仮想マシンがパワーオンの状態のvmware.logをcatで見ようとしても、以下エラーが出力され閲覧でいないことがある。

   can't open 'vmware.log': Device or resource busy

仮想マシンパワーオフであれば当たり前のように見ることができる。パワーオンの仮想マシンであっても、vmware.logを閲覧する回避策(という程のものでも無い)を記載する。

vSphere Clientのデータストアブラウザからダウロードする

最も手っ取り早い方法はvSphere Clientにログインし、データストアブラウザ使って端末にvmware.logをダウンロードする方法。ダウンロードはパワーオンの仮想マシンでも実施可能だし、ログは端末のエディタ等で見れる。通常はこの方法で実施すれば問題ない。

仮想マシンが稼働するESXiのShellにログインして閲覧する

VMware環境の場合、1つのデータストアを複数のESXサーバーにてマウントして利用することが普通なので、どのESXサーバーからも仮想マシンのファイルにアクセスができてしまう。しかし、現在出力中のvmware.logは、その仮想マシンが稼働しているESXにてロックされているため、他ESXサーバーからアクセスするとエラーが出る。

なので、対象の仮想マシンが稼働しているESXiにログインすれば、vmware.logを閲覧することはできる。

2015年3月29日日曜日

仮想マシンのスナップショットのオプション

VMwareの仮想マシンスナップショットだが、オプションが2つある。これらの違いを調べてみた。というかほとんど参考URLのKBに記載されているので、それの補足的な情報になる。



パワーオフ仮想マシンのスナップショット

後述するが、上記2つのオプションは、パワーオン状態でなければ実施できない。逆にパワーオフ状態の仮想マシンの場合は、ディスクのスナップショットが取得されるだけであり、ファイル名としては以下が作成される。

◆vSphere Clientのデータストアブラウザで確認した場合
<VM名>.vmdk   ←元の仮想ディスク
<VM名>-000001.vmdk   ←差分ファイル
<VM名>.vmsd   ←スナップショットのメタデータ
<VM名>-Snapshot<番号>.vmsn   ←メモリのスナップショット情報(28KB程度と非常に小さい)

データストアブラウザで見えるファイル名と実体はのファイル名は実は異なる。実体のファイル名は以下の通りになる。以降は実体のファイル名で記載する。

◆ESXで直接確認した場合
<VM名>-flat.vmdk   ←元の仮想ディスク
<VM名>-000001-delta.vmdk   ←差分ファイル
<VM名>.vmsd   ←スナップショットのメタデータ
<VM名>-Snapshot<番号>.vmsn   ←メモリのスナップショット(28KB程度と非常に小さい)

仮想マシンのメモリのスナップショット

その名の通り、仮想マシンのディスクだけではなく、メモリ情報もスナップショットを取る機能。メモリ情報なので、パワーオフの仮想マシンでは取得不可(オプションを選択できない)。

メモリ情報も含めて保存されているので、この機能を用いたスナップショットを復元した場合は、仮想マシンはパワーオンの状態で戻る(逆に言えばこのオプションを有効にしない場合のスナップショットの復元後はパワーオフで戻る)。

この処理はメモリのスナップショットを取得するため、割り当てメモリが大きい程時間を要し、ストレージのパフォーマンスにもよると思うが、メモリ6Gの仮想マシンで5分程度掛かった。

ファイルとしては以下ファイルが大きくなるのが違い。

<VM名>-Snapshot<番号>.vmsn   ←メモリのスナップショット(メモリと同程度(6GB))


静止ゲストファイルシステム(VMware Toolsのインストールが必要)

VMware Toolsが仮想マシンのOSのディスク静止点を確保してスナップショットを取得する機能。VMware Toolsの起動が条件となるため、パワーオフの仮想マシンでは取得不可(オプションを選択できない)。

この機能は、VMware ToolsがWindowsのVSS(ボリュームシャドウコピーサービス)やSyncドライバなる機能と連携して、ファイルシステムレベルでのデータの静止点を確保してからバックアップを取得するという機能となる。実際にWindowsの仮想マシンで本オプションを有効にしてスナップショットを取得すると、仮想マシンのアプリケーションイベントログに以下のようなVSS関連のログが出力されていた。

 ソース:ESENT
 説明:lsass (672) シャドウ コピー インスタンス 2 を開始しています。
    これは、完全シャドウ コピーとなります。

メモリのスナップショットに比べれば時間は短く、20秒程度でスナップショット取得は完了した。

データストア上のファイルとしては以下ファイルが生成される。VSSのマニフェストファイルということで、VSSのメタデータが内容に含まれるらしい。

<VM名>-vss_manifests<番号>.zip

PowerCLIでスナップショットを取得する

スナップショット取得はNew-Snapshotコマンドレットを使う。メモリのスナップショット取得は"-Memory"、静止ゲストファイルシステムの取得は"-Quiesce"(※静止という意味)で指定する。両方取りたければ以下の通り実行する。$vmsnapに結果を代入している理由は、後で消したりする操作を簡単にするため。

$vmsnap = New-Snapshot -VM "VM_Name" -Name "Temporary Snapshot" -Memory:$true -Quiesce:$true

蛇足だが、スナップショットを削除する場合は以下を実行。削除処理は確認プロンプトが表示されるので、"-Confirm:$false"で表示させないようにする。

Remove-Snapshot -Snapshot $vmsnap -Confirm:$false

参考URL

VMware ESX の仮想マシンのスナップショットについて (1033239)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1033239

vSphere PowerCLI Reference : New-Snapshot
https://www.vmware.com/support/developer/PowerCLI/PowerCLI51/html/New-Snapshot.html
2015年3月25日水曜日

OSのネットワーク(TCP)のタイムアウト値とディスクのタイムアウト値

OSのタイムアウト値を覚えておくと、障害設計や障害発生時に役立つ。例えば、ストレージのコントローラー障害でI/Oが1秒止まった場合の影響有無を考えた場合、ディスクタイムアウト値が1秒以上であれば、I/Oが再開されるので「影響無し」と判断することができたりする。

これはネットワークも同様に考えることができる。ということで、OSのネットワークとディスクのタイムアウト値を調べてみた。

ネットワーク(TCP)のタイムアウト値

Windowsの場合

再送回数に関しては、デフォルト5回との情報がMicorosoftのKBにあるが、5回ではなく3回との情報も多く存在し正しい情報がよくわからない状況。そこで、実際にWiresharkでパケットキャプチャしつつ、Telnetクライアント使ってSYNパケットの再送回数とタイムアウト時間(接続を諦める時間)を確認してみた。


タイムアウト時間の初期値は3秒、再送回数は2回のようだ。

つまりWindowsの場合、タイムアウトしてしまう最大の時間は、

 0秒(最初のSYN)
 +  3秒(1回)
 +  6秒(2回)
 + 12秒(タイムアウト)
 = 21秒

となる。

Linuxの場合

仕組みはWindowsと同じで初期値3秒でリトライ毎に時間が倍々になっていく。リトライ回数は以下で設定されている。

   /proc/sys/net/ipv4/tcp_syn_retries

このファイルをcatで見ると、デフォルトでは"5"になっているようだ。

つまりLinuxの場合、タイムアウトしてしまう最大の時間は、

 0秒(最初のSYN)
 +  3秒(1回)
 +  6秒(2回)
 + 12秒(3回)
 + 24秒(4回)
 + 48秒(5回)
 + 96秒(タイムアウト)
 = 189秒

となる。

ディスクのタイムアウト値

Windowsの場合

以下レジストリキーで設定されている。
HKEY_LOCAL_MACHINE¥System¥ CurrentControlSet¥Services¥Disk¥TimeOutValue
デフォルト:60秒 (Windows Server 2008 R2、Windows7、Windows 8.1環境で確認)
※レジストリキーの場所だが、"Disk"が"disk"の場合も有り



Linuxの場合

若干乱暴だが以下コマンドで調べることができるようだ。

   # cat /sys/block/sd*/device/timeout
   180

ディスクタイムアウトは180秒であることがわかる。これは後述するが、仮想マシンのVMware Toolsをインストールした際に変更されている。バージョン毎にデフォルト値は違うようだが、手元にあったCentOS 5.9 64bit (kernel:2.6.18-348)で確認した場合は、60秒であった。

仮想環境の場合

仮想環境では、1つのストレージに対し複数の仮想マシンのI/Oが発生するという特異な環境であることから、ストレージのパフォーマンスが安定しないことがある。そのため、VMware Toolsをインストールする際に、タイムアウト値が高めになるよう設定変更されるようだ。

変更される値は以下の通り。

   Windows:60秒 (デフォルトと変化無し)
   Linux:180秒


参考URL

TCP/IP の再送タイムアウトの最大値を変更する方法
https://support.microsoft.com/en-us/kb/170359/ja

ディスクが SAN データストアに配置されていると、Windows 仮想マシンのパフォーマンスが不安定になる (2080692)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2080692

Linux 2.6 仮想マシンのディスク タイムアウト値を増やす (2076978)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2076978




2015年3月19日木曜日

PDFのパスワードを解除して保存し直す方法

パスワード付きPDFっていちいち開くのが面倒だし、将来的にパスワードを紛失して開けなくなってしまうリスクがあるので、解除して保存することが多い。

基本的な方法としては、以下の流れで解除を実施する方法が多い。
1. PDFを開く
2. 印刷
3. 印刷データをPDFに変換するソフトに流す
3の「印刷データをPDFに変換するソフト」については、PrimoPDFやCubePDFといったフリーソフトが有名なようだが、PDFの内容によっては変換が上手く行かずエラーになってしまったり、容量が大きくなってしまったりすることがあるのが難点だった。

実際にCubePDFをインストールして、とある資料のパスワードを解除してPDFにしようとしたら、エラーが出て失敗してしまった。

そこで、Google Chromeの出番である。以下の流れで実施すると、画質・容量共に原本と遜色ないサイズにて出力することができた。
1. Google Chromeを開く
2. 該当のPDFをChromeへドラッグ&ドロップ
3. 印刷
4. 「PDF」に保存
PDF変換ソフトで上手く行かない場合は試してみると良いかも。

2015年3月14日土曜日

vmware.logが肥大化する不具合と確認方法 (VMware KB:2078823)

事の発端は以下のKBになる。最新パッチ当てれば直る不具合ではあるが、vmware.logに合計500文字程度のログが1秒に1回出力されるという不具合となる。

Virtual machine with multiple user login session fails with the error: GuestRpc: Channel X, conflict: guest application toolbox-dnd tried to register, but it is still registered on channel Y (2078823)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078823

この不具合自体は仮想マシンの動作に影響は無いようなので問題にはならないが、ログがそこそこ大きくて、500文字(Byte) x 3600秒 x 24時間 = 41MBが毎日vmware.logに出力されることになり、放っておくとデータストアの容量逼迫に繋がる可能性がある。

解決方法はKBに乗っているので割愛するとして、この事象の発生条件、確認方法などは調べたので記載する。

発生条件

vmtoolsdが3プロセス以上起動すると発生する。このvmtoolsdだが、OS起動時に1個プロセスが立ち上がり、さらにユーザーがOSのGUI画面にログインする毎に1個増えて、ログオフすると消える仕様のようである(Linuxのssh接続ではvmtoolsdは増えないようだ)。

GUI画面にログインするという条件から、特にWindowsで起きやすい。なぜかというと、通常Windows Serverでは、標準機能で2ユーザーの同時ログインを許可してしまうからである。なので、Windows Serverにログインした後、ログオフをきちんとしない(例えばRDPを「×」ボタンで閉じる)と、いつの間にか発生条件を満たしてしまい、そのまま長い期間放置してしまいログが肥大化してしまうことに繋がる。

確認方法

まずvmware.logの仕様だが以下の通り。ログを出力させないことや保存世代の変更はvmxファイルを修正すればできるようだ。
  • 仮想マシンのONのタイミングでローテートされる
  • デフォルトで6世代(vmware.log、vmware-xx.log x 5世代)保存

vmware.logは仮想マシンの保存ディレクトリ毎に作られるので、1つ1つデータストアブラウザで確認するのはとても手間なので、直接ESXi Shellにログインして、コマンドで確認すれば手っ取り早い。

単純なコマンドは以下の通り。
ls -lhS /vmfs/volumes/*/*/vmware*.log
データストアは /vmfs/volumes配下にUUID名のディレクトリが実体として存在するが、同ディレクトリにはシンボリックリンクでデータストア名ので名付けられたリンクも存在する。従って、上記コマンドで確認すると全てのログが2重で表示されて見づらくなる。

表示を絞りたければ以下の通りgrepすれば良い。

データストア名で表示

ls -lhSL /vmfs/volumes/*/*/vmware*.log | grep -v -e '/vmfs/volumes/.\{8\}-.*/'

-rw-r--r--    1 root     root     1006.2M Mar 11 07:14 /vmfs/volumes/DatastoreA1/VM1/vmware.log
-rw-r--r--    1 root     root      312.0M Mar 11 07:14 /vmfs/volumes/DatastoreA1/VM2/vmware.log
-rw-r--r--    1 root     root        6.8M Jan 15 09:10 /vmfs/volumes/DatastoreA1/VM3/vmware-8.log
-rw-r--r--    1 root     root        2.4M Jul  8  2014 /vmfs/volumes/Datastore01/VM4/vmware-27.log

UUIDで表示

ls -lhSL /vmfs/volumes/*/*/vmware*.log | grep -e '/vmfs/volumes/.\{8\}-.*/'
-rw-r--r--    1 root     root     1006.2M Mar 11 07:15 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM1/vmware.log
-rw-r--r--    1 root     root      312.1M Mar 11 07:14 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM2/vmware.log
-rw-r--r--    1 root     root        6.8M Jan 15 09:10 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM3/vmware-8.log
-rw-r--r--    1 root     root        2.4M Jul  8  2014 /vmfs/volumes/51d55cb3-dbe9bff0-0eeb-d89d6714e6d5/VM4/vmware-27.log

参考URL

VMware ESX/ESXi を操作するときのディスクの識別 (2078761)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078761

vmware.log のログ ローテーションとログ オプション (2077202)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2077202
2015年3月12日木曜日

Tera TermでDCUIを使う方法

DCUI(Direct Console User Interface)はESXサーバーに直接ログインしなければ使えないと思っていたら、実はESXi Shellからも呼び出して使えるらしい。

参考URLに全て記載されているが、以下のコマンドで使える。直接ログインして使うDCUIの場合は「Alt + F1」でESXi Shellを呼び出すが、この場合は「Ctrl + C」なので注意。

# dcui

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x                                                                              x
x                                                                              x
x                                                                              x
x                                                                              x
x       VMware ESXi 5.1.0 (VMKernel Release Build 2000251)                     x
x                                                                              x
x       HP ProLiant DL360p Gen8                                                x
x                                                                              x
x       Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz                               x
x       32 GiB Memory                                                          x
x                                                                              x
x                                                                              x
x       Download tools to manage this host from:                               x
x       http://esx01/                                                          x
x       http://192.168.100.1/ (STATIC)                                         x
x                                                                              x
x                                                                              x
x                                                                              x
x                                                                              x
x                                                                              x
x                                                                              x
x <F2> Customize System/View Logs                      <F12> Shut Down/Restart x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

# <- Ctrl + Cで戻る

参考URL

Accessing Direct Console User Interface (DCUI) from an SSH session (2039638)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2039638


2015年3月10日火曜日

Workgroup環境でのWindowsの時刻同期の設定方法

Linuxはntpd使って同期設定をきちんとしてあげれば高い精度で時刻を維持してくれるが、Windowsを使って、特にドメインに所属しないで使うWorkgroup環境の場合は、Windows Timeサービス(=W32Time)をデフォルトの設定で使うだけでは、イマイチな精度でしか同期されない。

Windows Timeサービスの仕様と精度を上げる方法について記載する。

Windows Timeサービス(W32Time)の仕様

まず、前提としてMicrosoftのKB939322から以下の文言を引用する。
ネットワーク上のノード間の W32Time サービスの精度は、保証およびサポートされません。W32Time サービスは、時間が重要となるアプリケーションのニーズを満たす完全な機能を備えた NTP ソリューションではありません。W32Time サービスは、主に次の手順を実行するように設計されています。

・Kerberos v5 認証プロトコルが正しく動作するようにします。
・クライアント コンピューターに緩やかな同期時刻を提供します。

W32Time サービスは、1 ~ 2 秒の範囲で同期時刻を確実に維持できません。このような許容誤差は、W32Time サービスの設計仕様に含まれていません。

ntpdの発想とは全く異なることがわかると思うが、簡単に言うと数秒のずれは平気で起きるし、Kerberos認証の時刻のずれの許容時間は5分なので±5分のずれは許容するということ。この発想を考えると、間違ってもWindows ServerをNTPの時刻参照先サーバーとして構築などしてはいけない。

また、Active Directory環境とWorkgroup環境で時刻同期の内容も異なるので、以下に違いを記載する。

Workgroup環境

「タスクスケジューラ」→「タスクスケジューラ ライブラリ」→「Micrsoft」→「Windows」→「Time Synchronization」に「SynchronizeTime」というタスクがあり、以下の通りとなっている(※Windows7の場合)。
・トリガー:2005/1/1以降毎週日曜日、1:00に起動
・操作:%windir%\system32\sc.exe start w32time task_started
・オプション:スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する
つまり、日曜1:00または、日曜1:00を過ぎた初回起動時に一度同期するがその後は次の日曜1:00まで同期しない。はっきり言って、Windows標準設定では時刻同期にやる気は無い。また、sc.exe start w32time task_startedの"task_started"の意味はw32timeのサービスを開始して同期が取れたら自動でサービスを停止する引数となり、同期を取ったらサービスは停止状態になる。

さらにもう1つ面倒な設定が存在する。それが「トリガーサービス」となる。トリガーサービスは、サーバー起動時に動作する機能で、その際のシステムの状態をトリガーにしてサービスの起動・停止を判断して実行する機能となる。w32tmの場合は以下の通り設定されている。
・ドメイン参加:w32tmサービス開始
・ドメイン非参加:w32tmサービスを停止
ドメイン非参加のWorkgroup環境では、トリガーサービスによりサービスが起動していても停止されてしまう。

Active Directory環境(概要)

今回はWorkgroup環境の説明がメインなので概要だけ。

Active Directoryでは、ドメインへのログイン認証にKerberos認証を使うためドメインコントローラーとメンバー間で時刻のズレを±5分に抑える必要がある。そのため、ドメインコントローラーとメンバー間では以下の通り同期が機能する。
1. ドメインコントローラーのPDCエミュレーターがドメインのタイムサーバーとなる
2. 他のドメインコントローラーはPDCエミュレーターのドメインコントローラーと同期する
3. メンバーはログイン先のドメインコントローラーと同期する
さらに同期間隔もWorkgroup環境のように週1回ということはなく、もっと短い間隔(1時間に1回)で行われるようだ。

Workgroup環境でも精度をそこそこ上げる方法

以下の観点で精度を上げる。
1. W32Timeサービスを常に開始状態にする
2. トリガーサービスを停止する
3. 同期間隔を短くする
4. (おまけ)時刻のズレを確認するコマンドを覚えておく
順番に対応しよう。

1. W32Timeサービスを常に起動させておく

「サービス」の画面で「Windows Time」を「手動」→「自動」または「自動 (遅延開始)」に変更する。

※なお、「自動 (遅延開始)」にすればトリガーサービスによるW32Timeサービス停止が処理された後に開始されるため、「2. トリガーサービスを停止する」を実施しなくても、サービスは開始状態で維持できる可能性があるが、タイミングの問題で上手くいかないこともあり得るので、オススメはできない

2. トリガーサービスを停止する

参考URL(http://support.microsoft.com/kb/2385818/ja)に記載の方法で停止する。
sc triggerinfo w32time delete   ←設定削除コマンド
sc qtriggerinfo w32time      ←確認コマンド
なお、タスクスケジューラの「SynchronizeTime」のタスクについては、W32Timeサービスが開始状態であれば、そもそも動作しない(サービスは既に起動している旨のメッセージが出るだけ)になるため、特に対応は不要となる。

3. 同期間隔を短くする

以下レジストリをいじる。
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥TimeProviders¥NtpClient\

SpecialPollInterval (REG_DWORD)
604800→3600 (10進数)
※604800秒(7日間)→3600秒(1時間)に変更
設定を確認するコマンドは以下の通り。
w32tm /query /configuration

4. (おまけ)時刻のズレを確認するコマンドを覚えておく

ntpdであればntpq -pのようなコマンドを覚えておくと同期状態が確認できて便利。
w32tm /monitor /computers:[タイムサーバー]   ←時刻のズレを確認するコマンド

C:\>w32tm /monitor /computers:192.168.100.100
192.168.100.100[192.168.247.100:100]:
    ICMP: 1ms 遅延
    NTP: -0.1615824s ローカル コンピュータの時刻からのオフセット        RefID: 'LOCL' [0x4C434F4C]
        階層: 1
前述のとおり、そもそもW32Timeに正確な時刻同期を求めるのも酷なので、とりあえず同期処理が成功していることを確認するのであれば、以下コマンドでもOK。
w32tm /query /status      ←前回の同期状況を確認するコマンド

閏インジケータ: 0 (警告なし)
階層: 2 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0312500s
ルート分散: 0.5493823s
参照 ID: 0xC0A8F73B (ソース IP:  192.168.100.100)
最終正常同期時刻: 2015/03/09 21:07:46ソース: 192.168.100.100,0x9
ポーリング間隔: 15 (32768s)

---

w32tm /query /status /verbose   ←詳細表示

閏インジケータ: 0 (警告なし)
階層: 2 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0312500s
ルート分散: 0.5493823s
参照 ID: 0xC0A8F73B (ソース IP:  192.168.100.100)
最終正常同期時刻: 2015/03/09 21:07:46ソース: 192.168.100.100,0x9
ポーリング間隔: 15 (32768s)

フェーズ オフセット: -0.0504310s
クロック レート: 0.0156252s
State Machine: 2 (同期)
タイム ソース フラグ: 0 (なし)
サーバーのロール: 0 (なし)
最終同期エラー: 0 (コマンドは正しく完了しました。)最終正常同期時刻からの時間: 2022.3559758s

参考URL

高精度の環境に向けた Windows タイム サービスの構成を目的とするサポート範囲
http://support.microsoft.com/kb/939322/ja

Windows Server 2008 の Windows タイム サービスとこれにより発生するインターネット通信
https://technet.microsoft.com/ja-jp/library/cc731790%28v=ws.10%29.aspx

Windows 7 および Windows Server 2008 R2 のスタンドアロン環境で Windows Time サービスが自動的に起動しない
http://support.microsoft.com/kb/2385818/ja

2015年3月7日土曜日

Excelで空行を飛ばして上にある数字+1する数式

タイトルだけみると何のことかわかりづらいが、要するに以下の様な動作をする数式となる。空行や文字列のセルは無視して、該当セルの直前にある数字を見つけて、その数字をインクリメントする数式で、飛び飛びで連番を作る必要がある場合に便利。


数式は以下の通り。長くてわかりづらいので、分解して説明する。
=INDEX(INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)),MATCH(MAX(INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)))+1,INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)),1))+1

数式で使用している関数の説明

まず使っている数式の説明。

INDEX関数

INDEX(配列, 行番号, 列番号, 領域番号)
説明:配列で指定した場所から(行番号, 列番号)の位置にある情報を取り出す関数。例えば、図で示したExcelシートの場合、「=INDEX(A1:A4, 3, 1)」とすれば、A3にある数字「2」が返ってくる。

ROW関数

ROW(参照)
説明:ROW()とするとExcelの行番号を返す関数。

COLUMN関数

COLUMN(参照)
説明:COLUMN()とするとExcelの列番号を返す関数。

ADDRESS関数

ADDRESS(行番号, 列番号, 参照の型, 参照形式)
※「参照の型」は以下の通り。
 1:絶対参照(例:$A$1) (※省略時)
 2:行は絶対、列は相対(例:A$1)
 3:行は相対、列は絶対(例:$A1)
 4:相対(例:A1)
※「参照形式」は以下の通り。
 1:A1形式 (※省略時)
 0:R1C1形式
説明:行番号と列番号を指定すると、セルの場所を文字列として表示する関数。例えばA5のセルに「=ADDRESS(ROW()-1,COLUMN(),4,1)」と入れれば「A4」という文字列が返ってくる。

INDIRECT関数

INDIRECT(参照文字列, 参照形式)
※「参照形式」は以下の通り。
 1:A1形式 (※省略時)
 0:R1C1形式
説明:参照文字列にExcelの数式を入れると、文字列ではなく数式として処理する関数。

MATCH関数

MATCH(検査値, 検査範囲, 照合の型)
※照合の型
 1:検索値以下の最大の場所を返す(正しく使う場合、値は昇順で並べておく)
 0:検索値に等しい最初の場所を返す
 -1:検索値以上の最小の場所を返す(正しく使う場合、値は降順で並べておく)
説明:検査範囲から検査値の値を検索し、相対的な場所を返す関数。

数式を分解して説明

A14のセルに本数式を入れた場合で考えてみる。
=INDEX(INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)),MATCH(MAX(INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)))+1,INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)),1))+1
まず、ADDRESS関数を変換してみる。
=INDEX(INDIRECT(A1):INDIRECT(A13),MATCH(MAX(INDIRECT(A1):INDIRECT(A13))+1,INDIRECT(A1):INDIRECT(A13),1))+1
INDIRECT関数にて文字列を数式として扱うよう変換する。ここでだいぶスッキリする。
=INDEX(A1:A13,MATCH(MAX(A1:A13)+1,A1:A13,1))+1
MAX関数を計算する。最大値はA7の"4"になるため、4+1=5になる。
=INDEX(A1:A13,MATCH(5,A1:A13,1))+1
MATCH関数を計算する。ここがミソで、検索値は最大値+1の"5"となり、検索範囲において一致する値は絶対に無いことになる。この場合、MATCH関数では「検索値以下の最大の行の位置」が返されるので、結果的に"10"行が返ってくることになる。
=INDEX(A1:A13,10)+1
INDEX関数を最後に計算して完了。A10に入っている"1"の値が取り出され+1されることになる。
=A10+1=1+1=2

もうちょっとシンプルなやつ

単純に連番にするだけなら、以下でもできる。単純な連番なので、途中で数字を1からリセットするような動きにはならないので注意。
=MAX(INDIRECT(ADDRESS(1,COLUMN(),4,1)):INDIRECT(ADDRESS(ROW()-1,COLUMN(),4,1)))+1

2015年2月27日金曜日

時刻同期先が2台の場合のntpdの設定方法

別記事でnptdの設定方法について調べた結果を記載したが、もう少し考慮が必要だった。具体的には時刻同期先の上位サーバーが2台の場合、特別な設定が必要だったことがわかった。

事象

ntpdは仕組みとして、同期先のサーバーの時刻の信頼性を見る仕組みがある。具体的には、万が一参照先の時刻が何らかの理由で時刻がずれた際に、その影響を受けることを回避するため、その時刻の信頼性を低いと見なして同期先候補から外すという動きをする。

その際に、「多数決」で同期先を選定する仕組みがあるのだが、同期先が2台の場合は多数決ができずに、全ての同期先を信頼性が低いと見なしてしまい、同期ができなくなる、ということが問題になる。
※RHELでは4台以上を同期先にすることを推奨している
※正確には単純な多数決ではない同期先決定のアルゴリズムがあるが、私も理解できていないので詳細は省略

回避策

それでも社内のNTPサーバーが2台しかない、等あればどうにかするしか無い。回避策は2つ。

trueオプションを付ける

これはRHELの推奨方法。ntp.confのserverのオプションで"true"と付けてやれば良い。なお、似たようなオプションに"prefer"がある。これらの違いは、ntp.confのmanページの記載を見れば書いてある。
prefer
このサーバを優先します。すべての他の要素が等しくても、このホストが同期のために選ばれます。 詳しくは 緩和ルールと prefer キーワード のページを参照ください。 このオプションは server と peer コマンドでのみ有効です。

true
このアソシエーションを正確な状態であると仮定します。つまり、選択アルゴリズムとクラスタリング アルゴリズムで必ず生き残ります。このオプションはどのアソシエーションでも有効ですが、 シリアルポート上の大きなジッターや精度 pulse-per-second (PPS) 信号をもつ参照クロックにとっては 最も有益です。
微妙にわかりづらい表現で書いてある。私の理解では、"prefer"は同期先候補のNTPサーバが複数あった場合に、このオプションを付けたサーバーを優先して同期先とする設定、"true"はそのサーバーの時刻を参照できる限り、そのサーバーを同期先とする設定となる。

同期先は2台の場合は全てのNTP同期先を正しいと判断できずに同期先候補から外すことが問題なので、"prefer"オプションではなく、"true"の設定が正しい。

同期先を1つにする

シンプルに同期先を1つにしてしまうということも一つの手だと思う。上位NTPサーバーの稼働率が良好で、時刻のずれも発生しないような環境であれば、特に問題ないと割り切る。


参考URL

2 台の NTP サーバーを、「プライマリ」および「バックアップ」に指定して使用することはできますか?
https://access.redhat.com/ja/node/441873

2015年2月23日月曜日

Windowsの各種GUIを開くコマンド

WindowsはGUIを使って操作するが、コントロールパネルを開くと大量のアイコンが出てきて設定したい項目を探すのに四苦八苦することがある。これはWindowsのバージョンが上がれば上がるほど探しにくくなる傾向にあると思う。

なので、比較的よく使う設定画面を呼び出すコマンドを調べたので記載する。「ファイル名を指定して実行」(Ctrl + R)にて実行すればGUIが表示される。
  • コントロールパネル
    control
  • サーバーマネージャー
    servermanager.msc
  • ローカルユーザーとグループ
    lusrmgr.msc
    Local USeR ManaGeRの略と思われる
  • サービス
    services.msc
  • イベントビューアー
    eventvwr
    ※なぜかこれは.mscを付けなくても良い
  • タスクスケジューラー
    taskschd.msc
  • リモートデスクトップ接続
    mstsc
    MicroSoft Terminal Services Clientの略と思われる
  • レジストリエディタ
    regedit
  • ディスクの管理
    diskmgmt.msc
  • ネットワーク接続
    ncpa.cpl
  • デバイスマネージャー
    devmgmt.msc
個人的にはeventvwrとmstscは良く使う。他にも使えそうなのがあったら随時追加しよう。

人気の投稿