NASにVirtualBoxをインストールして古いOSを使う

最近のNAS(Network Attached Storage)は、高機能化していて仮想化環境も扱えるようになっています。NASとは、ネットワーク越しに使えるハードディスクです。

そこで、昔のPCをそのままディスクイメージに変換して使う方法が、紹介されています。

“昔のPC”をNASに保存、さらにリモートでも使用可能に!

記事では、ASUSTORのNASにVirtualBoxを導入して、Windows 7のPCをNASに移行する方法が詳しく説明されています。

移行したWindows 7を使う方法は2つあって、1つはリモートデスクトップを使う方法です。

もう1つは、ASUSTORのNASのHDMI端子を使ってディスプレイに出力できるそうです。

調べてみると、サポートされるモデルは、AS31/32/50/51/61/62/70だそうです。メモリーはなるべくたくさんないといけないので、AS50/51シリーズ以上の機種で、メモリーを増設して使わないといけません。最大で8GBだそうなので、仮想化されるOSは、1つか2つが精いっぱいではないでしょうか。

少しお値段が張るのがネックですかね。

「うるさい隣人」問題

仮想環境において、同居したサーバーがコンピューターのリソースを取り合うことを「うるさい隣人」問題というそうですね。

仮想環境における「うるさい隣人」問題 (1/3)

パフォーマンスの低下の原因には、CPU、メモリー、ネットワーク、ストレージなどあらゆる場所が考えられるそうです。

その中のストレージについて、少し詳しく言及されています。

完全にコントロールするためには、ハイパーバイザーかハードウェア側で制御しないといけない問題だと思います。

QEMU/KVMでセキュアブート

QEMU/KVMでセキュアブートを利用する方法が紹介されています。

第446回 QEMU/KVMでセキュアブートを利用する

セキュアブートを実現するには、3つも鍵が必要なんですね。公開鍵と秘密鍵を作って、それを利用して鍵をNVRAM領域に書き込む必要があるそうです。

少し手間がかかります。QEMUを使って体験してみると、セキュアブートの理解が進んでいいのではないでしょうか。

QEMU/KVMでUEFIファームウェアを使う

QEMU/KVMでUEFIファームウェアを使う方法が紹介されています。

第441回 QEMU/KVMでUEFIファームウェアを使う

OVMFというオープンソースのファームウェアを使っています。

UEFIを使うメリットとしては、2TB以上のハードディスクを使う場合ぐらいしか現状ではないかもしれませんが。

でも、UEFIを開発するにはデバッグもできていいのでしょうね。

さくらインターネットでGPUサーバーのレンタルが開始されます

さくらインターネットで、GPUサーバーのレンタルが開始されるそうですね。

「NVIDIA Tesla」搭載GPUサーバを月額制で──さくらインターネットが9月末に開始

費用が結構かかるようです。どれくらい需要が見込めるのでしょう。ビジネスとして成り立つのかどうかとても興味があります。

Docker for Windowsの仕組み

DockerがWindowsに正式に対応しました。コンテナーがどうやってWindowsで動くのか興味がありました。

無償の「Docker for Windows」で手軽にLinuxコンテナを利用する (1/2)

以前は、VirtualBoxの上で、Tiny Core Linuxという小さいLinuxを動かしていました。

正式な対応といって、どうしてるのかと思いました。結局、Hyper-Vの仮想マシンが1つ動いていて、その上でAlpine LinuxというLinuxが動いています。仮想マシンの名前はMobyLinuxVMとなっています。その上でDockerのコンテナが動いています。MobyLinuxってなんでしょう。

コンテナが実行される環境としては、仮想マシンを動かしてLinuxの上で実行しているのは変わりません。

Windows上からコマンドで、Linux上のコンテナを操作しているわけですね。

Ubuntu 16.04をインストールしてからPHPのデバッグができるまで

Ubuntu 16.04上でPHPのデバッグができる環境を整えました。手順をまとめます。

Apache2のインストール

まずはApache2のインストールから。

$ sudo apt install apache2
$ sudo a2enmode userdir

a2enmodeでuserdirを有効にします。これで、ホームディレクトリのpublic_htmlディレクトリを公開できるようになります。作ったディレクトリが/home/hoge/public_htmlだと、

http://localhost/~hoge/で、public_html以下が公開されます。

PHPのインストール

次は、PHPのインストール。

$ sudo apt install php libapache2-mod-php

