blobfuse를 사용하여 Blob Storage를 파일 시스템으로 탑재하는 방법How to mount Blob storage as a file system with blobfuse

개요Overview

Blobfuse는 Azure Blob Storage의 가상 파일 시스템 드라이버입니다.Blobfuse is a virtual file system driver for Azure Blob storage. Blobfuse를 사용하여 Linux 파일 시스템을 통해 스토리지 계정의 기존 블록 Blob 데이터에 액세스할 수 있습니다.Blobfuse allows you to access your existing block blob data in your storage account through the Linux file system. Blobfuse는 슬래시 ('/')를 구분 기호로 사용 하는 가상 디렉터리 체계를 사용 합니다.Blobfuse uses the virtual directory scheme with the forward-slash '/' as a delimiter.

이 가이드에서는 blobfuse를 사용하고, Blob Storage 컨테이너를 Linux에 탑재하고, 데이터에 액세스하는 방법을 보여 줍니다.This guide shows you how to use blobfuse, and mount a Blob storage container on Linux and access data. blobfuse에 대한 자세한 내용은 blobfuse 리포지토리의 세부 정보를 참조하세요.To learn more about blobfuse, read the details in the blobfuse repository.

경고

blobfuse는 단순히 요청을 Blob REST API로 변환하기 때문에 100% POSIX 규정 준수를 보장하지 않습니다.Blobfuse doesn't guarantee 100% POSIX compliance as it simply translates requests into Blob REST APIs. 예를 들어 이름 바꾸기 작업은 POSIX에서 원자성이지만, blobfuse에서는 그렇지 않습니다.For example, rename operations are atomic in POSIX, but not in blobfuse. 네이티브 파일 시스템과 blobfuse의 차이점에 대한 전체 목록은 blobfuse 소스 코드 리포지토리를 방문하세요.For a full list of differences between a native file system and blobfuse, visit the blobfuse source code repository.

Linux에 blobfuse 설치Install blobfuse on Linux

Blobfuse 이진 파일은 Ubuntu 및 RHEL 배포를 위한 Linux용 Microsoft 소프트웨어 리포지토리에서 사용할 수 있습니다.Blobfuse binaries are available on the Microsoft software repositories for Linux for Ubuntu and RHEL distributions. 해당 배포에서 Blobfuse를 설치하려면 목록에서 리포지토리 중 하나를 구성합니다.To install blobfuse on those distributions, configure one of the repositories from the list. 배포에 사용할 수 있는 이진 파일이 없는 경우 Azure Storage 설치 단계에 따라 소스 코드에서 이진 파일을 빌드할 수도 있습니다.You can also build the binaries from source code following the Azure Storage installation steps if there are no binaries available for your distribution.

Blobfuse는 Ubuntu 14.04, 16.04 및 18.04에 대 한 설치를 지원 합니다.Blobfuse supports installation on Ubuntu 14.04, 16.04, and 18.04. 이 명령을 실행하면 해당 버전 중 하나가 배포되었는지 확인할 수 있습니다.Run this command to make sure that you have one of those versions deployed:

lsb_release -a

Microsoft 패키지 리포지토리 구성Configure the Microsoft package repository

Microsoft 제품용 Linux 패키지 리포지토리를 구성합니다.Configure the Linux Package Repository for Microsoft Products.

예를 들어 Enterprise Linux 6 배포의 경우 다음과 같습니다.As an example, on an Enterprise Linux 6 distribution:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/6/packages-microsoft-prod.rpm

마찬가지로 URL을 .../rhel/7/...로 변경하여 Enterprise Linux 7 배포를 가리킵니다.Similarly, change the URL to .../rhel/7/... to point to an Enterprise Linux 7 distribution.

Ubuntu 14.04 배포의 또 다른 예:Another example on an Ubuntu 14.04 distribution:

wget https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

마찬가지로 URL을 또는로 변경 .../ubuntu/16.04/... .../ubuntu/18.04/... 하 여 다른 Ubuntu 버전을 참조 합니다.Similarly, change the URL to .../ubuntu/16.04/... or .../ubuntu/18.04/... to reference another Ubuntu version.

blobfuse 설치Install blobfuse

Ubuntu/Debian 배포:On an Ubuntu/Debian distribution:

sudo apt-get install blobfuse

Enterprise Linux 배포:On an Enterprise Linux distribution:

sudo yum install blobfuse

탑재 준비Prepare for mounting

