OpenStack上の仮想インスタンスを物理サーバ間移動(マイグレーション)させる手法について


2022/04/20追記

このページに記載しているのはOpenStack Pike(16番目のリリース)ぐらいまでの話です。

それ以降のOpenStackについては関わっていないので不明です。


OpenStackで仮想インスタンスを動かしている場合に、物理サーバ間を移動させる手法について、いまいちまとまっているものがなかったので、メモ。

・物理サーバを指定して仮想インスタンスを起動

→ 不可能

アベイラビリティーゾーン(availability-zone)というサーバをまとめたグループ(雑な表現)を指定して起動することまでしかできない

・仮想インスタンスを稼働中に物理サーバを移動させる

→ 可能

例えば起動ディスクを含めcinderボリュームを使っている場合、下記コマンドで実施できる

# openstack server migrate --live 移動先ComputeNode --block-migration 仮想インスタンスUUID --wait

なぜか「migrate」と「migration」の2つの単語が混じっている、という不親切なつくりなので、惑わされないこと。

上記だと、移動が終わるまでコマンドが終了しない。「–wait」を抜いた場合、下記の様な形でマイグレーションの進捗状況を確認することが出来る

# openstack server migrate --live 移動先ComputeNode --block-migration 仮想インスタンスUUID
# nova server-migration-list
# nova server-mgirationshow 仮想インスタンスUUID マイグレーション番号

「openstack sevrer show 仮想インスタンスUUID」では進捗のパーセンテージのみ確認可能。

それに対して、「nova server-mgirationshow 仮想インスタンスUUID マイグレーション番号」では、全体で何バイト転送する必要があり、現在何バイト転送が終了しているか、といった詳細を確認することができる。

参考資料
 nova Migrate instances
 nova Live-migrate instances

・止まってる物理サーバ上にあった仮想インスタンスを他の物理サーバで起動させる

→ nova evacuateコマンドで可能

# nova evacuate 仮想インスタンスUUID 移動先ComputeNode

nova evacuateは、元々起動していた物理サーバ上の「nova-compute」と通信が取れない場合に実行できる。

nova-computeと通信が取れる状態だとエラーになる・・・無理矢理実行したいのであれば、該当サーバ上のnova-computeを落とせばできなくもない。

参考資料
 nova Evacuate instances
 nova Recover from a failed compute node

・ERRORステータスになっててmigrateが出来ない

「nova reset-state 仮想インスタンスUUID」を実行することで、ステータスがリセットできる。

参考資料
 nova Troubleshoot Compute

HUION GT-156HD v2をUbuntu 17.10に繋いでみた際のデバイス認識状況



HUION GT-156HD v2をUbuntu 17.10マシンに繋いだ時に、どう認識されるかを確認してみた。

ただし、Linux上でちゃんとタブレットとして認識したわけではないです。

lshwの実行結果から抜粋

                    *-usb:1
                         詳細: USBハブ
                         製品: USB2.0Hub
                         ベンダー: Alcor Micro Corp.
                         物理ID: 2
                         バス情報: usb@1:1.2.2
                         バージョン: 1.00
                         性能: usb-2.00
                         設定: driver=hub maxpower=100mA slots=4 speed=480Mbit/s
                       *-usb:0
                            詳細: マウス
                            製品: Tablet Monitor
                            物理ID: 1
                            バス情報: usb@1:1.2.2.1
                            バージョン: 0.00
                            性能: usb-1.10
                            設定: driver=usbhid maxpower=100mA speed=12Mbit/s
                       *-usb:1
                            詳細: マスストレージデバイス
                            製品: Mass Storage Device
                            ベンダー: Generic
                            物理ID: 4
                            バス情報: usb@1:1.2.2.4
                            論理名: scsi0
                            バージョン: 1.00
                            シリアル: 058F0O1111B1
                            性能: usb-2.00 scsi emulated scsi-host
                            設定: driver=usb-storage maxpower=100mA speed=480Mbit/s
                          *-disk
                               詳細: SCSI Disk
                               製品: Flash Reader
                               ベンダー: Multi
                               物理ID: 0.0.0
                               バス情報: scsi@0:0.0.0
                               論理名: /dev/sda
                               バージョン: 1.00
                               性能: removable
                               設定: logicalsectorsize=512 sectorsize=512
                             *-medium
                                  物理ID: 0
                                  論理名: /dev/sda

