次の方法で共有


Azure IoT Edge for Linux on Windows と Windows フォルダーを共有する

適用対象:IoT Edge 1.5 のチェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

Azure IoT Edge for Linux on Windows (EFLOW) 仮想マシンは Windows ホスト OS から分離されており、仮想マシンはホスト ファイル システムにアクセスできません。 既定では、EFLOW 仮想マシンには独自のファイル システムがあり、ホスト コンピューター上のフォルダーまたはファイルにアクセスできません。 EFLOW ファイルとフォルダー共有メカニズムを使用すると、Windows のファイルとフォルダーを CBL-Mariner Linux EFLOW VM と共有できます。

この記事では、Windows ホスト OS と EFLOW 仮想マシンの間でフォルダーを共有する方法について説明します。

前提条件

  • Azure IoT Edge for Linux on Windows 1.4.4 LTS 以降の更新プログラム。 EFLOW リリース ノートの詳細については、EFLOW リリースに関するページを参照してください。
  • x64 または x86 プロセッサを搭載したマシン。
  • 2022 年 11 月の更新プログラムが適用された Windows 10 または 11 ( 21H2 ) 以降。

EFLOW デバイスの準備ができていない場合は、このガイドに進む前にデバイスを作成してください。 「対称キーを使用して IoT Edge for Linux on Windows デバイスを作成およびプロビジョニングする」の手順に従って、EFLOW のインストール、デプロイ、プロビジョニングを行います。

動作方法

Windows 上の Azure IoT Edge for Linux では、ファイルとフォルダーの共有に virtiofs テクノロジが使用されます。 Virtiofs は、仮想マシンがホスト OS 上のディレクトリ ツリーを使用できるようにする共有ファイル システムです。 他の方法とは異なり、ローカル ファイル システムのセマンティクスとパフォーマンス用に設計されています。 Virtiofs は、仮想化のために再利用されるネットワーク ファイル システムではありません。 仮想マシンとハイパーバイザーのローカリティを使用して、ネットワーク ファイル システムのオーバーヘッドを回避します。

Virtio-FS テクノロジを使用して EFLOW 仮想マシンと共有されている Windows フォルダーのスクリーンショット。

Windows フォルダーは EFLOW Linux VM にのみ共有でき、他の方法では共有できません。 セキュリティのため、フォルダー共有を設定するときは、 ルート フォルダーを指定する必要があり、すべての共有フォルダーがその ルート フォルダーの下にある必要があります。

共有フォルダーを追加または削除する前に、次の 4 つの概念を確認してください。

  • ルート フォルダー: EFLOW VM と共有するサブフォルダーのルート パスである Windows フォルダー。 ルート フォルダー自体は共有されません。 ルート フォルダーの下にあるサブフォルダーのみが共有されます。
  • 共有フォルダー: EFLOW VM と共有する ルート フォルダー の下にある Windows フォルダー。 このフォルダー内のすべてのコンテンツは、EFLOW VM と共有されます。
  • マウント ポイント: Windows フォルダーの内容が表示される EFLOW VM 内のパス。
  • マウント オプション: "読み取り専用" または "読み取りおよび書き込み" アクセス。 この設定は、EFLOW VM 内のマウントされたフォルダーのファイル アクセスを制御します。

共有フォルダーを追加する

次の手順では、1 つ以上の Windows ホスト OS フォルダーを EFLOW 仮想マシンと共有する EFLOW PowerShell コマンドの例を示します。

