RHEL7/CentOS7の仮想マシンをVMWareからHyper-Vに移行

/ Diary

image 

VMWare上に作成したRed Hat Enterprise Linux 7.3の仮想マシンをHyper-V上に展開しようとして結構ハマったのでメモ。
Linux自体の知識がほとんどないもので、説明の中で専門用語が使えてなかったり不適切だったりするかもしれませんがご勘弁を。

基本的に仮想マシンはファイルでやりとりしているので、一番手間のかからないStarWind V2V Converterを使って、仮想ハードディスクをコンバートしています。(*.vmdk → *.vhd or *.vhdx)
通常なら、Hyper-Vに新しい仮想マシンを作って、コンバートした仮想ハードディスクをマウントしてあげれば普通に使えるようになるのですが、今回に限ってはどうにもブートしてくれず。
正確にはブートはするのだけど、Linuxの起動ゲージが最後まで行ってハングってるような状態。
ディスクのコンバートがうまくいっていないのかしらん、とMicrosoft Virtual Machine Converter 3.0 (MVMC)を使ってみたりもしたのですが、ファイルベースのコンバートはやたら面倒だったのであまりオススメできず。まぁ、苦労してMVMCでコンバートしてみても結果は変わらなかったわけですが。

気を取り直して、ひとまずコンバートはうまくいっていると仮定して調べ直したところ、あれをやるべし、これをやるべし、といくつか特殊な操作が紹介されていたので、かたっぱしから試してみた結果、何とか正常にブートするようになったので、以下に手順を整理してみます。

まず、仮想ハードディスクをコンバートする前にLinux上で以下のコマンドを実行しておきます。たぶんrootユーザで実行すべし。
詳細はこちらのフォーラム(英語)に記述があります。

# CentOS 7 regenerate initramfs for Hyper-V
mkinitrd -f -v --with=hid-hyperv --with=hv_utils --with=hv_vmbus --with=hv_storvsc --with=hv_netvsc /boot/initramfs-$(uname -r).img $(uname -r)

上記の細工を施してから、仮想ハードディスクをvhdまたはvhdx形式にコンバートして新しく作成した仮想マシン(第1世代形式)にマウントします。
こちらではStarWind V2V Converterを使ってコンバートしましたが、他のコンバータでもおそらく問題ないかと思います。

次に5nine V2V Easy ConverterのREADMEに書かれていた操作を行います。
作成した仮想マシンを起動すると表示されるブートメニューのようなところで、「e」キーを押してgrub画面とやらに入ります。(上のスクショ参照)
もし、ここまで辿り着かないような状況だとすると、コンバートがうまくいっていないのかもしれませんが、いかんせん詳しくないので何とも…
ここで「set root=’*****」という行がどこかにあると思うので、その手前に「ata_piix.prefer_ms_hyperv=0」という呪文を入力します。
入力したら、Ctrl+xを押してそのまま起動してみると、あら不思議、正常に起動するようになりました。パチパチ。
ちなみにこの後、さらに「dracut -f」を実行すべし、という記述があったのですが、やってもやらなくても変化がよく分かりませんでした。

正直何をやっているのか全く分からなかったのですが、Linuxの初期RAMディスク(initrd)とやらが関係している操作のようです。
Linux使いってば、皆こんなややこしいことまで知っているのでしょうか。だとしたら素直に尊敬します…
ちなみに、RHEL6もVMWareからHyper-Vに移したことがあるのですが、このような問題は起きませんでした。


Windows 7とM.2 SSD

/ Diary

image

実に半年ぶりのエントリ。
珍しく長丁場なWPFアプリの開発仕事がようやく一段落したので、最近組んだプライベートのPCの話でもダラダラ書いてみます。

