다음을 통해 공유


Azure Lab Services에서 외부 파일 스토리지 사용

이 문서에서는 Azure Lab Services에서 외부 파일 스토리지를 사용하기 위한 몇 가지 옵션을 설명합니다. Azure FilesSMB 2.1 및 SMB 3.0을 통해 액세스할 수 있는 클라우드에서 완전 관리형 파일 공유를 제공합니다. Azure Files 공유는 가상 네트워크에서 퍼블릭으로 또는 프라이빗으로 연결할 수 있습니다. 파일 공유에 연결하기 위해 랩 사용자의 Active Directory 자격 증명을 사용하도록 공유를 구성할 수도 있습니다. Linux 컴퓨터를 사용하는 경우 Azure Lab Services에서 외부 파일 스토리지용 NFS 볼륨과 함께 Azure NetApp Files를 사용할 수도 있습니다.

사용할 솔루션

다음 표에서는 각 외부 스토리지 솔루션에 대한 중요한 고려 사항을 나열합니다.

솔루션 알아야 할 중요 사항
퍼블릭 엔드포인트를 사용하는 Azure Files 공유
  • 모든 사용자에게 읽기/쓰기 권한이 있습니다.
  • 가상 네트워크 피어링이 필요하지 않습니다.
  • 랩 VM뿐 아니라 모든 VM에서 액세스할 수 있습니다.
  • Linux를 사용하는 경우 랩 사용자는 스토리지 계정 키에 액세스할 수 있습니다.
프라이빗 엔드포인트를 사용하는 Azure Files 공유
  • 모든 사용자에게 읽기/쓰기 권한이 있습니다.
  • 가상 네트워크 피어링이 필요합니다.
  • 스토리지 계정과 동일한 네트워크(또는 피어링된 네트워크)의 VM에만 액세스할 수 있습니다.
  • Linux를 사용하는 경우 랩 사용자는 스토리지 계정 키에 액세스할 수 있습니다.
NFS 볼륨을 사용하는 Azure NetApp Files
  • 볼륨에 대한 읽기 또는 읽기/쓰기 권한을 설정할 수 있습니다.
  • 사용 권한은 랩 VM의 IP 주소를 사용하여 설정됩니다.
  • 가상 네트워크 피어링이 필요합니다.
  • Azure NetApp Files 서비스를 사용하려면 등록해야 할 수 있습니다.
  • Linux 전용입니다.

외부 스토리지 사용 비용은 Azure Lab Services 사용 비용에 포함되지 않습니다. 가격 책정에 대한 자세한 내용은 Azure Files 가격 책정Azure NetApp Files 가격 책정 페이지를 참조하세요.

Azure Files 공유

Azure Files 공유는 퍼블릭 또는 프라이빗 엔드포인트를 사용하여 액세스됩니다. 스토리지 계정 키를 암호로 사용하여 공유를 가상 머신에 탑재합니다. 이 접근 방식에서는 모든 사용자가 파일 공유에 대한 읽기/쓰기 권한을 가집니다.

기본적으로 표준 파일 공유는 최대 5TiB까지 확장할 수 있습니다. 최대 100TiB에 걸쳐 있는 파일 공유를 만드는 방법에 대한 자세한 내용은 Azure 파일 공유 만들기를 참조하세요.

퍼블릭 엔드포인트 사용에 대한 고려 사항

  • 스토리지 계정의 가상 네트워크는 랩 가상 네트워크에 연결할 필요가 없습니다. 템플릿 VM이 게시되기 전에 언제든지 파일 공유를 만들 수 있습니다.
  • 사용자에게 스토리지 계정 키가 있는 경우 모든 머신에서 파일 공유에 액세스할 수 있습니다.
  • Linux 랩 사용자는 스토리지 계정 키를 볼 수 있습니다. Azure Files 공유를 탑재하기 위한 자격 증명은 Linux VM의 {file-share-name}.cred에 저장되고 sudo에서 읽을 수 있습니다. 랩 사용자에게는 Azure Lab Services VM에서 기본적으로 sudo 액세스 권한이 제공되므로 스토리지 계정 키를 읽을 수 있습니다. 스토리지 계정 엔드포인트가 퍼블릭인 경우 랩 사용자가 랩 VM 외부의 파일 공유에 대한 액세스 권한을 가져올 수 있습니다. 클래스가 종료된 후 스토리지 계정 키를 회전하거나 프라이빗 파일 공유를 사용하는 것이 좋습니다.

