Skip navigation
2017

VMware は、最近では Linux ゲスト OS の VMware Tools として、

Linux ディストリビューションが提供する open-vm-tools のパッケージをインストールすることを推奨しています。

 

そこで、VMware Workstation Pro 12 の共有フォルダ機能を open-vm-tools をインストールした Linux で使用してみました。

今回は、下記を使用しています。

  • VMware Workstation 12.5.5 Pro for Windows
  • ホスト OS: Windows 10
  • ゲスト OS: Oracle Linux 7.3 (UEK)

 

ちなみに、たまたま手元にあった Oracle Linux 7 を使用していますが Red Hat Enterprise Linux や CentOS でも同様です。

 

1. ホスト OS 側でフォルダを作成。

まず、ホストの Windows で、共有するためのフォルダと、

アクセス確認のための適当なテキストファイルを作成しておきます。

※Linux で開くので、テキストファイルのエンコードや改行コードには要注意・・・

 

今回は、C:\work\vmw_share フォルダに test.txt というファイルを作成してあります。

PS> cat C:\work\vmw_share\test.txt

VMTN Japanese Forum

 

2. VMware Workstation 共有フォルダを有効化 & 追加。

VMware Workstation で VM の設定を編集して、共有フォルダを有効にします。

 

「オプション」タブ → 「共有フォルダ」 で共有フォルダを有効(今回は「常に有効」)にして、
「追加」をクリックします。

vmw12-share-00.png

 

「共有フォルダ追加ウィザード」が起動するので「次へ」。

vmw12-share-01.png

 

ホスト OS 側のフォルダのパスと、ゲスト OS 側で認識される共有フォルダの名前を指定します。

今回は「vmw_share」という名前にしました。

vmw12-share-02.png

 

「この共有を有効化」のチェックを ON にして「完了」。

vmw12-share-03.png

 

「仮想マシンの設定」画面で、共有フォルダが追加されたことが確認できます。

vmw12-share-04.png

 

3. ゲスト OS 側でマウント & アクセス確認。

Workstation で起動する VM のゲスト OS で 共有フォルダをマウントして、

ファイルの読み取り、書き込みを試してみます。

 

今回のゲスト OS は Oracle Linux 7.3 です。

[root@vm72 ~]# cat /etc/oracle-release

Oracle Linux Server release 7.3

[root@vm72 ~]# uname -r

4.1.12-61.1.33.el7uek.x86_64

 

open-vm-tools のバージョンです。

[root@vm72 ~]# rpm -q open-vm-tools

open-vm-tools-10.0.5-4.0.1.el7_3.x86_64

[root@vm72 ~]# vmware-toolbox-cmd -v

10.0.5.52125 (build-3227872)

 

open-vm-tools がインストールされていない場合は、yum コマンドなどでインストールします。

# yum install -y open-vm-tools

 

Workstation で設定済みの共有フォルダ「vmw_share」は、ゲスト OS の Linux では認識されているようです。

[root@vm72 ~]# vmware-hgfsclient

vmw_share

 

Workstation 12 Pro のマニュアルだと、共有フォルダを mount コマンドでマウントしています。

Mounting Shared Folders in a Linux Guest

 

しかし、ただ mount コマンドを実行しても、共有フォルダの HGFS はマウントできませんでした。

[root@vm72 ~]# mount -t vmhgfs .host:/ /mnt/hgfs/

mount: unknown filesystem type 'vmhgfs'

[root@vm72 ~]# grep hgfs /proc/filesystems  | wc -l

0

 

そこで、open-vm-tools に含まれる vmhgfs-fuse コマンドでマウントしてみました。

[root@vm72 ~]# vmhgfs-fuse /mnt/hgfs/

[root@vm72 ~]# mount | grep hgfs

vmhgfs-fuse on /mnt/hgfs type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

[root@vm72 ~]# df -h /mnt/hgfs/

ファイルシス   サイズ  使用  残り 使用% マウント位置

vmhgfs-fuse      220G  198G   22G   91% /mnt/hgfs

[root@vm72 ~]# ls -l /mnt/hgfs