自宅のメインPCはWindows 7 UltimateのWindows Media Center(以下、WMC)を利用したテレビ兼用機なのですが、しばらく前からマザーボードの調子が悪いようでUSBやSATA端子の接触不良的な症状が頻発。
騙し騙し使うのにもいいかげん疲れてきたので、このたび一新することにした次第。
ただし、2台繋いでいるIOデータ製USBテレビチューナ(GV-MC7/VZGV-MC7/HZ3)がWMC専用品で、WMCでのテレビ視聴の使い勝手もすこぶる気に入っていることもあり(特にタイムシフト再生)、WMCが廃止されてしまったWin8.1やWin10にすることはできず、Win7のままいくことが条件。
単純にマザーボードだけ中古で調達して挿げ替えるという選択肢もないことはなかったのですが、どうせバラすなら新規に組みたくなるのが人情。
というわけで、最新のZ170マザーにSkylakeなCore i5を積んで、発売されたばかりのIntel SSD 600pというM.2 SSDを何となくチョイスしてみたのですが、この「何となく」のせいで厄介な事態が…

マザーボードはASRockのZ170 Extreme4で、Windows 7をインストールする場合は付属のツール(Win 7 USB Patcher)なるものを使ってUSBメモリにWindowsイメージを焼かないとダメなようでして、これは何とか余り物のSDカードを引っ張り出してきてUSBメモリ代わりに使って事なきを得たのですが、いざセットアップを始めると件のSSDが見えない、認識できません。
ドライバが必要と言われるので、Intelサイトを探すも対応しているNVMeドライバは今のところ提供されていない様子。
ちなみにこれを調べている段階でWin8.1やWin10にWMCを入れるというHackを見つけたので、SSDの動作確認がてら試してみたのですが、残念ながらチューナのドライバがどうにも入れられず断念。
Win8.1/Win10は標準でNVMeドライバを持っているので、SSD自体は問題なく認識され正常動作することは確認できました。

さらにあれこれ調べていると、600pというこのSSD、スピードも中途半端であまり評判良くなさげなことが判明。
組んでいたときはケーブルも要らないし場所も取らないので、こりゃええわ、などと思っていたのですが、いざ動かすとなかなかの発熱っぷりで寿命的なものも若干心配になります。(システムドライブだし)
まぁ、5年保証というのが多少気休めにはなるかもしれませんが、冷却対策無しで使っても大丈夫なのかやや不安が残ります。

されはさておき、ここに至りどうにもWin7が入れられないということになってきたので、ひとまずこの600pをシステムドライブにするのは諦めて、今後ドライバが出たら改めて置き換えればいいか、という判断のもと、SATA接続の普通の2.5インチSSDを追加調達。
これであっさりWin7の導入は完了し、チューナ等の動作確認もOK、という状態に。
この状態から、Win7にNVMeドライバを追加してくれるというKB2990941のHotfixをインストールすることにより、600pを認識させデータドライブとして利用可能な状態にすることに成功。
あれ、これなら普通にディスクコピーしたら600pからブートできるんじゃね?、ということでクローンソフトで600pにシステムイメージを丸ごとコピーして、UEFIで起動ディスクを600pに切り替えたらば、あっさり動いてしまいました。
こんなことなら、別にSATA SSDを調達しなくても、家に捨て置かれてる小容量HDDでも繋いでとりあえずWin7セットアップしてから、600pにコピーすれば良かったんじゃ、という事実に今更ながら気がついたのでありました… orz
まぁ、SATA SSDは他PCにも転用できるし、ギリギリセーフかな、などとむりやり納得してみたり。
いずれにしても結構面倒な感じではありますが、いまさらWin7というのがそもそもニッチなので仕方ないですね。

そんなこんなで、多少ごたついたものの、このたびのメインPC刷新作業は何とか無事に完了した次第。
ゲーム機も兼ねてたりするので、いずれビデオカードも搭載するつもりですが、今だとGTX 1070か1060辺りでしょうか、もう少し価格が落ち着いてきたら検討予定。
初めて窓付きのケースにしてみたので、ケースファンもLED付きにしてみました。
埃が溜まりやすい場所に設置しているので中の様子が見えると便利かも、という思惑ですが、果たして…


電子申請

/ Diary

珍しく会社の事務処理ネタを書いてみます。

