tech_memo / VMWare


tech_memo/linux

ESXi6.5の仮想マシンに、Ubuntu18.04 serverがインストールできない

ESXiホスト起動・停止時に、自動でゲストOSを起動・停止させる

  • メンテナンスモードを切り替えつつ、ゲストOSを起動する方法
    • http://sabohani.tumblr.com/post/21898742175/esx起動時に自動的にメンテナンスモードの解除から特定のvmを起動するスクリプトを作ってみた
      • ESX用のスクリプトだが、ESXi用に修正すれば、同じことができそう。

ESXiの仮想マシンにVNCで接続

仮想Diskのプロビジョニングの種類

  • シックプロビジョニング(Lazy zeroed)
    • 仮想ディスク作成時に指定したサイズ分の領域を確保します。
  • シックプロビジョニング(Eager zeroed)
    • 仮想ディスク作成時に指定したサイズ分の領域を確保し、ゼロで初期化します。
  • シンプロビジョニング
    • 仮想ディスク作成時には最低限の領域のみ確保し、必要に応じて増加します。
  • http://www.projectgroup.info/tips/VMware/comm_0009.html

VMotion

  • VMWareのマイグレーション機能の名称

前提条件

実施方法

ESXiホスト

esxtopコマンド

  • Linuxでいうtopコマンド

ドキュメント


バッチーモード

  • バッチモードは-bを利用。CSVで出力される。出力量(列)が半端ないので、/.esxtop60rcで出力カラムを設定する
  • バッチモード時のCPU使用率の求め方は、HyperthreadingがONかどうかで異なる。「Core Util Time」カラムは、HT=ONの時だけ出力され、こちらを利用する。HT=OFFの場合は、「Util Time」を利用する
        if ("Physical Cpu(_Total)\% Core Util Time" exists) // Indicating hyper-threading is used  
           return "Physical Cpu(_Total)\% Core Util Time";  
        else  
           return "Physical Cpu(_Total)\% Util Time";  