合計 0

drwxrwxrwx. 1 root root 0  4月  8 21:56 vmw_share

[root@vm72 ~]# ls -l /mnt/hgfs/vmw_share/

合計 1

-rwxrwxrwx. 1 root root 44  4月  8 21:56 test.txt

 

Windows で作成しておいたファイルを読み取ることができます。

[root@vm72 ~]# cat /mnt/hgfs/vmw_share/test.txt

VMTN Japanese Forum

 

ファイルに追記してみました。

[root@vm72 ~]# echo "wo yoroshiku." >> /mnt/hgfs/vmw_share/test.txt

[root@vm72 ~]# cat /mnt/hgfs/vmw_share/test.txt

VMTN Japanese Forum

wo yoroshiku.

 

ホストの Windows 側でも追記されました。

PS> cat C:\work\vmw_share\test.txt

VMTN Japanese Forum

wo yoroshiku.

 

ちなみに、vmware-hgfsclient と vmhgfs-fuse は、どちらも open-vm-tools に含まれています。

[root@vm72 ~]# rpm -qf `which vmware-hgfsclient`

open-vm-tools-10.0.5-4.0.1.el7_3.x86_64

[root@vm72 ~]# rpm -qf `which vmhgfs-fuse`

open-vm-tools-10.0.5-4.0.1.el7_3.x86_64

 

4. 一般ユーザからのアクセスについて。

共有フォルダは、vmhgfs-fuse コマンドのデフォルトのオプションでマウントした場合、
Linux でパーミッション設定が「rwxrwxrwx」となっていても 一般ユーザからはアクセスできないようになっています。

[gowatana@vm72 ~]$ id gowatana

uid=1000(gowatana) gid=1000(gowatana) groups=1000(gowatana)

[gowatana@vm72 ~]$ cat /mnt/hgfs/vmw_share/test.txt

cat: /mnt/hgfs/vmw_share/test.txt: 許可がありません

 

root 以外のユーザで共有フォルダを使用したい場合は、「allow_other」オプションを付与するアクセス可能になります。

※vmhgfs-fuse コマンドは root ユーザか、sudo コマンドで実行します。

[root@vm72 ~]# umount /mnt/hgfs/

[root@vm72 ~]# vmhgfs-fuse -o allow_other /mnt/hgfs/

[root@vm72 ~]# mount | grep hgfs

vmhgfs-fuse on /mnt/hgfs type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)

 

一般ユーザでも読み取り / 書き込みになりました。

[gowatana@vm72 ~]$ echo "desu..." >> /mnt/hgfs/vmw_share/test.txt

[gowatana@vm72 ~]$ cat /mnt/hgfs/vmw_share/test.txt

VMTN Japanese Forum

wo yoroshiku.

desu...

 

以上、VMware Workstation の共有フォルダ機能を open-vm-tools の Linux で使用してみる話でした。

ふと VM を vSphere HA 無効のクラスタの ESXi から vSphere HA 有効のクラスタの ESXi に vMotion したら

本当に HA での保護は有効になるのか? とおもったので、実際に確認してみました。

今回は、PowerCLI で確認してみます。

 

使用した PowerCLI のバージョンです。

PowerCLI C:\> (Get-PowerCLIVersion).UserFriendlyVersion

VMware PowerCLI 6.5 Release 1 build 4624819

 

vCenter 6.5 に接続しています。

PowerCLI C:\> $global:DefaultVIServers | fl Name,ProductLine,Version,Build

 

 

Name        : vc-sv01.go-lab.jp

ProductLine : vpx

Version     : 6.5

Build       : 4944578

 

 

「vm01」という名前の VM  を vMotion してみます。

PowerCLI C:\> Get-VM vm01 | fl Name,PowerState,@{N="vmx_os_type";E={$_.ExtensionData.Config.GuestFullName}}

 

 

Name        : vm01

PowerState  : PoweredOn

vmx_os_type : VMware Photon OS (64-bit)

 

 

クラスタを 2つ用意しています。

  • vsan-cluster-01: vSphere HA 有効
  • vsan-cluster-02: vSphere HA 無効

