読者です 読者をやめる 読者になる 読者になる

仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

UbuntuでOpen vSwitchをLinux KVMのブリッジとして使う

Linux KVM Open vSwitch

UbuntuにOpen vSwitchをインストールする

UbuntuでOpenvSwitchを利用するには次のようにパッケージを入れます。 Ubuntu 16.04.xではLTS版のOpen vSwitch 2.5系がインストールできます。

$ sudo apt update
$ sudo apt install openvswitch-switch openvswitch-common

ネットワーク設定

そのあとはコマンドでブリッジを作る前に、事前にNICの設定を行っておきます。 本例では物理NICをenp30s0、仮想ブリッジをbr-exとして構成する例を示します。

$ sudo vi /etc/network/interfaces
…
# The primary network interface
auto enp30s0
iface enp30s0 inet manual
address 0.0.0.0

auto br-ex
iface br-ex inet static
address 172.17.14.4
netmask 255.255.255.0
gateway 172.17.14.1
dns-nameservers 8.8.8.8
ovs_type OVSBridge
ovs_port enp30s0

OVSブリッジの作成

あとはブリッジを作るだけです。簡単です。

$ sudo ovs-vsctl add-br br-ex
$ sudo ovs-vsctl add-port br-ex enp30s0

作成したあと、外部にpingを送っても正常に通信できることを確認します。 それでは本題のOpen vSwitchをLinux KVMのブリッジとして使うにはどうするかというと...

Open vSwitchをLinux KVMのブリッジとして構成する

まずはLinux KVMを使えるようにパッケージをインストールします。

$ sudo apt install kvm libvirt-bin 

インストールの進捗を見るとわかりますが、kvm libvirt-binのあたりのインストール時にbridge-utilsもインストールされます。つまり、openvswitchとbridgeモジュールが共存される状況になります。

この状況は良くありませんから対処する必要があります。まずはbridgeモジュールを使っているネットワークを削除します。

$ sudo virsh net-destroy default && sudo virsh net-autostart --disable default

片付けが終わったのでbridgeモジュールも片付けようとbridge-utilsをアンインストールしようとすると、Ubuntuは「libvirt-binも削除するで?」と言ってきます。これでは困るのでblacklistに設定してbridgeモジュールを読み込みしないように設定します。

$ sudo vi /etc/modprobe.d/modprobe.conf
blacklist bridge  ←追記

上記設定が終わったら再起動します。

$ sudo reboot

再起動後、次のように実行してbridgeモジュールが読み込まれていないことを確認します。

$ sudo lsmod|grep openvswitch
openvswitch           221184  4
nf_nat_ipv6            16384  1 openvswitch
nf_nat_ipv4            16384  1 openvswitch
nf_defrag_ipv6         36864  2 openvswitch,nf_conntrack_ipv6
nf_nat                 24576  3 openvswitch,nf_nat_ipv4,nf_nat_ipv6
nf_conntrack          106496  6 openvswitch,nf_nat,nf_nat_ipv4,nf_nat_ipv6,nf_conntrack_ipv4,nf_conntrack_ipv6
gre                    16384  1 openvswitch
libcrc32c              16384  3 xfs,raid456,openvswitch
$ sudo lsmod|grep bridge
$

さあ準備が整いました...と言いたいところですが、Linux KVMでOVS Bridgeを使う場合、次のバグに注意する必要があります。

Bug #1279176 “virt-manager does not support ovs bridge” : Bugs : virt-manager package : Ubuntu

次のように仮想マシンマネージャーでOVSブリッジに完全に対応はしていないので、

f:id:virtualtech:20161125104822p:plain

とりあえず「ホストデバイスbr-ex:macvtap」などを使ってOSのインストールをしてシャットダウンしたあと、virsh editコマンドで該当の仮想マシンのNICの設定に「virtualport type=openvswitch」の記述を追加してください。例えば次のように設定します。

$ virsh edit vmname
...
    <interface type='bridge'>   ←bridgeにする
      <mac address='xx:xx:xx:xx:xx:xx'/>  ←そのまま
      <source bridge='br-ex'/>  ←ブリッジのNIC名を指定
      <virtualport type='openvswitch'>  ←追記
      </virtualport>  ←追記(virtualportタグを閉じる)