lsusbの実行結果から抜粋

Bus 001 Device 013: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 001 Device 012: ID 256c:006e
Bus 001 Device 011: ID 058f:6254 Alcor Micro Corp. USB Hub

lsusb -vの実行結果から抜粋

Bus 001 Device 013: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x058f Alcor Micro Corp.
  idProduct          0x6366 Multi Flash Reader
  bcdDevice            1.00
  iManufacturer           1 Generic
  iProduct                2 Mass Storage Device
  iSerial                 3 058F0O1111B1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

Bus 001 Device 012: ID 256c:006e
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x256c
  idProduct          0x006e
  bcdDevice            0.00
  iManufacturer           5 (error)
  iProduct                6 Tablet Monitor
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      18
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      83
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               2
Device Status:     0x0000
  (Bus Powered)

Bus 001 Device 011: ID 058f:6254 Alcor Micro Corp. USB Hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x058f Alcor Micro Corp.
  idProduct          0x6254 USB Hub
  bcdDevice            1.00
  iManufacturer           0
  iProduct                1 USB2.0Hub
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x0080
    Ganged power switching
    Ganged overcurrent protection
    TT think time 8 FS bits
    Port indicators
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent    100 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0103 power enable connect
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0503 highspeed power enable connect
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

RHEL7でpam_tally2が使えるのか?


RedHat Enterprise Linuxでパスワードを複数回間違えたらロックをかける、ということをさせる場合、RHEL5,RHEL6の情報だとpam_tally2を使う、というのが出てくる。
RHEL7だとpam_faillockを使う、という話も出てくる。

サポートサイト情報「How to lock out a user to login a system after a set number of failed attempts in Red Hat Enterprise Linux using pam_tally/pam_tally2
RHEL7の関連ドキュメント「第4章 ツールとサービスを使用したシステム強化

でも、RHEL7にはpam_tally2も入っていて使えそうな感じがする・・・

使えるのかなぁ?と思って試したところ、とりあえずつかえはしました。
ただ・・・こういう動作は普通なんだろうか?という動きをしているところがいくつか・・・

  • pam_tally2のFailuresカウントはpam_tally2 -rでリセットするか、該当ユーザがログインに成功するかでカウントが0になる
  • unlock_timeを過ぎてもpam_tally2のFailuresカウントは自動リセットされず継続する
  • 「passwd -S ユーザ」でロックされているかの確認ができない

なお、「passwd -S ユーザ」によるロック状態のチェックは、pam_faillockを使った場合でも使えません。

実際の動作について

とりあえず、pam_tally2設定を行い、パスワード入力を規定回数以上間違えます。

このようなpam_tally2によりロックされている場合、コンソールログインをしようとすると下記のような表示となります。

ホスト名 login: <ユーザ名>
Account locked due to <カウント> failed logins
Password:

システムのログとしては /var/log/secure に対して下記のような出力があります。

Nov 22 18:35:21 linuxtest <authpriv.notice> login:pam_tally2(login:auth): user <ユーザ名>(<UID>) tally 7, deny 5

ここで、さらに間違うとカウントは増加していきます。

unlock_timeが設定されている場合、 unlock_timeの時間が経過した後、1回目の試行でログインに成功すると、カウントが0に戻ります。

しかし、ここでさらにパスワードを間違えてしまうと、 前回のFailuresカウントがリセットされず、カウントが継続して増えていきます。
そして、失敗回数超過がすぐに適用されてしまうため、再度ロックされてしまいます。

DELL Venue 10 Pro 5055にUbuntu 17.10をインストールした



ワコムのAESペンを採用しているDELL Venue 10 Pro 5055にUbuntu 17.10をインストールしてみました。

1. 回転機能が働くので床に水平置きしてインストール実施
回転機能が働くものの向きが90度違うので、立てて置くとちゃんと使えません。
とりあえず、水平置きしておけば問題ないです。
インストール完了後は、GUI上にあるRotateアイコンをクリックして、回転禁止設定に変えましょう。

2. USB接続のNICを用意する
オンボードのWiFiは、そのままでは認識しないので、USB接続のNICを用意します。
USBキーボード/マウスをつなぎやすいようにUSBハブ付きのやつを買いました。

USB接続のWiFiは、失敗することが多いそうです。
実際、うちにある古いUSB WiFiを何種類か使ってみましたが、接続状況がいまいちで、インストール時には使えませんでした。