PowerCLI C:\> Get-Cluster vsan-cluster-* | select Name,HAEnabled

 

 

Name            HAEnabled

----            ---------

vsan-cluster-01     False

vsan-cluster-02      True

 

 

現状では、vm01 は vsan-cluster-01 にいて、vSphere HA で保護されていません。

保護されている場合は、VM の ExtensionData.Runtime.DasVmProtection.DasProtected が true になります。

(今回は vHAProtected と表示しています)

PowerCLI C:\> Get-VM vm01 | fl Name,PowerState,VMHost,@{N="Parent";E={$_.VMHost.Parent}},@{N="vHAProtected";E={($_.ExtensionData.Runtime.DasVmProtection).DasProtected}}

 

 

Name         : vm01

PowerState   : PoweredOn

VMHost       : hv-i21.go-lab.jp

Parent       : vsan-cluster-01

vHAProtected :

 

 

vSphere HA が有効な、vsan-cluster-02 の ESXi に vMotion してみます。

クラスタには 3台の ESXi が含まれています。

 

PowerCLI C:\> Get-Cluster vsan-cluster-02 | Get-VMHost | select Name,Version,Build

 

 

Name             Version Build

----             ------- -----

hv-i26.go-lab.jp 6.5.0   4887370

hv-i24.go-lab.jp 6.5.0   4887370

hv-i25.go-lab.jp 6.5.0   4887370

 

 

それでは hv-i24.go-lab.jp という ESXi に vMotion します。

PoweredOn の VM に Move-VM を実行すると、vMotion になります。

PowerCLI C:\> Get-VM vm01 | Move-VM -Destination hv-i24.go-lab.jp -Datastore vsanDatastore-02

 

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm01                 PoweredOn  1        2.000

 

 

vsan-cluster-02 に含まれるホストに vMotion した vm01 は、vSphere HA で保護されました。

PowerCLI C:\> Get-VM vm01 | fl Name,PowerState,VMHost,@{N="Parent";E={$_.VMHost.Parent}},@{N="vHAProtected";E={($_.ExtensionData.Runtime.DasVmProtection).DasProtected}}

 

 

Name         : vm01

PowerState   : PoweredOn

VMHost       : hv-i24.go-lab.jp

Parent       : vsan-cluster-02

vHAProtected : True

 

 

vCenter の イベント でも、VM が保護されたことが分かります。

PowerCLI C:\> Get-VM vm01 | Get-VIEvent -MaxSamples 7 | fl CreatedTime,FullFormattedMessage

 

 

CreatedTime          : 2017/04/07 8:42:08

FullFormattedMessage : Alarm 'Virtual machine memory usage' on vm01 changed fro

                       m Gray to Green

 

CreatedTime          : 2017/04/07 8:42:08

FullFormattedMessage : Alarm 'Virtual machine CPU usage' on vm01 changed from G

                       ray to Green

 

 

CreatedTime          : 2017/04/07 8:41:19

FullFormattedMessage : Virtual machine vm01 in cluster vsan-cluster-02 in dc01

                       is vSphere HA Protected and HA will attempt to restart i

                       t after a failure.

 

 

CreatedTime          : 2017/04/07 8:41:06

FullFormattedMessage : Migration of virtual machine vm01 from hv-i21.go-lab.jp,

                        vsanDatastore-01 to hv-i24.go-lab.jp, vsanDatastore-02

                       completed

 

 

CreatedTime          : 2017/04/07 8:40:47

FullFormattedMessage : Migrating vm01 off host hv-i21.go-lab.jp in dc01

 

 

CreatedTime          : 2017/04/07 8:40:46

FullFormattedMessage : Hot migrating vm01 from hv-i21.go-lab.jp, vsanDatastore-

                       01 in dc01 to hv-i24.go-lab.jp, vsanDatastore-02 in dc01

                        with encryption

 

 

CreatedTime          : 2017/04/07 8:40:45

FullFormattedMessage : Task: Relocate virtual machine

 

 

以上、vSphere HA についての素朴な疑問を実機確認してみる話でした。