다음을 통해 공유


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 업데이트를 참조하세요.

EFLOW(Windows 기반 Linux용 Azure IoT Edge) 가상 머신은 Windows 호스트 OS에서 격리되고 가상 머신은 호스트 파일 시스템에 액세스할 수 없습니다. 기본적으로 EFLOW 가상 머신에는 자체 파일 시스템이 있으며 호스트 컴퓨터의 폴더 또는 파일에 액세스할 수 없습니다. EFLOW 파일 및 폴더 공유 메커니즘을 사용하면 CBL-Mariner Linux EFLOW VM과 Windows 파일 및 폴더를 공유할 수 있습니다.

이 문서에서는 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 디바이스가 준비되지 않은 경우 이 가이드를 계속 진행하기 전에 디바이스를 만듭니다. 대칭 키를 사용하여 Windows 디바이스에서 Linux용 IoT Edge를 만들고 프로비전하여 EFLOW를 설치, 배포 및 프로비전하는 단계를 따릅니다.

작동 방식

Windows의 Linux용 Azure IoT Edge는 파일 및 폴더 공유에 virtiofs 기술을 사용합니다. Virtiofs 는 가상 머신이 호스트 OS에서 디렉터리 트리를 사용할 수 있도록 하는 공유 파일 시스템입니다. 다른 방법과 달리 로컬 파일 시스템 의미 체계 및 성능을 위해 설계되었습니다. Virtiofs는 가상화용으로 용도가 변경된 네트워크 파일 시스템이 아닙니다. 가상 머신 및 하이퍼바이저의 지역성을 사용하여 네트워크 파일 시스템의 오버헤드를 방지합니다.

Virtio-FS 기술을 사용하여 EFLOW 가상 머신과 공유된 Windows 폴더의 스크린샷

Windows 폴더를 EFLOW Linux VM에만 공유할 수 있으며 다른 방법은 공유할 수 없습니다. 보안을 위해 폴더 공유를 설정할 때 루트 폴더를 제공해야 하며 모든 공유 폴더는 해당 루트 폴더 아래에 있어야 합니다.

공유 폴더를 추가하거나 제거하기 전에 다음 네 가지 개념을 검토합니다.

  • 루트 폴더: EFLOW VM과 공유하는 하위 폴더의 루트 경로인 Windows 폴더입니다. 루트 폴더 자체는 공유되지 않습니다. 루트 폴더 아래의 하위 폴더만 공유됩니다.
  • 공유 폴더: EFLOW VM과 공유하는 루트 폴더 아래의 Windows 폴더입니다. 이 폴더의 모든 콘텐츠는 EFLOW VM과 공유됩니다.
  • 탑재 지점: Windows 폴더 콘텐츠가 표시되는 EFLOW VM 내의 경로입니다.
  • 탑재 옵션: 읽기 전용 또는 읽기 및 쓰기 액세스. 이 설정은 EFLOW VM 내의 탑재된 폴더에 대한 파일 액세스를 제어합니다.

공유 폴더 추가

다음 단계에서는 EFLOW 가상 머신과 하나 이상의 Windows 호스트 OS 폴더를 공유하는 EFLOW PowerShell 명령 예제를 보여 줍니다.

참고 항목