/etc/apache2/mods-available/php7.0.confのphp_admin_flag engine Offをコメントアウト。これで、上で設定したpublic_html内でPHPが使えるようになります。

MySQLのインストール

次にMySQLのインストール。

$ sudo apt install mysql-server mysql-client

実は、最初mariadb-serverとmariadb-clientをインストールしたのだけれど、rootのパスワードが設定されずアクセスできませんでした。バグのようなのでMySQLに変更しました。

ところが、MariaDBをアンインストールして、MySQLをインストールしようとしてもエラーでできません。こちらの情報に従って完全に設定ファイルを削除した後でインストールできました。

Uninstall MySQL completely

PDOのインストール

PHPからMySQLにアクセスするPDOをインストールします。

$ sudo apt install php-mysql

$ sudo service apache2 restart

上述のようにuserdirを使える状態で、/home/hoge/public_html/index.phpに

<?php
phpinfo();

と書いたファイルを作って、http://localhost/~hoge/でアクセスして、PDOのところにmysqlとドライバが表示されていればOKです。

Javaをインストール

PHPのデバッグにNetBeansを使えればと思い、Javaをインストール。

$ sudo apt-add-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt install oracle-java8-installer

NetBeansをインストール

NetBeansは、PHPを使えるものをダウンロードしてインストールしました。

$ sudo sh ./netbeans-8.1-php-linux.sh

インストール先は、/usr/localではなくてホームディレクトリの中にしました。

日本語のインライン変換ができないときは、以下のようにFcitxの設定をするとうまくいきます。変換候補が離れたところに表示されるので今一つですけど。

Fcitx tips

xdebugをインストール

NetBeansで、PHPをデバッグするためにxdebugをインストールします。

$ sudo apt install php-xdebug

これでインストールはできるのですが、動かすために設定が必要になります。
xdebug.iniにzend_extensionしか設定されていないので、xdebug.remote_enable=1とxdebug.remote_autostart=1、xdebug.idekey="netbeans-xdebug"の3行を付け加えます。
remote_enableは、NetBeansでデバッグするときに必要になります。htmlからphpを呼び出すときなど、2つのファイルにまたがるときはidekeyが必要になります。
、remote_autostartは、後述するVisual Studio Codeでデバッグするときに必要になりました。
/etc/php/7.0/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.idekey="netbeans-xdebug"

これで、上述のhttp://localhost/~hoge/にアクセスしてphpinfo()の結果を見ます。xdebugのremote_eanbleがOnになっていればOKです。

もし、Onになっていなければ、/etc/php/7.0/apache2/conf.d/20-xdebug.iniがあるかどうか確認してください。20-xdebug.iniは/etc/php/7.0/mods-available/xdebug.iniのシンボリックリンクになっているはずです。Apache2が設定を読み込んだ場合、phpinfo()のAdditional .ini files parsedという欄に20-xdebug.iniを読んだことが表示されています。

NetBeansでデバッグできることを確認

NetBeansを起動して、ホームディレクトリのpublic_html内にテストプロジェクトを作ります。ソースコードには、phpinfo();を入れます。ブレークポイントを設定して、デバッグを開始。ブレークできれば成功です。

phpinfo()で、xdebugのremote_enableがOnになっていれば、たぶん何も設定しなくても動くと思います。

Visual Studio Codeをインストール

せっかくなので、Visual Studio Codeをインストールしてみます。

code_1.4.0-1470329130_amd64.debをダウンロードして、Gnome ファイルから右クリックして「ソフトウェアのインストールで開く」でインストールしました。

Visual Studio技術情報にある、Visual Studio Code Preview ファースト ステップ ガイド (PDF: 5.9 MB)をダウンロードしてみると、インストールや簡単な使い方が載っています。日本語で読めます。

Ubuntuの場合、ターミナルでcodeと打つと起動します。

PHPのextensionをインストールします。左側のビューバーの上から5番目にある拡張機能を選択。ボックスにPHPを打ち込んでextensionを検索します。

PHP DebugとPHP,Perl,Asm,Bash Code Formatをインストールしました。コードのフォーマッタは、PHP Code Formatもあるのですが、PHPのファイルで?>で閉じるとタブがスペースに変換されなかったり、8カラムになったり不具合がありました。PHP Debugのほうが、xdebugを使うのに重要です。

