Red Hat Training

A Red Hat training course is available for RHEL 8

14.2. ホストと Windows 仮想マシンとの間でファイルの共有

ホストシステムと、そのホストが接続している Windows 仮想マシンとの間で効率的なファイル共有を行うために、仮想マシンがアクセスできる Samba サーバーを準備できます。

前提条件

  • samba パッケージがホストにインストールされている。そうでない場合は、以下のコマンドを実行します。

    # yum install samba
  • 仮想マシンにホストが表示され、ネットワーク経由で到達可能である。これは、通常、仮想マシンが、仮想ネットワークの NAT および ブリッジ のタイプを使用して接続されている場合となります。ただし、macvtap 接続の場合は、最初にホストに macvlan 機能を設定する必要があります。改善点を報告する場合は、以下のように行います。

    1. ホストの /etc/systemd/network/ ディレクトリーに、vm-macvlan.netdev などのネットワークデバイスファイルを作成します。

      # vim /etc/systemd/network/vm-macvlan.netdev
    2. ネットワークデバイスファイルを編集し、以下の内容を追加します。vm-macvlan を、ネットワークデバイスの名前に置き換えます。

      [NetDev]
      Name=vm-macvlan
      Kind=macvlan
      
      [MACVLAN]
      Mode=bridge
    3. macvlan ネットワークデバイス (例: vm-macvlan.network) 用にネットワーク設定ファイルを作成します。

      # vim /etc/systemd/network/vm-macvlan.network
    4. ネットワーク設定ファイルを編集し、以下の内容を追加します。vm-macvlan を、ネットワークデバイスの名前に置き換えます。

      [Match]
      Name=_vm-macvlan_
      
      [Network]
      IPForward=yes
      Address=192.168.250.33/24
      Gateway=192.168.250.1
      DNS=192.168.250.1
    5. 物理ネットワークインターフェース用のネットワーク設定ファイルを作成します。たとえば、インターフェースが enp4s0 の場合は、以下のコマンドを実行します。

      # vim /etc/systemd/network/enp4s0.network

      使用するインターフェースが分からない場合は、ホストの ifconfig コマンドを使用して、アクティブなネットワークインターフェースの一覧を取得できます。

    6. 物理ネットワークが macvlan インターフェース (この場合は vm-macvlan) の一部になるように、物理ネットワーク設定ファイルを編集します。

      [Match]
      Name=enp4s0
      
      [Network]
      MACVLAN=vm-macvlan
    7. ホストを再起動します。

手順

  1. ホストで Samba 共有を作成し、外部システムでアクセスできるようにします。

    1. Samba にファイアウォールパーミッションを追加します。

      # firewall-cmd --permanent --zone=public --add-service=samba
      success
      # firewall-cmd --reload
      success
    2. /etc/samba/smb.conf ファイルを編集します。

      1. [global] セクションに以下を追加します。

        map to guest = Bad User
      2. ファイルの末尾に以下を追加します。

        #=== Share Definitions ===
        [VM-share]
        path = /samba/VM-share
        browsable = yes
        guest ok = yes
        read only = no
        hosts allow = 192.168.122.0/24

        hosts allow 行は、共有のアクセスが、仮想マシンネットワークにあるホストに限定されることに注意してください。共有にすべてのユーザーがアクセスできるようにするには、この行を削除します。

    3. /samba/VM-share ディレクトリーを作成します。

      # mkdir -p /samba/VM-share
    4. Samba サービスを有効にします。

      # systemctl enable smb.service
      Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
    5. Samba サービスを再起動します。

      # systemctl restart smb.service
    6. 仮想マシン用の VM-share ディレクトリーへのアクセスと変更を許可します。

      # chmod -R 0755 /samba/VM-share/
      # chown -R nobody:nobody /samba/VM-share/
    7. SELinux Samba 共有ラベルを /etc/samba/VM-share/ に追加します。

      # chcon -t samba_share_t /samba/VM-share/
  2. Windows ゲストオペレーティングシステムで、Samba 共有をネットワークの場所として割り当てます。

    1. ファイルエクスプローラーを開き、この PC を右クリックします。
    2. コンテキストメニューで、ネットワークの場所を追加する をクリックします。

      virt Win10 network loc1
    3. ネットワークの場所の追加 ウィザードが開きます。カスタムのネットワークの場所を選択し、次へ をクリックします。
    4. インターネットまたはネットワークのアドレスフィールドに host-IP/VM-share と入力します。host-IP はホストの IP アドレスになります。通常、ホストの IP は仮想マシンのデフォルトゲートウェイです。その後、次へ をクリックします。

      virt Win10 network loc2
    5. 共有ディレクトリーの名前を変更するかどうかをたずねられた場合は、デフォルト名のままにします。これにより、仮想マシンとゲストのファイル共有設定の一貫性が確保されます。次へ をクリックします。
    6. ネットワークの場所にアクセスできたら、完了 をクリックすると共有ディレクトリーが開きます。