프라이빗 엔드포인트 사용에 대한 고려 사항

  • 이 방법을 사용하려면 파일 공유 가상 네트워크가 랩에 연결되어야 합니다. 랩에 대한 고급 네트워킹을 사용하도록 설정하려면 가상 네트워크 주입을 사용하여 Azure Lab Services에서 가상 네트워크에 연결을 참조하세요. 가상 네트워크 주입은 랩 계획을 만드는 동안 수행해야 합니다.
  • 액세스는 개인 네트워크에서 시작되는 트래픽으로 제한되며 퍼블릭 인터넷을 통해 액세스할 수 없습니다. 개인 가상 네트워크의 VM 전용으로, 개인 가상 네트워크로 피어링된 네트워크의 VM 또는 개인 네트워크의 VPN에 연결된 머신은 파일 공유에 액세스할 수 있습니다.
  • Linux 랩 사용자는 스토리지 계정 키를 볼 수 있습니다. Azure Files 공유를 탑재하기 위한 자격 증명은 Linux VM의 {file-share-name}.cred에 저장되고 sudo에서 읽을 수 있습니다. 랩 사용자에게는 Azure Lab Services VM에서 기본적으로 sudo 액세스 권한이 제공되므로 스토리지 계정 키를 읽을 수 있습니다. 클래스가 종료된 후 스토리지 계정 키를 회전하는 것이 좋습니다.

Azure 파일 공유에 랩 VM 연결

Azure 파일 공유에 연결된 VM을 만들려면 다음 단계를 수행합니다.

  1. Azure Storage 계정을 만듭니다. 연결 방법 페이지에서 퍼블릭 엔드포인트 또는 프라이빗 엔드포인트를 선택합니다.

  2. 프라이빗 메서드를 사용하는 경우 가상 네트워크에서 파일 공유에 액세스할 수 있도록 프라이빗 엔드포인트를 만듭니다.

  3. Azure 파일 공유를 만듭니다. 퍼블릭 엔드포인트를 사용하는 경우 스토리지 계정의 퍼블릭 호스트 이름으로 파일 공유에 연결할 수 있습니다. 프라이빗 엔드포인트를 사용하는 경우 개인 IP 주소로 파일 공유에 연결할 수 있습니다.

  4. Azure 파일 공유를 템플릿 VM에 탑재합니다.

  5. 템플릿 VM을 게시합니다.

Important

Windows Defender 방화벽이 포트 445를 통해 나가는 SMB 연결을 차단하지 않는지 확인합니다. 기본적으로 Azure VM에는 SMB가 허용됩니다.

Linux에서 Azure Files 사용

Azure Files 공유를 탑재하는 기본 지침을 사용하는 경우 템플릿이 게시된 후에는 랩 VM에서 파일 공유가 사라진 것처럼 보입니다. 다음 수정된 스크립트는 이 문제를 해결합니다.

퍼블릭 엔드포인트가 있는 파일 공유의 경우:

#!/bin/bash

# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""

# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt" 

sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
    sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
    sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred

sudo bash -c "echo ""//$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino

프라이빗 엔드포인트가 있는 파일 공유의 경우:

#!/bin/bash

# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_IP=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""

# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt" 

sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
    sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
    sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$storage_account_name.cred

sudo bash -c "echo ""//$STORAGE_ACCOUNT_IP/$FILESHARE_NAME /$MOUNT_DIRECTORY/$fileshare_name cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino

Azure Files 공유를 /mnt 디렉터리에 탑재하는 템플릿 VM이 이미 게시된 경우 랩 사용자는 다음 중 하나를 수행할 수 있습니다.

  • /mnt/etc/fstab 파일 맨 위에 탑재하도록 명령을 이동합니다.
  • /mnt/{file-share-name}/prm-mnt/{file-share-name}와 같이 다른 디렉터리에 탑재하도록 명령을 수정합니다.

랩 사용자는 mount -a를 실행하여 디렉터리를 다시 탑재해야 합니다.

일반적인 정보는 Linux에서 Azure Files 사용을 참조하세요.