あとは、コードの中にブレークポイントを設定して、左のビューバーの4番目のデバッグのモードに切り替えます。左上のStart Debuggingという緑色のボタンを押してからブラウザでファイルをアクセスしてみるとブレークします。NetBeansと違って手動でサイトにアクセスしないと勝手にデバッグが始まらないです。エディターと統合環境の違いかなと思います。

もし動かないときは、phpinfo()のxdebugの欄でremote_enableがOnになっていること、remote_autostartがOnになっていることを確認しましょう。

実際にVisual Studio Codeでデバッグしてみましたが、1度フリーズした他は快適に使えました。ソースコードのオートフォーマットなどはNetBeansの方が細かく設定できていいですけれど、高機能なエディタと思えば、デバッグもできるしいいかなと思いました。

ただ、Intellisenseは動いているのですが、よい候補があまり出てこなくてコード補完はあまり使えませんでした。ちょっと残念。

VMware Workstation 12.1.1 PlayerでUbuntu 16.04を使う

以前、VMware Workstation 12 PlayerでUbuntu 14.04を使おうとしました。

ホストは、Windows 10 Proです。

VMware Toolsをインストールして、いろいろやってみたのですが、どうもうまくいきませんでした。

今回Ubuntu 16.04を使おうとして調べてみると、こちらの方法でうまくいくことがわかりました。

ubuntu 16.04 インストール(2) vmware tools

自分の場合、クリップボード共有(コピーペースト)と共有フォルダを主に使っています。

VMware Toolsをインストールする方法としては、Ubuntuにもともと入っているOpen VM Toolsを使う方法と、以前からあるように手動でインストールする方法があります。

Ubuntu 16.04のデフォルトでは、Open VM Toolsが入っているのですが、共有フォルダが動かなくて困っていたのでした。じゃあということで、手動でインストールするとクリップボード共有がうまく動きません。

結局、もともと入っているOpen VM Toolsをつかって、/etc/fstabの設定を付け加えることで両方動かすことができました。

繰り返しになりますが、少し説明すると、

$ sudo apt install open-vm-tools-desktop

で、クリップボード共有が有効になります。もともと入っていれば問題ないです。

また、/etc/fstabに

.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0

と付け加えることで共有フォルダが有効になりました。

画面のリサイズにも対応していて、ありがたく使わせていただいています。

VMware Workstation PlayerでOpenStack Mitakaのネットワークを設定しインスタンスを起動

はじめに

VMware Workstation PlayerでOpenStack Mitakaのインストールをしています。

前回は、OpenStack MitakaをインストールしてDashboardを見るところまでをやりました。

インストールにはこちらのサイトを参考にさせていただきました。今回は、ネットワークを設定しインスタンスを起動してロードバランサを動かすところまでやります。

VMware Workstation PlayerでOpenstack Kiloを動かす手順

ネットワークの設定では、こちらも参考にさせていただきました。

OpenStack Neutronを使ってWebシステムを構築する実践的な方法 (1/3)

不具合の対処

OpenStackのホストとなるCentOSを再起動してみると、httpdサービスとneutron-serverサービスがfailedになって立ち上がりません。動くときもありますので、いつも動かないわけではないようです。

サービスの起動の状態を知るのは次のコマンドでわかります。

#systemctl list-units --type service

エラーメッセージはこんな感じです。

#systemctl status httpd

ERROR: scss.ast: Function not found: function-exists:1

#systemctl status neutron-server

neutron.service start operation timed out. Terminating.

こちらの情報によると /lib/systemd/system/httpd.service.d/openstack-dashboard.conf を実行するときに時間がかかりすぎるのが原因だとか。パッチも作られたようです。

とりあえず次のコマンドで手動で起動すると動きます。httpdが起動するまで少し待つ必要があります。

# systemctl start httpd
# systemctl start neutron-server

また、VMware Workstation PlayerのCPU2コア、メモリ4GBにすると安定して動くようになりました。CPU1コア、メモリ4GBでは、リソースが足りないようです。

ネットワークを設定

VMware Workstation PlayerでOpenstack Kiloを動かす手順に従ってネットワークを動かそうとしました。しかし、502 Bad Gatewayというエラーが出て動きません。

問題の特定にはログファイルを見るしかないようでしたが、OpenStackを始めたばかりでどのログファイルのどこを見ればいいのかよくわかりません。

そこで、OpenStack Neutronを使ってWebシステムを構築する実践的な方法 (1/3)に従ってネットワークが動作することを確かめました。そのあとに手順書に従ってネットワークを動かしました。