Blobfuse는 열려있는 파일이 있으면 버퍼링하고 캐시하기 위해 파일 시스템에 임시 경로를 요청하여 네이티브와 비슷한 성능을 제공합니다.Blobfuse provides native-like performance by requiring a temporary path in the file system to buffer and cache any open files. 이 임시 경로의 경우 성능이 가장 좋은 디스크를 선택하거나 최상의 성능을 위해 RAM 디스크를 사용합니다.For this temporary path, choose the most performant disk, or use a ramdisk for best performance.

참고

blobfuse는 열려 있는 모든 파일 콘텐츠를 임시 경로에 저장합니다.Blobfuse stores all open file contents in the temporary path. 열려 있는 모든 파일을 수용하기에 충분한 공간이 있는지 확인합니다.Make sure to have enough space to accommodate all open files.

(선택 사항) 임시 경로로 RAM 디스크 사용(Optional) Use a ramdisk for the temporary path

다음 예제에서는 blobfuse에 대한 디렉터리를 만들고 16GB의 RAM 디스크를 만듭니다.The following example creates a ramdisk of 16 GB and a directory for blobfuse. 필요에 따라 크기를 선택합니다.Choose the size based on your needs. 이 RAM 디스크를 사용하면 blobfuse에서 최대 16GB 크기의 파일을 열 수 있습니다.This ramdisk allows blobfuse to open files up to 16 GB in size.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

SSD를 임시 경로로 사용Use an SSD as a temporary path

Azure에서는 VM에서 사용할 수 있는 임시 디스크(SSD)를 사용하여 blobfuse에 대기 시간이 짧은 버퍼를 제공할 수 있습니다.In Azure, you may use the ephemeral disks (SSD) available on your VMs to provide a low-latency buffer for blobfuse. Ubuntu 배포판에서, 이 사용 후 삭제 디스크는 '/mnt'에 탑재됩니다.In Ubuntu distributions, this ephemeral disk is mounted on '/mnt'. Red Hat 및 CentOS 배포판에서는 디스크가 '/mnt/resource/'에 탑재됩니다.In Red Hat and CentOS distributions, the disk is mounted on '/mnt/resource/'.

사용자가 임시 경로에 액세스할 수 있는지 확인합니다.Make sure your user has access to the temporary path:

sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp

스토리지 계정 자격 증명 구성Configure your storage account credentials

blobfuse를 사용하려면 자격 증명을 다음 형식의 텍스트 파일에 저장해야 합니다.Blobfuse requires your credentials to be stored in a text file in the following format:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer

accountName 저장소 계정에 대 한 접두사 이며 전체 URL이 아닙니다.The accountName is the prefix for your storage account - not the full URL.

다음을 사용 하 여이 파일을 만듭니다.Create this file using:

touch ~/fuse_connection.cfg

이 파일을 만들고 편집한 후에는 다른 사용자가 읽을 수 없도록 액세스를 제한 해야 합니다.Once you've created and edited this file, make sure to restrict access so no other users can read it.

chmod 600 fuse_connection.cfg

참고

Windows에서 구성 파일을 만든 경우 dos2unix를 실행하여 삭제하고 Unix 형식으로 파일을 변환해야 합니다.If you have created the configuration file on Windows, make sure to run dos2unix to sanitize and convert the file to Unix format.

탑재할 빈 디렉터리 만들기Create an empty directory for mounting

mkdir ~/mycontainer

탑재Mount

참고

탑재 옵션에 대한 전체 목록은 blobfuse 리포지토리를 확인하세요.For a full list of mount options, check the blobfuse repository.

blobfuse를 탑재하려면 사용자와 함께 다음 명령을 실행합니다.To mount blobfuse, run the following command with your user. 이 명령은 '/path/to/fuse_connection.cfg'에 지정된 컨테이너를 '/mycontainer' 위치에 탑재합니다.This command mounts the container specified in '/path/to/fuse_connection.cfg' onto the location '/mycontainer'.

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

이제 일반 파일 시스템 API를 통해 블록 Blob에 액세스할 수 있습니다.You should now have access to your block blobs through the regular file system APIs. 디렉터리를 탑재하는 사용자만 디렉터리에 액세스할 수 있으므로, 기본적으로, 액세스가 보호됩니다.The user who mounts the directory is the only person who can access it, by default, which secures the access. 모든 사용자에게 액세스를 허용하려면 -o allow_other 옵션을 통해 탑재하면 됩니다.To allow access to all users, you can mount via the option -o allow_other.

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

다음 단계Next steps