3. Ubuntu 17.10のデフォルトISOでは起動できない
DELL Venue 10 Pro 5055は、32bit UEFI採用のモデルなのですが、Ubuntu 17.10は、BIOSか64bit UEFIにのみ対応しています。
このため標準配布のISOイメージをやいたDVDでは起動できません。

ISOイメージをUSBメモリに書き込むツール(rufusとかLinuxLive USB Creator)を使って、USBメモリに書き込みます。
書き込み後、EFI/BOOTにbootia32.efiを配置します。
linux-asus-t100ta」にある「https://github.com/jfwells/linux-asus-t100ta/raw/master/boot/bootia32.efi」を使いました。

4. Ubuntu 17.10のインストールはLive モードで起動したあとの画面から行う
Ubuntu 17.10のデフォルトISOには、32bit UEFI採用モデルで起動する際に必要なパッケージ grub-efi-ia32が含まれていません。
このため、インストール中にネットワーク接続できる環境を用意する必要があります。

ネットワークがきちんと接続されていることを確認するために、Liveモードで起動します。
Firefoxが入っているので、起動してWebが開けるかを確認します。

5. インストール操作は普通に行う
インストール操作自体は普通のUbuntu 17.10インストールと同じです。
Windows10とのデュアルブートも可能でした。
エラーがでる場合は、おそらくネットワーク接続が不安定で、grub-efi-ia32パッケージがダウンロードできなかったことにより発生しています。

6. インストール後、brcmfmac43241b4-sdio.txtを配置すると内蔵WiFiが使える
DELL Venue 10 Pro 5055の内蔵WiFiは、内部的にはSDIO接続であるようです。
先ほども使用した「linux-asus-t100ta」から「https://github.com/jfwells/linux-asus-t100ta/raw/master/nvram/lib/firmware/brcm/brcmfmac43241b4-sdio.txtをダウンロードして、/lib/firmware/brcm/brcmfmac43241b4-sdio.txtに配置します。
配置後、再起動すれば認識しています。


さて、ワコムのBamboo Inkを買っているので、ペンタブとしてどの程度動くのか確認

「設定」-「デバイス」-「ワコムタブレット」を開くと「スタイラスペンが見つかりません」という表示。
「設定を確認する」をクリックすると開く、ペンの動作確認をしてみると、ちゃんと筆圧動作はしていました。
しかし、ペンを動かすと追従がちょっとイマイチ・・・
丸く描いているのにカクカクで認識されてしまいます。
「xsetwacom –list」で認識されているワコムタブを確認してみたのですが、表示されません。
wacomドライバは読み込んでるようなんですけどね。

# xsetwacom --list
# lsmod|grep wa
wacom                 102400  0
hid                   118784  4 i2c_hid,hid_generic,usbhid,wacom
#

とりあえず下記を参考にしつつ調査中です
Linux Mint sarah (ubuntu16.04)ワコム ペンタブレット Intuos Draw 使ってみた&設定
Xsetwacomの解説
ArchLinux Wacomタブレット

Kernelを4.10.xにしたarmbianを使ったOrange Pi PCでSPI接続のLCDを使う



ラズパイ用Waveshare / Kuman 3.5インチ 320×480タッチパネル付き液晶をOrange Piで使う」の続編です。

Mainline Kernel 4.10.3を利用したarmbianに変えてみたところ、設定を追加する必要がありました。

今までの設定だと下記のようなエラーがでます。

[ 3480.448973] fbtft_device: spi_busnum_to_master(0) returned NULL
[ 3480.448982] fbtft_device: failed to register SPI device

これは、SPI関連ドライバの読み込み方法が変わったためです。
関連ドキュメント「Allwinner DT overlays」(DT=Device Tree)

直接的に参考になった資料は「How to enable hardware SPI」の「willmoreさんのコメント」にある下記を/boot/armbianEnv.txt に追加して再起動、というもの

overlay_prefix=sun8i-h3
overlays=spi-spidev
param_spidev_spi_bus=0
param_spidev_max_freq=100000000

上記を追加し、再起動することで、他は「ラズパイ用Waveshare / Kuman 3.5インチ 320×480タッチパネル付き液晶をOrange Piで使う」と同じ設定でLCDを制御することはできました。

ただ・・・なんか、X-Windows出力がうまくいかない感じで・・・

あとで、X.logをみて考えよっと・・・