@ITのサイトでは、OpenStackのハンズオンを基にした手順が書かれてありわかりやすかったのですが、公開するネットワークの設定の仕方が書いてないため、手探りで設定しました。下記に書いたようにpublicのネットワークを設定しました。

また、手順書のようにtennant_idを一つ一つ手書きするのはとても大変でした。そこで、@ITの記事を参考に次のようにしてネットワークを設定しました。

ちなみに、VMware Workstation Playerの画面で作業するのはコピーペーストできません。コピーペーストできるsshクライアントを用意してVMware Workstation PlayerのCentOSにアクセスして作業するとはかどります。

まずpublicという名前の公開するネットワークを作ります。作成する時のポイントはnet-createのときに、--router:externalを使うことです。これで外部のネットワークだと指定することができます。

OpenStackのホストとなるCentOSのIPアドレスは、192.168.0.140と指定してインストールを行っています。そのIPアドレスを外して、192.168.0.141から192.168.0.199をFloationg IPという名前で使って良いアドレスと指定します。

# neutron net-create public --route:external
# neutron subnet-create --name public_subnet --disable-dhcp --allocation-pool start=192.168.0.141,end=192.168.0.199 public 192.168.0.0/24

次に非公開のネットワークを作ります。OpenStackのインスタンスはまずこのネットワーク上に接続されて作られます。そのあとに上記の公開するネットワークからFloationg IPからIPアドレスを割り当てることで外部のネットワークと通信できるようになります。

neutron net-createでprivate-net1というネットワークを作ります。プライベートネットワークのIPアドレスは 192.168.10.0/24という範囲でネットワークを設定し、101から199まで指定します。 ゲートウェイは192.168.10.1を使います。

# neutron net-create private-net1
# neutron subnet-create --name private-net_subnet1 --enable-dhcp --allocation-pool start=192.168.10.101,end=192.168.10.199 --gateway 192.168.10.1 --dns-nameserver 8.8.8.8 private-net1 192.168.10.0/24

router-createで、router1という仮想ルーターを作ります。router-gateway-setでpublicネットワークにつなげます。publicネットワークでは、Floating IPから192.168.0.141というアドレスが付与されます。router-interface-addで、プライベートなネットワークにつなげます。private-net_subnet1のIPアドレス192.168.10.0/24で最初のアドレス192.168.10.1が使われます。先にゲートウェイを指定していたのと合っている必要があります。router-port-listとsubnet-showで確認できます。

# neutron router-create router1
# neutron router-gateway-set router1 public
# neutron router-interface-add router1 private-net_subnet1
# neutron router-port-list router1
# neutron subnet-show private-net_subnet1

インスタンスを起動

VMware Workstation PlayerでOpenstack Kiloを動かす手順に従ってインスタンスを起動しようとしました。しかし、--is-public と --location というオプションはないといわれ、イメージの登録ができません。

調べてみると、glanceはOpenStack kiloからOpenStack Libertyに変わったときにバージョンが上がってるようです。--os-image-api-version 1 というオプションをつけることでコマンドを使うことができました。

# glance --os-image-api-version 1 image-create --name cirros --is-public True --container-format bare --disk-format qcow2 --location http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

バージョン2で使うときは、--is-publicを--visibility publicにすることと、--locationは対応するものがないので、イメージをあらかじめローカルにダウンロードしておいて--fileオプションを使って指定するとよいようです。

あとは手順書に従って、インスタンスを作って起動し、ロードバランサを作って動作確認しました。OpenStack KiloとMitakaでは画面が変わっていますが、対応するところはすぐわかると思います。

OpenStackのホストであるCentOS上で次のようにルーティングを設定すると、CentOSからOpenStackのインスタンスに接続できます。動作の確認ができるのでとても助かりました。

# route add -net 192.168.10.0/24 gw 192.168.0.141 br-ex

実際にロードバランサの動作を確認すると、Curlでアクセスしたときはweb_server01とweb_server02の表示が交互に出て、ちゃんとラウンドロビンで動作していることがわかります。

しかし、ChromeでアクセスしてShift-F5でリロードしてみると時々しか変わりません。ブラウザによって動作が異なるようです。原因はわかりませんでした。

インスタンスをKVMで起動

せっかく、VMware Workstation Playerを使ってOpenStackでもCPUの仮想化機能を使えるようにしています。そこで、OpenStackのインスタンスがKVMを使っているのかどうか確かめました。