会社における事務処理の中で公的なものといえば、税金(各種法人税、各種個人税)、社会保険(厚生年金、健康保険)、労働保険などがあり、それぞれについて様々な手続きがありますが、ここに挙げたものについては全て電子申請、すなわちインターネットを介しての手続きが可能となっています。
具体的にはe-Gove-TaxeLTAXといったWebサービスやデスクトップアプリを利用します。
これらはカードリーダーと電子証明書を用意すれば利用可能なので、ある程度PC操作ができる人ならば利用すること自体は実はそれほど敷居は高くありません。
むしろ膨大に存在する手続きの種類や申請書の数に目眩がしてしまってくじけるパターンのほうが多いかもしれません。
一応、ソフトウェア開発者としての意地というか単に手書きが嫌いというのもあって会社設立当初から利用しているわけですが、所詮は紙の代わりにネットを使うだけの話なので、記入する内容さえ分かればアプリ自体にさしたる問題はありません。
むしろ総務的な知識不足により「記入する内容」の意味不明さのほうが問題だったりするわけで、その辺をサポートするような親切なガイドでも付いていれば嬉しいのですが、基本的にはその筋のプロである税理士や社会保険労務士が使うことを想定しているのか、素人でも分かるようには作られていないのが残念。
まぁ、単純な計算ミスなどはチェックしてくれたりもするので、まっさらの定型紙におもむろに書くより少しはマシ、といった印象。
唯一、e-Taxのダイレクト納税機能だけはオンラインバンク契約をしていなくてもネットから即時振込できるので便利といえば便利です。(ただし、税務署への利用申請が別途必要)
それにしても、税金にしても各種保険にしても自分で弾きだした金額をお上に振り込むというのはなかなかシュールだな、と毎回思ったりします。
会社員の場合は自分で税金やら保険料を計算するシーンはほとんどありませんから。

そんなこんなで、かれこれ4年ほど利用している電子申請なのですが、2012年末に一度、年金事務所の電算センターのようなところから会社に電話がかかってきました。
一体何の用事かと思ったら、「e-Govで手続きした賞与支払届の電子証明書が法人用のものではないので受け付けられない」とのこと。
それまでは代表者個人の住民基本台帳カードを電子証明書として利用しており、普通に受け付けられていたのですが、実はこれはNGだったという話。
よくよく話を聞くと、会社の代表者が直接e-Govから申請してくるパターンは極端に少ないらしく、今まで見逃してしまっていたということらしい。
法人用の電子証明書の取得には安いところでも年間8000円程度かかりますので、年に数回の手続きのためだけに取得する零細企業は皆無でしょう。(ちなみに個人の住基カードに対して電子証明書を設定する場合は3年ごとに500円)
事実上、零細企業は電子申請を使えない、ということになるのですが、常日頃電子申請の利用を推奨している一方で、この所業にはさすがに呆れるしかありません。
このときは少しゴネたら今回だけは受け付けるということになったのですが、その後はしっかり弾かれるようになってしまい、年金事務所の手続きだけは書面で行わざるをえない状況になってしまいました。
税務署をはじめ、同じ厚労省の管轄である雇用保険の申告などは住基カードでも問題ないのに、日本年金機構が絡む手続きだけは不可という理不尽な状況に納得できず、厚労省の国民の声に投書してみたりもしましたが、「検討します」の返信があった以降は音沙汰なし…
それから一年半ほど経った今年1月、ついに住基カードも証明書として利用できるようになったというお知らせを見て、ちょっとした感慨に浸った次第。
まぁ、実は算定基礎届や賞与支払届の電子申請は少し面倒(専用アプリで書類作成が必要)だったりするので、証明書云々以前に電子申請のメリットはあまり感じられないかもしれません。

いまさらシステム刷新するような経済的余裕はないだろうし、仮に作り直したところで手続き自体の本質的な難しさは変わらないと思いますので、おそらくどこまでいっても電子申請の利用者は増えないと思いますが、「手書きしなくて良い」というただ一点にこだわって、個人的には今後も利用していきたいと思いますw


WordPress on Azure

/ Azure, Diary

