Zum Inhalt

Azure Storage Account - Blob Storage unter Linux mounten

Azure Storage Accounts bieten unterschiedliche Möglichkeiten und Verwendungszwecke. In diesem Tutorial verwenden wir einen Blob Storage Container, um ihn in einen Ubuntu Server zu mounten.

Installation

Um einen Blob Container anzubinden benötigt man fuse3 und blobfuse2. Hierfür muss zuerst das Linux Software Repository für Microsoft Products installiert werden.

UBUNTU_VERSION=$(lsb_release -sr)
curl -sSL -O https://packages.microsoft.com/config/ubuntu/${UBUNTU_VERSION}/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update

Anschließend können die Pakete installiert werden:

sudo apt-get install fuse3 blobfuse2

Anbinden des Container

Information

Sollte der Storage Account nur über einen Private Endpoint verfügbar sein, muss zuerst sichergestellt werden, das dieser auch vom Linux Client erreichbar ist.

Folgende Informationen werden benötigt um den Storage Account Container anzubinden:

  • Storage Account Name (${AccountName})
  • Endpoint (IdR. https://${AccountName}.blob.core.windows.net/
  • Account Key (${AccountKey}
  • Container Name ${ContainerName}

Mountpoint anlegen

Zuerst muss ein Ordner angelegt werden, in den der Container gemounted werden kann

sudo mkdir /mnt/mountpoint

Konfigurationsdatei anlegen

Um den Storage Account zu mounten, muss zuerst eine Konfigurationsdatei angelegt werden.

sudo mkdir -p /etc/blobfuse2
sudo touch /etc/blobfuse2/${AccountName}.yaml
sudo nano /etc/blobfuse2/${AccountName}.yaml

Information

Im Befehl muss der Wert für ${AccountName} durch den richtigen Wert ersetzt werden.

allow-other: true
nonempty: true

logging:
  type: syslog
  level: log_warning

components:
  - libfuse
  - stream
  - attr_cache
  - azstorage

libfuse:
  attribute-expiration-sec: 120
  entry-expiration-sec: 120
  negative-entry-expiration-sec: 240

stream:
  block-size-mb: 8
  max-buffers: 64
  buffer-size-mb: 36

attr_cache:
  timeout-sec: 7200

azstorage:
  type: block
  account-name: ${AccountName}
  endpoint: https://${AccountName}.blob.core.windows.net/
  mode: key
  account-key: ${AccountKey}
  container: ${ContainerName}

Eine komplette Übersicht der Konfiguration kann im Github Repository von azure/azure-storage-fuse eingesehen werden (Link).

Temporäres einbinden

Fals ein Eintrag in der fstab Tabelle mit der Option noauto vorhanden ist, genügt die Befehlszeile:

sudo mount /mnt/mountpoint

Ist kein Eintrag vorhanden, müssen alle Eingaben, in der Befehlszeile übernommen werden:

Information

Im Befehl muss der Wert für ${AccountName} durch den richtigen Wert ersetzt werden.

sudo blobfuse2 mount /mnt/mountpoint --config-file=/etc/blobfuse2/${AcountName}.yaml

Statisches Einbinden

Für das statische einbinden ist ein Eintrag in der fstab Tabelle nötig:

sudo nano /etc/fstab

Information

Im Befehl muss der Wert für ${AccountName} durch den richtigen Wert ersetzt werden.

blobfuse2 /mnt/mountpoint fuse3 defaults,_netdev,--config-file=/etc/blobfuse2/${AccountName}.yaml,allow_other 0 0