...

設定を変えたら設定を保存して閉じます。viで開いた場合は:wqです。設定に誤りがあればエラーが表示されます。問題なければ変更は保存されます。

「ホストデバイスbr-ex:macvtap」のままでもVMと外部間の通信は問題なく行え、一説によるとmacvtapを使った通信はパフォーマンスが良いとのことですが、KVMホストとVM間の通信ができないというデメリットがあります。今回のように対処するとLinux KVM+Linux Brige構成のような使い勝手をLinux KVM+Open vSwitch Bridgeで実現することができるようです。

MAAS 2.1.0がリリースされた

MAAS

2016年11月9日にMAAS 2.1がリリースされたため、インストール済みだったMAAS 2.0からアップグレードしてみました。 次のように実行して再起動しました。無事MAAS 2.1にはなりましたが、MAASイメージの再インポートが必要でした。

$ sudo add-apt-repository ppa:maas/stable
$ sudo apt-get update
$ sudo apt-get upgrade

MAAS 2.1ではMAASの利用に必要ないくつかの設定を事前に設定できる、初期設定ウィザードが実装されていました。 また、オートディスカバリー機能が実装され、定期的に現在、ネットワーク上で使われているIPアドレスとハードウェアを視覚化できるようになりました。

f:id:virtualtech:20161111151637p:plain

MAASイメージの設定画面も改良されており、Ubuntuの各リリースのほか、CentOS 7とCentOS 6のイメージも個別に選択してインポートできるようになりました。

f:id:virtualtech:20161111152308p:plain

そのほかにも設定画面は色々と改良が行われていますが、私が一番嬉しかったのはここです。 ストレージのQuick Erase機能が実装されたことです。これでリリース後のEraseにものすごい時間がかかったり、時間がかかるからといって設定をオフにしないで済みます。 また、セキュアなEraseについてもこのバージョンで実装されています。

f:id:virtualtech:20161111152417p:plain

MAAS 2.1.0のChangelogはまだ更新されていませんが、修正されたバグの一覧はこちらで確認できます。

特にMAAS 2.0にあった、「IPアドレスが使われなくても確保し続けてしまうバグ」LP:#1615686 が修正されているのがこのリリースのポイントです。早速、弊社内の私のMAAS環境は更新してしまいました。

VMWare FusionのRetina対応とWindows 10 Anniversary updateと

Windows 10 VMware Fusion Parallels Desktop

VMware Fusionは結構前のバージョンからRetinaに対応しています。 先日、仕事用環境を一新してもらい、MacをRetina対応のMacBook Pro 13inchに、モニターを4K対応にしてもらったのを機にVMware FusionのVMもRetinaモードで使い始めました。新しいMacでもWindows 10は特に問題なく動いていました。

f:id:virtualtech:20160818103215p:plain

しかし、Windows 10にAnniversary updateを適用して以降、仮想マシンの中のWindows 10でマウスの矢印にズレが発生してリンク、アイコン、ウィンドウのクリックがしづらくなる問題が発生するようになりました。クリックするときにちょっと左上でクリックしないといけなくなってしまいました。

このため、画面上に見えている矢印の位置と実際のカーソルの位置が異なるため、マウスのクリックどころかウィンドウのドラッグアンドドロップも満足にできない状況です。

f:id:virtualtech:20160818103016p:plain

一番困るのがウィンドウが画面の上部に来てしまった時です。タイトルバーをクリックできないので、マウス操作ではウィンドウを移動することができなくなります。もちろん、キーボードショットカットを使ってウィンドウの移動は可能です。とはいえ、Anniversary update適用前は正常に動いていたものが動かなくなるとストレスが溜まります。

Anniversary update適用以前はこのような問題が発生していなかったことから、Anniversary updateとVMware Toolsの対応不足のような気がしています。

この環境は仕事用の環境なので、vSphere Clientを使った仮想マシンの管理をすることがあるのですが、その描画もおかしくなりました。ちなみにこの事象もAnniversary update適用以前は起きていませんでした(黒い部分は本来、描画されるべきところ)。

f:id:virtualtech:20160818103848p:plain