デフォルトの状態では、OpenStackはQEMUを使ってインスタンスを動かしています。設定ファイルnova.confでvirt_type=kvmとすることで、KVMを使うように設定します。

/etc/nova/nova.conf

virt_type=kvm

実際にKVMが使われているかどうか、確認します。virsh listで、インスタンスのIdを確認して、virsh qemu-monitor-commandでinfo kvmとすることで確認できます。--hmpというのは、Human Monitor Protocolの略で、通常の人間がわかるコマンドを実行するということのようです。

kvm supportがenabledになっていれば、OpenStackのインスタンスでKVMが使われています。そこそこの速度で実行されているのではないでしょうか。

# virsh list

 Id    Name                           State
----------------------------------------------------
 2     instance-00000008              running
 3     instance-00000009              running
# virsh qemu-monitor-command --hmp 2 info kvm
kvm support:enabled

おわりに

neutronのコマンドにneutron lb-*というものと、neutron lbaas-*というものがあります。調べてみると、前者はLBaaS v1で後者はLBaaS v2というようです。v1とv2ではドライバから変わって、互換性はないそうです。v1は廃止予定になっています。せっかく覚えたのになんかもったいないですね。

VMware Workstation PlayerでOpenStack Mitakaを動かしてみた

はじめに

VMware Workstation Player上にOpenStack Mitakaをインストールしました。

OpenStackを気軽に試してみるには、Ubuntuを使うものとCentOSを使うものがあります。メモリーの必要量が少なかったりするので、CentOSを使うものにしました。

RDOとは、Red Hat系のOpenStackのコミュニティのこと。Packstackは、RDOで開発されているOpenStackのインストール作業や設定作業を自動化するインストーラーです。

ハードウェアの必要要件

CPUはVT-xもしくは、AMD-Vを備えたもの
メモリ4GB、6GB以上が望ましい

ここでは、VMware Workstation Playerを使って、仮想環境にOpenStackをインストールします。VMware Workstation Playerは、ホストのVT-x/AMD-Vをゲストから使えるようにする機能があります。これを使ってゲストOSをホストにしてOpenStackを動かしその上でゲストOS(インスタンス)を動かします。

開発環境

ホストOS Windows 10 Pro

VMware WorkStation Player 12.1.1

CentOS-7-x86_64-Minimal-1511.iso

インストールには、こちらのサイトを参考にさせていただきました。ほぼ、そのままでインストールしていきます。VMware Workstaion Playerの設定の仕方から始まって、OpenStackのロードバランサの設定まで細かく書かれてあります。大変参考になりました。

VMware Workstation PlayerでOpenstack Kiloを動かす手順

CentOSのインストール

CentOSは、手順書のとおりにインストールしました。

CentOSのダウンロードに1時間。インストールには20分ほどでインストールできました。Minimalインストールなので、インストール後net-toolsとntpをインストールしました。
NetworkManagerとはうまく共存できないようなので停止して代わりにnetworkサービスを使います。

ネットワークはOpenVSwitchを使います。ブリッジインターフェースを設定します。ホストのWindows 10 ProからOpenStackのホストのCentOSへアクセスするIPアドレスには、192.168.0.140を設定しました。

OpenStackのインストール

手順書を参考にインストールしました。

1つ変えたところは、次のコマンドでkiloのレポジトリをセットアップするのですが、

yum install http://rdo.fedorapeople.org/openstack-kilo/rdo-release-kilo.rpm

CentOSには、Mitakaのパッケージが用意されているので、次のコマンドでセットアップしました。

yum install -y centos-release-openstack-mitaka
yum install -y openstack-packstack

Packstackは、アンサーファイルを作って設定し、インストールします。

インストールには、OpenStackのコンポーネントをダウンロードしながらインストールするので時間がかかりました。

CentOSのインストールとOpenStackのインストールで2時間ほどで、OpenStackのDashboardを見ることができました。

自宅のネットワーク回線が遅いので、速ければもう少し早く終わると思います。

インストールの確認

インストールが正常に終了したところでhttp://192.168.0.140/dashboardにアクセスしてみました。

まだ、ネットワークの設定が終わっていないので、インスタンスを動かすことはできません。

OpenStackの設定ファイルは、/etcの下に散らばっているのですね。

詳細な手順書があったおかげでハマることなく動かすことができました。

次回、ネットワークの構成とインスタンスの起動までやってみます。