NFS 볼륨을 사용하는 Azure NetApp Files

Azure NetApp Files 는 엔터프라이즈급의 고성능 유료 파일 스토리지 서비스입니다.

  • 볼륨별로 액세스 정책 설정
  • 권한 정책은 각 볼륨의 IP 기반입니다.
  • 랩 사용자가 다른 랩 사용자가 액세스할 수 없는 자체 볼륨을 필요로 하는 경우 랩을 게시한 후에 권한 정책을 할당해야 합니다.
  • Azure Lab Services는 Linux 기반 랩 가상 머신만 Azure NetApp Files에 연결하도록 지원합니다.
  • Azure NetApp Files 용량 풀에 대한 가상 네트워크는 랩에 연결되어야 합니다. 랩에 대한 고급 네트워킹을 사용하도록 설정하려면 가상 네트워크 주입을 사용하여 Azure Lab Services에서 가상 네트워크에 연결을 참조하세요. 가상 네트워크 주입은 랩 계획을 만드는 동안 수행해야 합니다.

Azure Lab Services에서 Azure NetApp Files 공유를 사용하려면:

  1. Azure NetApp Files 및 NFS 볼륨 설정의 단계에 따라 Azure NetApp Files 용량 풀 및 하나 이상의 NFS 볼륨을 만듭니다.

    서비스 수준에 대한 자세한 내용은 Azure NetApp Files의 서비스 수준을 참조하세요.

  2. Azure Lab Services에서 가상 네트워크에 연결

  3. 랩 만들기

  4. 템플릿 VM에서 NFS 파일 공유를 사용하는 데 필요한 구성 요소를 설치합니다.

    • Ubuntu:

      sudo apt update
      sudo apt install nfs-common
      
  5. 템플릿 VM에서 다음 스크립트를 mount_fileshare.sh로 저장하여 Azure NetApp Files 공유를 탑재합니다.

    용량 풀의 탑재 대상 IP 주소를 capacity_pool_ipaddress 변수에 할당합니다. 적절한 값을 찾기 위해 볼륨의 탑재 지침을 가져옵니다. 스크립트에는 Azure NetApp Files 볼륨의 경로 이름이 필요합니다.

    사용자가 스크립트를 실행할 수 있도록 하려면 chmod u+x mount_fileshare.sh를 실행합니다.

    #!/bin/bash
    
    if [ $# -eq 0 ];  then
        echo "Must provide volume name."
        exit 1
    fi
    
    VOLUME_NAME=$1
    CAPACITY_POOL_IP_ADDR=0.0.0.0 # IP address of capacity pool
    
    # Do not use 'mnt' for mount directory.
    # Using ‘mnt’ might cause issues on lab VMs.
    MOUNT_DIRECTORY="prm-mnt" 
    
    sudo mkdir -p /$MOUNT_DIRECTORY
    sudo mkdir /$MOUNT_DIRECTORY/$FOLDER_NAME
    
    sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp $CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME
    sudo bash -c "echo ""$CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME nfs bg,rw,hard,noatime,nolock,rsize=65536,wsize=65536,vers=3,tcp,_netdev 0 0"" >> /etc/fstab"
    
  6. 모든 랩 사용자가 동일한 Azure NetApp Files 볼륨에 대한 액세스 권한을 공유하는 경우 게시하기 전에 템플릿 컴퓨터에서 mount_fileshare.sh 스크립트를 실행할 수 있습니다. 랩 사용자가 각각 고유한 볼륨을 가져오는 경우 각 랩 사용자가 나중에 실행할 수 있도록 스크립트를 저장합니다.

  7. 템플릿 VM을 게시합니다.

  8. 파일 공유에 대한 정책을 구성합니다.

    내보내기 정책은 단일 VM 또는 여러 VM이 볼륨에 액세스하도록 허용할 수 있습니다. 읽기 전용 또는 읽기/쓰기 액세스 권한을 부여할 수 있습니다.

  9. 랩 사용자는 VM을 시작하고 스크립트를 실행하여 파일 공유를 탑재해야 합니다. 스크립트를 한 번만 실행해야 합니다.

    다음 명령을 ./mount_fileshare.sh myvolumename사용합니다.

다음 단계