Windows 10을 사용하는 경우 EFLOW VM에 Windows 공유 폴더를 추가하기 전에 새 MSI 설치 또는 업데이트 후에 Windows 호스트 OS를 다시 부팅합니다.

  1. 새 루트 공유 폴더를 만듭니다. 파일 탐색기로 이동하여 루트 폴더의 위치를 선택하고 폴더를 만듭니다.

    예를 들어 C:\Shared에서 EFLOW-Shared라는 루트 폴더를 만듭니다.

    EFLOW-Shared 폴더를 보여 주는 C:\Shared 폴더의 스크린샷

  2. 루트 폴더 아래에 EFLOW 가상 머신과 공유할 공유 폴더를 하나 이상 만듭니다.

    예를 들어 읽기 액세스라는 폴더와 읽기-쓰기-액세스라는 두 개의 폴더를 만듭니다.

    Windows 공유 폴더 읽기 액세스 및 읽기-쓰기 액세스의 스크린샷

  3. Read-Access 공유 폴더 내에서 나중에 EFLOW 가상 머신 내부에서 읽을 샘플 파일을 만듭니다.

    예를 들어 텍스트 편집기를 사용하여 읽기-액세스 폴더에 Hello-World.txt 파일을 만들고 파일에 일부 텍스트를 저장합니다.

  4. 텍스트 편집기를 사용하여 공유 폴더 구성 파일을 만듭니다. 이 파일에는 탑재 지점 및 옵션을 포함하여 EFLOW VM과 공유할 폴더에 대한 정보가 있습니다. JSON 구성 파일에 대한 자세한 내용은 IoT Edge for Linux on Windows용 PowerShell 함수를 참조하세요.

    예를 들어 이 시나리오에서는 루트 폴더 아래에 만든 두 개의 공유 폴더를 공유합니다.

    • 읽기-액세스 공유 폴더는 읽기 전용 액세스 권한이 있는 /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. cmdlet이 완료되면 EFLOW 가상 머신이 공유 폴더에 액세스할 수 있습니다. EFLOW 가상 머신에 연결하고 폴더가 올바르게 공유되는지 확인합니다.

  8. 읽기 액세스 공유 폴더(/tmp/host-read-access 아래에 탑재됨)로 이동하여 Hello-World.txt 파일의 내용을 확인합니다.

    참고 항목

    기본적으로 모든 공유 폴더는 루트에서 소유합니다. 폴더에 액세스하려면 명령을 사용하여 sudo su 루트로 로그인하거나 폴더 소유권을 chown로 변경합니다.

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

모든 작업이 성공하면 EFLOW 가상 머신에 Hello-World.txt 파일의 내용이 표시됩니다. 쓰기 액세스를 확인하려면 /tmp/host-read-write-access 에서 파일을 만든 다음 읽기-쓰기-액세스 Windows 호스트 폴더에서 새 파일의 내용을 확인합니다.

공유 폴더 확인

다음 단계에서는 EFLOW 가상 머신에서 Windows 공유 폴더 및 옵션(액세스 권한 및 탑재 지점)을 확인하는 EFLOW PowerShell 명령의 예를 제공합니다.

  1. 관리자 권한으로 실행으로 시작하여 관리자 권한의 PowerShell 세션을 엽니다.

  2. 루트 폴더 아래에 Windows 공유 폴더 정보를 나열합니다. 예를 들어, 이전 섹션의 시나리오를 사용하여 Read-AccessRead-Write-Access 공유 폴더의 정보를 모두 나열할 수 있습니다.

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

Get-EflowVmSharedFolder cmdlet에 대한 자세한 내용은 IoT Edge for Linux on Windows용 PowerShell 함수를 참조하세요.

공유 폴더 제거

다음 단계는 Windows 공유 폴더와 EFLOW 가상 머신의 공유를 중지하는 예 EFLOW PowerShell 명령을 제공합니다.

  1. 관리자 권한으로 실행으로 시작하여 관리자 권한의 PowerShell 세션을 엽니다.

  2. 루트 폴더 아래의 Read-Access라는 폴더를 EFLOW 가상 머신과의 공유를 중지합니다.

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

Remove-EflowVmSharedFolder cmdlet에 대한 자세한 내용은 IoT Edge for Linux on Windows용 PowerShell 함수를 참조하세요.

다음 단계

Windows에서 Linux용 IoT Edge를 설정할 때 발생하는 문제를 해결하려면 Windows의 Linux용 Azure IoT Edge에 대한 일반적인 문제 및 해결 방법의 단계를 따릅니다.