본문 바로가기
  • 클라우드야 나랑 친해지자!
클라우드/Azure

[Azure] Linux Blob Storage Mount 방법

by 정민규 2023. 8. 11.
반응형

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


 

File Storage를 간간히 마운트 해본 경험은 있으나..

BlobFuse를 활용하여 Blob Storage를 마운트할 일이 생겨서 해보던 중..

FileStorage Mount에 비해 약간의 혼란스러운 부분이 있어 정리하게 되었습니다.

 

 

본 가이드는 Microsoft Azure 공식 문서에서 소개되는 내용을 기반으로 작성하였습니다.

다만, 초보자도 쉽게 따라할 수 있도록 가능한 모든 내용을 기록하였습니다.

 

https://learn.microsoft.com/ko-kr/azure/storage/blobs/storage-how-to-mount-container-linux?tabs=Ubuntu 

 

BlobFuse v1을 사용하여 Linux에서 파일 시스템으로 Azure Blob Storage 탑재하는 방법 - Azure Storage

Linux의 가상 파일 시스템 드라이버인 BlobFuse v1을 사용하여 Azure Blob Storage 컨테이너를 탑재하는 방법을 알아봅니다.

learn.microsoft.com

 

https://github.com/Azure/azure-storage-fuse/wiki/Blobfuse-Configuring-and-Running

 

Blobfuse Configuring and Running

A virtual file system adapter for Azure Blob storage - Azure/azure-storage-fuse

github.com

 

 

Linux 환경에 따른 명령어가 친절하게 나와있으니 참고하시면 됩니다!

저는 Ubuntu 20.04 LTS 에서 진행하였습니다.

 

 

* 실습 요약

1. BlobFuse v1 설치

2. BlobFuse 구성

 

 

 

1. BlobFuse v1 설치

 

하기 명령어를 통해 Microsoft 패키지 레포지토리를 구성합니다.

버전에 따라 아래 20.04 부분은 수정해주셔야 됩니다.

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

 

 

BlobFuse v1을 설치합니다.

sudo apt-get install blobfuse

 

 

정말 간단하게 설치가 완료되었습니다.

 

 

 

2. BlobFuse 구성

 

 

BlobFuse는 열려있는 파일이 있으면 버퍼링하고 캐시하기 위해 파일 시스템에 임시 경로를 요청하여 네이티브와 유사한 성능을 제공한다고 합니다.

따라서, 임시경로의 경우 Azure에서 제공하는 temp disk를 사용하도록 하겠습니다. 

 

임시경로는 기본적으로  /mnt/resource 에 탑재됩니다.

 

 

 

사용자가 임시 경로에 액세스할 수 있는지 확인합니다.

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

 

 

blobfuse 경로를 생성하고 권한을 부여합니다.

sudo mkdir /usr/share/blobfuse

sudo chown <username>:<username> /usr/share/blobfuse

 

아래와 같이 정상적으로 생성되었습니다.

 

 

이제 mount 대상 blob storage의 정보를 blobfuse connection 파일에 설정해야 합니다.

기본 설정은 아래와 같습니다.

accountName <account-name-here>
# Please provide either an account key or a SAS token, and delete the other line.
accountKey <account-key-here-delete-next-line>
#change authType to specify only 1
sasToken <shared-access-token-here-delete-previous-line>
authType <MSI/SAS/SPN/Key/empty>
containerName <insert-container-name-here>
#if you are using a proxy server and https, https is the default protocol set the caCertFile below
caCertFile <insert the certfile name with full path>
#if you are using a proxy server and https protocol which is the default protocol set the httpsProxy below 
httpsProxy <insert the https proxy server Eg: http://10.1.0.23:8080>
#if you are using proxy server and have turned https off using --use-https=false, set the httpProxy below
httpProxy <insert the http proxy server if any if you have turned https off using --use-https=true>

 

 

connection 설정을 위해서 blob storage를 생성해주겠습니다.

저는 테스트로 사용할 것이기 때문에 Standard StorageV2 LRS 구성으로 default 옵션으로 생성했습니다.

 

 

imagefile 이라는 컨테이너를 생성해주었습니다. 

 

 

 

저는 access key를 통해 storage account에 접근하려고 합니다.

액세스 키 > key1의 표시 클릭하여 메모장에 저장합니다.

 

 

vi connection.cfg 내 storage account 정보를 저장합니다.

 

 

 

일회성 마운트의 경우 하기 명령어를 통해 가능합니다.

sudo blobfuse <path-to-desired-mountpoint> --tmp-path=/mnt/resource/blobfusetmp  --config-file=<path-to-connection.cfg> -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

* path-to-desired-mountpoint : 희망하는 마운트 포인트

* --tmp-path=/mnt/resource/blobfusetmp : 위에서 설정한 버퍼/캐싱용 임시 경로

* --config-file : connection.cfg 파일 경로

 

 

 

저는 아래와 같이 수정하여 마운트했습니다.

sudo blobfuse /data/image --tmp-path=/mnt/resource/blobfusetmp  --config-file=/usr/share/blobfuse/connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

 

마운트 시 sudo로 수행해도 권한 문제로 인해 root로 해야할 수 있습니다.

맨 아래 마운트가 잘 된 것으로 나타납니다.

 

 

 

서버가 재부팅되어도 마운트가 자동으로 올라오도록 /etc/fstab 을 설정하겠습니다.

해당 설정은 azure-github 내 mount.sh 파일을 통해서도 설정할 수 있지만 저의 경우 잘 안되어 아래와 같이 mount.sh 없이 하는 방법으로 설정하였습니다.

blobfuse /data/image fuse defaults,_netdev,--tmp-path=/mnt/resource/blobfusetmp,--config-file=/usr/share/blobfuse/connection.cfg,--log-level=LOG_DEBUG,allow_other 0 0

 

 

 

 

그렇다면 마운트가 제대로 됐는지 확인해보겠습니다.

 

컨테이너 내에도 동일하게 생성됩니다.

 

 

 

반대로 포탈에서 blob을 업로드해보았습니다.

 

 

Metrics.xlsx 파일이 정상적으로 보입니다.

 

 

 

 

고생하셨습니다!

Azure Blob Storage 을 연결하는데 여러 가지 방법(BlobFuse v1,v2 및 NFS 3.0 등)이 있으니 한 번씩 해보면 좋을 것 같습니다! 

반응형

'클라우드 > Azure' 카테고리의 다른 글

Peering with Gateway Transit  (0) 2021.08.06
VPN Gateway를 이용한 Vnet-to-Vnet 구성  (0) 2021.08.02
Point-to-Site 구성 (Azure AD인증)  (4) 2021.08.02

댓글