topライクに表示されない場合(CSV形式で表示される)

  • 現象 : 以下のように、CSV形式で大量のデータが出力される
    [root@testserver19:~] esxtop -n1 | head -c 1000
    no termcap entry for a `xterm-color' terminal"(PDH-CSV 4.0) (UTC)(0)","\\testserver19\Memory\Memory Overcommit (1 Minute Avg)","\\testserver19\Memory\Memory Overcommit (5 Minute Avg)", ...以下略
    "10/26/2016 00:59:36","0.00","0.00","0.00","0.00","0.00","0.00","8.51","0.12","0.12","0.02","0.04","0.34","0.09","0.04","1.39","2.38","0.10","0.08","0.53","0.17","0.37", ...以下略
  • 原因 : ESXiサーバでログインした際のTERM環境変数の値が、ESXiサーバがサポートしていない値になっている
    • ログインした際のTERM環境変数の値
      [root@testserver19:~] echo $TERM
      xterm-color
    • サポートしているTerminalの種類
      [root@testserver19:~] find /usr/share/terminfo/ -type f
      /usr/share/terminfo/s/screen
      /usr/share/terminfo/l/linux
      /usr/share/terminfo/x/xterm
      /usr/share/terminfo/a/ansi
      /usr/share/terminfo/v/vt102
  • 対応方法 : ESXiサーバが対応しているTerminalに環境変数を設定する
    • 下記はコマンド実行時のみ、変数を変更する方法
      [root@testserver19:~] TERM=xterm esxtop
       1:02:31am up 1 day 18:05, 631 worlds, 2 VMs, 20 vCPUs; CPU load average: 0.00, 0.00, 0.00
      PCPU USED(%): 0.1 0.0 0.0 0.0 0.0 0.0 0.0 2.5 0.1 0.1 0.2 0.0 0.0 0.2  94 0.2 0.2 0.0 0.0 0.3 AVG: 4.9
      PCPU UTIL(%): 0.0  21  19  21  21  21  21  24 7.2 0.0 0.0  21  21 9.9  97 0.4 0.0  23 0.0 0.1 AVG:  16
      
            ID      GID NAME             NWLD   %USED    %RUN    %SYS   %WAIT %VMWAIT    %RDY   %IDLE  %OVRLP   %CSTP  %MLMTD  %SWPWT
        993518   993518 esxtop.158600       1   92.03   84.84    0.12    2.19       -    0.14    0.00    0.13    0.00    0.00    0.00
        631897   631897 testserver19-1             15    2.60    0.35    0.00 1309.37   55.60    0.03  817.21    0.01    0.00    0.00    0.00
        569375   569375 testserver19-0             15    0.81    0.65    0.21 1301.98    0.00    0.11 1516.47    0.00    0.00    0.00    0.00

esxcliコマンドでESXiホストの停止・再起動

  • 停止(シャットダウン)
    esxcli system shutdown poweroff -r <理由を記述(必須)>
  • 再起動
    esxcli system shutdown reboot -r <理由を記述(必須)>

ホスト上で、メンテナンスモードの切り替え

  • http://d.hatena.ne.jp/ogawad/20121130/1354293176
  • ESXiがesxcliコマンドでのメンテナンスモードの切り替えに対応しているかの確認
    # esxcli system maintenanceMode get
    Enabled
  • メンテナンスモードへの移行
    esxcli system maintenanceMode set --enable=true
    esxcli system maintenanceMode set -e true
  • メンテナンスモードの解除
    esxcli system maintenanceMode set --enable=false
    esxcli system maintenanceMode set -e false

ホストからコマンドラインでゲストOSを起動する

  • ゲストOSの一覧を取得
    ~ # vim-cmd vmsvc/getallvms
    Vmid     Name                      File                      Guest OS      Version   Annotation
    160    Linux5.5   [datastore1] Linux5.5_1/Linux5.5_1.vmx   rhel5_64Guest   vmx-07
    176    RHEL6.3    [datastore1] RHEL6.3/RHEL6.3.vmx         rhel6_64Guest   vmx-07
    208    RHEL6.5    [datastore1] RHEL6.4/RHEL6.4.vmx         rhel6_64Guest   vmx-07
    64     Linux5.1   [datastore1] Linux5.3/Linux5.3.vmx       rhel5_64Guest   vmx-07
    80     Linux5.3   [datastore1] Linux5.3_1/Linux5.3_1.vmx   rhel5_64Guest   vmx-07
  • Power ON/OFFの状態確認
    ~ # vim-cmd vmsvc/power.getstate 176
    Retrieved runtime info
    Powered off
  • Power ON
    ~ # vim-cmd vmsvc/power.on 176
    Powering on VM:
    
    ~ # vim-cmd vmsvc/power.getstate 176
    Retrieved runtime info
    Powered on

ESXiホストに、SSHでアクセスできるようvSphere Clientから設定

ESXiのホスト名取得・設定

  • ホスト名取得
    ~ # esxcli system hostname get
       Domain Name:
       Fully Qualified Domain Name: esxi01
       Host Name: esxi01
  • ホスト名変更
    ~ # esxcli system hostname set --host=dbserver
    ~ # esxcli system hostname get
       Domain Name:
       Fully Qualified Domain Name: dbserver
       Host Name: dbserver

ESXiホストのルーティング設定

  • esxcfg-routeコマンドを使用する
  • routing確認
    ~ # esxcfg-route -l
    VMkernel Routes:
    Network          Netmask          Gateway          Interface
    192.168.0.0      255.255.255.0    Local Subnet     vmk0
    default          0.0.0.0          192.168.0.1      vmk0
  • route追加
    ~ # esxcfg-route -a 10.84.72.0/22 192.168.0.254
    Adding static route 10.84.72.0/22 to VMkernel

VMWare/ESXi/ Disk拡大・縮小

仮想ディスクの圧縮


削除したはずの仮想マシンのファイルが残っている場合

  • 下記は削除したはずの「test」仮想マシンのファイル等が残っているケース
    /vmfs/volumes/4c3bf3ae-c4665992-81e4-002421072eb1 # ls
    Linux5.3    Linux5.3_1  Linux5.5    Linux5.5_1  RHEL6.3     RHEL6.4     test
    /vmfs/volumes/4c3bf3ae-c4665992-81e4-002421072eb1 # cd test/
    /vmfs/volumes/4c3bf3ae-c4665992-81e4-002421072eb1/test # ls -ltrh
    -rw-------    1 root     root          465 Jan 16 15:34 test.vmdk
    -rw-------    1 root     root        24.0G Jan 16 16:22 test-flat.vmdk
  • 直接削除したところ、vSphereから確認できる利用可能サイズは大きくなった。
    /vmfs/volumes/4c3bf3ae-c4665992-81e4-002421072eb1/test # cd ../
    /vmfs/volumes/4c3bf3ae-c4665992-81e4-002421072eb1 # rm -rf test/

LVMのディスク拡張

  • 下記が非常にわかりやすい
  • fdiskでパーティション作成時に、なぜか終点シリンダが選択できなかったが、以下の手順でできた
    • /dev/sdaにはすでにsda1, sda2のパーティションが作成されている
    • fdisk /dev/sdaで、sda4を作成。この時終点シリンダは指定できない。まだw(決定)は実行していない
    • 続けてsda3を作成。この時は終点シリンダを指定できる。
    • 続けて、sda4を削除。ファイルシステムを作成したりして、w(決定)でcommit

VSphere Clientで、ポートフォワードを使用する必要がある場合

  • http://d.hatena.ne.jp/shibainu55/20100602/1275961159
  • 以下3つのポートをフォワードする必要がある。
    $ ssh -L 443:<ESXiホスト>:443 <SSHサーバ>
    $ ssh -L 902:<ESXiホスト>:902 <SSHサーバ>
  • puttyでフォワードする場合、宛先IPがlocalhostになるが、vSphere Clinetはlocalhostや127.0.0.1のホスト名・IPは受け付けないので、hostsファイルにエイリアスの指定を追加する
    127.0.0.1 localhost esxiserver
  • 上記設定後、vShpere Clientから、IP/ホスト欄にesxiserverを指定すると接続可能になる

ESXi ゲストサーバの削除

  • 該当のマシンのアイコンを右クリックして、「ディスクから削除」をクリックするだけ。

virtualbox + vagran


VM Performance