Windows 10 を使用している場合は、新しい MSI インストールまたは更新後に Windows ホスト OS を再起動してから、Windows 共有フォルダーを EFLOW VM に追加します。

  1. 新しいルート共有フォルダーを作成します。 エクスプローラーに移動し、ルート フォルダーの場所を選択して、フォルダーを作成します。

    たとえば、C:\Shared の下に EFLOW-Shared という名前のルート フォルダーを作成します。

    EFLOW-Shared フォルダーを示す C:\Shared フォルダーのスクリーンショット。

  2. EFLOW 仮想マシンと共有するルート フォルダーの下に 1 つ以上の共有フォルダーを作成します。

    たとえば、2 つのフォルダーを作成します。1 つは Read-Access という名前で、1 つは Read-Write-Access という名前です。

    Windows 共有フォルダー Read-Access と Read-Write-Access のスクリーンショット。

  3. Read-Access 共有フォルダー内に、後で EFLOW 仮想マシン内で読み取るサンプル ファイルを作成します。

    たとえば、テキスト エディターを使用して、読み取りアクセス フォルダー にHello-World.txt という名前のファイルを作成し、そのファイルにテキストを保存します。

  4. テキスト エディターを使用して、共有フォルダー構成ファイルを作成します。 このファイルには、マウント ポイントやオプションなど、EFLOW VM と共有するフォルダーに関する情報が含まれています。 JSON 構成ファイルの詳細については、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

    たとえば、このシナリオでは、ルート フォルダー の下に作成した 2 つの共有 フォルダーを共有します。

    • 読み取りアクセス共有フォルダーは、読み取り専用アクセスを使用してパス /tmp/host-read-access の下の EFLOW 仮想マシンにマウントされます。
    • 読み取り/書き込みアクセス共有フォルダーは、パス /tmp/host-read-write-access の下の EFLOW 仮想マシンに、読み取りおよび書き込みアクセスを使用してマウントされます。

    ルート フォルダーEFLOW-SharedsharedFolders.json という名前の JSON 構成ファイルを作成し、次の内容を指定します。

    [
        {
            "sharedFolderRoot": "C:\\Shared\\EFLOW-Shared",
            "sharedFolders": [
                {   
                    "hostFolderPath": "Read-Access", 
                    "readOnly": true, 
                    "targetFolderOnGuest": "/tmp/host-read-access" 
                },
                {   
                    "hostFolderPath": "Read-Write-Access", 
                    "readOnly": false, 
                    "targetFolderOnGuest": "/tmp/host-read-write-access" 
                }
            ]
        }
    ]
    
  5. 管理者特権の PowerShell セッションを開くには、[ 管理者として実行] を選択します。

  6. 前に作成した構成ファイル (sharedFolders.json) を使用して、共有フォルダーの割り当てを作成します。

    Add-EflowVmSharedFolder -sharedFoldersJsonPath "C:\Shared\EFLOW-Shared\sharedFolders.json"
    
  7. コマンドレットが完了すると、EFLOW 仮想マシンは共有フォルダーにアクセスできます。 EFLOW 仮想マシンに接続し、フォルダーが正しく共有されていることを確認します。

  8. (/tmp/host-read-access の下にマウントされている) 読み取りアクセス共有フォルダーに移動し、Hello-World.txt ファイルの内容を確認します。

    既定では、すべての共有フォルダーは ルートによって所有されます。 フォルダーにアクセスするには、sudo suを使用して root としてサインインするか、 コマンドを使用してフォルダーの所有権を chown に変更します。

    sudo su
    cd /tmp/host-read-access
    cat Hello-World.txt
    

すべてが成功した場合は、EFLOW 仮想マシンに Hello-World.txt ファイルの内容が表示されます。 書き込みアクセスを確認するには、 /tmp/host-read-write-access にファイルを作成し、 読み取り/書き込みアクセス Windows ホスト フォルダー内の新しいファイルの内容を確認します。

共有フォルダーを確認する

次の手順では、EFLOW PowerShell コマンドの例を使用して、Windows 共有フォルダーとオプション (アクセス許可とマウント ポイント) を EFLOW 仮想マシンで確認します。

  1. [管理者として実行] で開始して、管理者特権の PowerShell セッションを開きます。

  2. "ルート フォルダー" の下にある Windows 共有フォルダーの情報を一覧表示します。 たとえば、前のセクションのシナリオを使用して、Read-AccessRead-Write-Access の両方の共有フォルダーの情報を一覧表示できます。

    Get-EflowVmSharedFolder -sharedfolderRoot "C:\Shared\EFLOW-Shared" -hostFolderPath @("Read-Access", "Read-Write-Access")
    

Get-EflowVmSharedFolder コマンドレットの詳細については、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

共有フォルダーを削除する

次の手順では、EFLOW 仮想マシンとの Windows 共有フォルダーの共有を停止する EFLOW PowerShell コマンドの例を示します。

  1. [管理者として実行] で開始して、管理者特権の PowerShell セッションを開きます。

  2. ルートフォルダーの下にある Read-Access という名前のフォルダーと EFLOW 仮想マシンの共有を停止します。

    Remove-EflowVmSharedFolder -sharedfolderRoot "C:\Shared\EFLOW-Shared" -hostFolderPath "Read-Access"
    

Remove-EflowVmSharedFolder コマンドレットの詳細については、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

次のステップ

Windows 上の Azure IoT Edge for Linux の一般的な問題と解決策の手順に従って、Windows で Linux 用 IoT Edge を設定するときに発生する問題のトラブルシューティングを行います。