最初にWindows 10 Anniversary updateを動かしたのはVMware Fusion 6.0.6で、さすがに古いだろうと8.1.1に更新しましたが、状況は一緒でした。

ちなみにRetina非対応のモニターではこのような問題は起きませんでした。このことからVMware FusionのRetinaの実装の不足とWindows 10 Anniversary updateの何かの複合技で問題が発生している可能性が高いです。

とはいえ、もう疲れたのでParallels Desktop 11に乗り換えます(次の図はVMware FusionのVMをParallels Desktop 11にインポートしているところ)。

f:id:virtualtech:20160818112108p:plain

その後、VMware Fusion 6/8で動いていたWindows 10はParallels Desktop 11で無事動きました(ただし、インポート後にParallels Toolsのインストールと、VMをシャットダウンして仮想NICを追加する処理が必要でした)。VMware Fusion 6/8で動いていた時のようなカーソルのズレは全くなくなり、快適に動くようになりました。

ただし、移行後のWindows 10はライセンス認証を再度行う必要があるようです。

OpenStack 構築手順書 Mitaka 版(Think IT Books)のご紹介

OpenStack 書籍紹介

はじめまして

技術ブログでははじめまして。平(Twitter:@mana_cat)です。 サーバーエンジニア、クラウドエンジニア、フリーランスを経験して今年4月に入社しました。二人の子どもを保育園に預けて時短勤務で働いています。 趣味はカメラと自宅IoTです。今後ブログも更新していきますのでよろしくお願いします。

続きを読む

Hyper-V Server 2012 R2のリモート管理について

サーバー

Hyper-V Server 2012 R2をインストールして、Windows Server 2012 R2のHyper-V Managerを使ってリモートのHyper-V Server 2012 R2に仮想マシンを作ろうとすると、仮想ディスクの作成時に「予期しないエラーが発生しました」というエラーが出てしまい、ディスク作成が出来ませんでした。

2016-04-08 04:22:15 +00001

この問題はリモート管理するHyper-V Server 2012 R2と同じ「DNSサーバー」、「DNS suffix」の設定(Linuxで言う所のsearch)を設定して、名前引きできるように設定して、Hyper-V ManagerにはIPベースではなく、コンピューター名で接続するようにするとこう言った問題が起きずにうまくいくようです。

2016-04-08 04:16:45 +00001

DNSがまだなければLinuxでDNSを立てるか、Active Directoryを構築して全ノードをADに参加する方法でも良いと思います。

社内GitLabをアップデートした

技術解説

昔なんとなく立てた社内GitLabが立ててからだいぶ経ったような気がしたので、アップデートしました。最近のGitLabはあの特徴的なアイコンがモダンな感じになって良いですね。

さて、前のバージョンが6.4.3という古めのバージョンで、昔の手順(Chef Soloかな)でインストールされたものだったため、debパッケージで簡単に導入できる最新バージョンに移行する手順がやや複雑でした。OSもUbuntu12.04と少し古めになっていたため、14.04で新規に作った環境に移していく方法にしました。

作業については、こちらの記事が大変参考になりました。ありがとうございました。

http://rythgs.co/archives/2015/10/31/switch-omnibus-gitlab/

ちょっと違うやり方もしたので、自分のメモがてらざっくりと書いておきます。

続きを読む

Minecraftに釣られて始めるDocker入門

Docker

今朝ごろからTwitter上でDockerCraftなるものが話題のようです。Dockerがリリースした、Minecraft上でDockerコンテナのステータスが確認できるものだとか。

実は私、今までなんとなくDockerを避けてきたのですが、ネザーで天井の岩盤から床の岩盤までぶちぬいてゾンビピッグマントラップタワーを建設している程度にはMinecraft好きですので、これはDocker入門せざるを得ません。早速、Docker入門を兼ねて動かしてみました。

Docker環境の用意

社内にある普段使い用のOpenStackにUbuntu14.04のインスタンスをさくっと立て、ドキュメントを参照しながらDockerをインストールしました。

https://docs.docker.com/v1.8/installation/ubuntulinux/

一般ユーザーでdockerコマンドを実行できるようにするのを忘れずに。

続きを読む