しばらく前にxreaからAzureウェブサイトに移動した弊社サイト。
見ての通りWordPressで作っているのですが、Azureに移してからやけに読み込みというか接続が遅くなってしまいました。
何とかならないものかとAzure側の設定をあちこちいじったり、リージョンを変えてみたりしたものの、ほとんど変化なし。
年も明けたことだし、少し真面目に対処しようかと、まずはMySQLデータベースの置き場所をデフォルトでフリー提供されているClearDBから自前のものに変えてみることに。
自前といっても、同じAzureの仮想マシン上でMySQLサーバを動かすというもの。
簡易作成で選択できるWindows Server 2012 R2 DatacenterのVM作成が30分程度で終了した後、リモートデスクトップで接続、MySQLのモジュールをダウンロードしてインストール、適当なデータベースを作ったらあらかじめエクスポートしておいたWordPressデータのクエリスクリプトを実行して無事に復元完了。
あとはwp-config.php内のデータベース接続情報を書き換えればDB参照先が変更されて準備OK。

さて、これで速くなれば良かったのですが、結果はといえば全く効果なし。
実は事前にローカルのMySQLクライアントからClearDBに接続してみたところ、別段接続に時間がかかる様子はなかったので遅い原因は別にあるという予想はしていたのですが、まぁ見事に予想通りの展開。
仕方ないので他の原因を考えてみたところ、やはりWordPressが遅い原因の定番とも言えるプラグインの仕業ではないかという疑惑が浮上。
あれこれ調べているうちにDebug Barなるプラグインを使えばWordPressの性能調査的なことができるという記事を見つけたので試しに入れてみたところ、出るわ出るわ鬼のようなエラー、その数ざっと2000程度…orz
よく見るとどれも同じようなエラーで、コンタクトフォーム(Contact Form 7)で使っているReally Simple CAPTCHAの作業フォルダでアクセス拒否が発生している様子。
試しに一旦CAPTCHAプラグインを止めてみるとエラーは出なくなりレスポンスも劇的に改善。
そんなこんなでようやく原因は特定できたのですが、この謎のアクセス拒否が気になるところ。
FTPで該当ファイル/フォルダの削除を試みるもこれもアクセス拒否。
しかしながら移動はできるようなので、とりあえずリネームしてから適当な場所にフォルダごと移動して放置w
アクセス拒否の原因は今のところ不明ですが、その後CAPTCHAを有効化してもエラーは出ることなく無事正常な状態に戻りました。
改善したとはいえ、正直あまりレスポンスはよろしくなかったりしますが(表示開始までに2-3秒程度かかる)、しばらくこれで様子を見たいと思います。

Azureの仮想マシンは今回初めて利用したのですが、セットアップがエラく簡単で感動しました。
インターネット越しであることと割り当てメモリが少ないせいか操作速度は少々重めですが、ちょっとしたテスト環境構築などには便利に利用できそうです。
MSDN SubscriptionユーザなどAzureの無料枠をお持ちの方は一度試してみる価値はあるかと思います。


TFSコレクションの移動

/ Diary

Team Foundation Serverコレクションのマシン間移動についてメモ。

・移動元マシンで行う作業

  1. TFS管理コンソールにて「コレクションの停止」、「コレクションのデタッチ」を実行する
  2. SSMS等にてコレクションデータベースを「バックアップ」する
  3. 移動元マシンの環境を元に戻す場合は、TFS管理コンソールより再度「コレクションのアタッチ」を実行する

・移動先マシンで行う作業

  1. TFSおよびSQL Serverを導入する
  2. SSMS等にて移動元で採取したバックアップファイルを用いて「データベースの復元」を実行する
  3. TFS管理コンソールにて「コレクションのアタッチ」を実行する

注意点としては、TFSがデフォルトで用意するDefaultCollectionを移動する場合に名前が重複してしまうため、別名のデータベースとして「復元」(物理ファイル名も変えておいたほうが良いでしょう)し、別名のコレクションとして「アタッチ」する必要があります。
この方法だと元々のDefaultCollectionが残ってしまいますが、不要な場合はコレクションをデタッチしてデータベースごと削除してしまっても良いですし、面倒ならそのまま放置でもよろしいかと。

デタッチ/アタッチを連呼していますが、あくまでTFS管理コンソールによるコレクションのデタッチ/アタッチです。
データベースのデタッチ/アタッチではないのでお間違えなきよう。
コレクションの実体であるデータベースのほうは「バックアップ/復元」操作で取り扱います。

とりあえず上記手順でTFS 2010からTFS 2013への移行に成功しています。
最小限の構成でしか使っていないので、複雑な構成/設定にしている場合は他にも必要な作業があるかもしれません…