Montera SMB Azure-filresurser på Linux-klienter
Varning
Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.
Azure-filresurser kan monteras i Linux-distributioner med hjälp av SMB-kernelklienten.
Det rekommenderade sättet att montera en Azure-filresurs i Linux är med SMB 3.1.1. Som standard kräver Azure Files kryptering under överföring, vilket stöds i SMB 3.0+. Azure Files stöder även SMB 2.1, som inte stöder kryptering under överföring, men du kan inte montera Azure-filresurser med SMB 2.1 från en annan Azure-region eller lokalt av säkerhetsskäl. Använd SMB 3.1.1 om inte appen särskilt behöver SMB 2.1.
Distribution | SMB 3.1.1 (rekommenderas) | SMB 3.0 |
---|---|---|
Linux-kernelversion |
|
|
Ubuntu | Kryptering med AES-128-GCM: 18.04.5 LTS+ | Kryptering med AES-128-CCM: 16.04.4 LTS+ |
Red Hat Enterprise Linux (RHEL) |
|
7.5+ |
Debian | Grundläggande: 10+ | Kryptering med AES-128-CCM: 10+ |
SUSE Linux Enterprise Server | Kryptering med AES-128-GCM: 15 SP2+ | Kryptering med AES-128-CCM: 12 SP2+ |
Om din Linux-distribution inte visas i tabellen ovan kan du kontrollera din Linux-kernelversion med kommandot uname
:
uname -r
Kommentar
Stöd för SMB 2.1 lades till i version 3.7 av Linux-kärnan. Om du använder en version av Linux-kerneln efter 3.7 bör den ha stöd för SMB 2.1.
Gäller för
Typ av filresurs | SMB | NFS |
---|---|---|
Standardfilresurser (GPv2), LRS/ZRS | ||
Standardfilresurser (GPv2), GRS/GZRS | ||
Premiumfilresurser (FileStorage), LRS/ZRS |
Förutsättningar
- Kontrollera att cifs-utils-paketet är installerat. Installera cifs-utils-paketet med hjälp av pakethanteraren på valfri Linux-distribution.
På Ubuntu och Debian använder du apt
pakethanteraren:
sudo apt update
sudo apt install cifs-utils
På andra distributioner använder du lämplig pakethanterare eller kompilerar från källan.
Den senaste versionen av Azures kommandoradsgränssnitt (CLI). Mer information om hur du installerar Azure CLI finns i Installera Azure CLI och välj ditt operativsystem. Om du föredrar att använda Azure PowerShell-modulen i PowerShell 6+, kan du; Instruktionerna i den här artikeln gäller dock för Azure CLI.
Kontrollera att port 445 är öppen: SMB kommunicerar via TCP-port 445 – kontrollera att brandväggen eller ISP inte blockerar TCP-port 445 från klientdatorn. Ersätt
<your-resource-group>
och<your-storage-account>
kör sedan följande skript:RESOURCE_GROUP_NAME="<your-resource-group>" STORAGE_ACCOUNT_NAME="<your-storage-account>" # This command assumes you have logged in with az login HTTP_ENDPOINT=$(az storage account show \ --resource-group $RESOURCE_GROUP_NAME \ --name $STORAGE_ACCOUNT_NAME \ --query "primaryEndpoints.file" --output tsv | tr -d '"') SMBPATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT}) FILE_HOST=$(echo $SMBPATH | tr -d "/") nc -zvw3 $FILE_HOST 445
Om anslutningen lyckades bör du se något som liknar följande utdata:
Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
Om du inte kan öppna port 445 i företagets nätverk eller blockeras från att göra det av en Internetleverantör kan du använda en VPN-anslutning eller ExpressRoute för att arbeta runt port 445. Mer information finns i Nätverksöverväganden för direktåtkomst till Azure-filresurser.
Montera Azure-filresursen på begäran med montering
När du monterar en filresurs på ett Linux-operativsystem representeras fjärrfilresursen som en mapp i det lokala filsystemet. Du kan montera filresurser var som helst i systemet. Följande exempel monteras under /media
sökvägen. Du kan ändra detta till önskad sökväg genom att ändra variabeln $MNT_ROOT
.
Ersätt <resource-group-name>
, <storage-account-name>
och <file-share-name>
med lämplig information för din miljö:
RESOURCE_GROUP_NAME="<resource-group-name>"
STORAGE_ACCOUNT_NAME="<storage-account-name>"
FILE_SHARE_NAME="<file-share-name>"
MNT_ROOT="/media"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Montera sedan filresursen mount
med kommandot . I följande exempel $SMB_PATH
fylls kommandot i med det fullständigt kvalificerade domännamnet för lagringskontots filslutpunkt och $STORAGE_ACCOUNT_KEY
fylls i med lagringskontonyckeln.
Kommentar
Från och med Linux kernel version 5.0 är SMB 3.1.1 standardprotokollet som förhandlats. Om du använder en version av Linux-kerneln som är äldre än 5.0 anger du vers=3.1.1
i listan med monteringsalternativ.
# This command assumes you have logged in with az login
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT})$FILE_SHARE_NAME
STORAGE_ACCOUNT_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" --output tsv | tr -d '"')
sudo mount -t cifs $SMB_PATH $MNT_PATH -o username=$STORAGE_ACCOUNT_NAME,password=$STORAGE_ACCOUNT_KEY,serverino,nosharesock,actimeo=30,mfsymlinks
Du kan använda uid
/gid
eller dir_mode
och file_mode
i monteringsalternativen mount
för kommandot för att ange behörigheter. Mer information om hur du anger behörigheter finns i UNIX numerisk notation.
Du kan också montera samma Azure-filresurs på flera monteringspunkter om du vill. När du är klar med att använda Azure-filresursen använder sudo umount $mntPath
du för att demontera resursen.
Montera filresurser automatiskt
När du monterar en filresurs på ett Linux-operativsystem representeras fjärrfilresursen som en mapp i det lokala filsystemet. Du kan montera filresurser var som helst i systemet. Följande exempel monteras under /media
sökvägen. Du kan ändra detta till önskad sökväg genom att ändra variabeln $MNT_ROOT
.
MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT
Om du vill montera en Azure-filresurs i Linux använder du lagringskontonamnet som användarnamn för filresursen och lagringskontonyckeln som lösenord. Eftersom autentiseringsuppgifterna för lagringskontot kan ändras med tiden bör du lagra autentiseringsuppgifterna för lagringskontot separat från monteringskonfigurationen.
I följande exempel visas hur du skapar en fil för att lagra autentiseringsuppgifterna. Kom ihåg att ersätta <resource-group-name>
och <storage-account-name>
med lämplig information för din miljö.
RESOURCE_GROUP_NAME="<resource-group-name>"
STORAGE_ACCOUNT_NAME="<storage-account-name>"
# Create a folder to store the credentials for this storage account and
# any other that you might set up.
CREDENTIAL_ROOT="/etc/smbcredentials"
sudo mkdir -p "/etc/smbcredentials"
# Get the storage account key for the indicated storage account.
# You must be logged in with az login and your user identity must have
# permissions to list the storage account keys for this command to work.
STORAGE_ACCOUNT_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" --output tsv | tr -d '"')
# Create the credential file for this individual storage account
SMB_CREDENTIAL_FILE="$CREDENTIAL_ROOT/$STORAGE_ACCOUNT_NAME.cred"
if [ ! -f $SMB_CREDENTIAL_FILE ]; then
echo "username=$STORAGE_ACCOUNT_NAME" | sudo tee $SMB_CREDENTIAL_FILE > /dev/null
echo "password=$STORAGE_ACCOUNT_KEY" | sudo tee -a $SMB_CREDENTIAL_FILE > /dev/null
else
echo "The credential file $SMB_CREDENTIAL_FILE already exists, and was not modified."
fi
# Change permissions on the credential file so only root can read or modify the password file.
sudo chmod 600 $SMB_CREDENTIAL_FILE
Om du vill montera en filresurs automatiskt kan du välja mellan att använda en statisk montering via /etc/fstab
verktyget eller att använda en dynamisk montering via autofs
verktyget.
Statisk montering med /etc/fstab
Använd den tidigare miljön och skapa en mapp för ditt lagringskonto/din filresurs under monteringsmappen. Ersätt <file-share-name>
med lämpligt namn på din Azure-filresurs.
FILE_SHARE_NAME="<file-share-name>"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Skapa slutligen en post i /etc/fstab
filen för din Azure-filresurs. I kommandot nedan används standardbehörigheterna för 0755 Linux-filer och -mappar, vilket innebär att läsa, skriva och köra för ägaren (baserat på fil-/katalog-Linux-ägaren), läsa och köra för användare i ägargruppen och läsa och köra för andra i systemet. Du kanske vill ange alternativa uid
och gid
eller dir_mode
och file_mode
behörigheter för montering efter behov. Mer information om hur du anger behörigheter finns i UNIX numerisk notation.
Dricks
Om du vill att Docker-containrar som kör .NET Core-program ska kunna skriva till Azure-filresursen ska du inkludera nobrl i SMB-monteringsalternativen för att undvika att skicka byteintervalllåsbegäranden till servern.
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT})$FILE_SHARE_NAME
if [ -z "$(grep $SMB_PATH\ $MNT_PATH /etc/fstab)" ]; then
echo "$SMB_PATH $MNT_PATH cifs _netdev,nofail,credentials=$SMB_CREDENTIAL_FILE,serverino,nosharesock,actimeo=30" | sudo tee -a /etc/fstab > /dev/null
else
echo "/etc/fstab was not modified to avoid conflicting entries as this Azure file share was already present. You may want to double check /etc/fstab to ensure the configuration is as desired."
fi
sudo mount -a
Kommentar
Från och med Linux kernel version 5.0 är SMB 3.1.1 standardprotokollet som förhandlats. Du kan ange alternativa protokollversioner med monteringsalternativet vers
(protokollversioner är 3.1.1
, 3.0
och 2.1
).
Montera dynamiskt med autofs
Om du vill montera en filresurs dynamiskt med autofs
verktyget installerar du den med hjälp av pakethanteraren på valfri Linux-distribution.
På Ubuntu- och Debiandistributioner använder du apt
pakethanteraren:
sudo apt update
sudo apt install autofs
Uppdatera sedan konfigurationsfilerna autofs
.
FILE_SHARE_NAME="<file-share-name>"
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-$(expr length $HTTP_ENDPOINT))$FILE_SHARE_NAME
echo "$FILE_SHARE_NAME -fstype=cifs,credentials=$SMB_CREDENTIAL_FILE :$SMB_PATH" > /etc/auto.fileshares
echo "/fileshares /etc/auto.fileshares --timeout=60" > /etc/auto.master
Det sista steget är att starta om autofs
tjänsten.
sudo systemctl restart autofs
Montera en ögonblicksbild av en filresurs
Om du vill montera en specifik ögonblicksbild av en SMB Azure-filresurs måste du ange snapshot
alternativet som en del av mount
kommandot, där snapshot
är den tid då den specifika ögonblicksbilden skapades i ett format som @GMT-2023.01.05-00.08.20. Alternativet snapshot
har stöd för Linux-kerneln sedan version 4.19.
När du har skapat ögonblicksbilden av filresursen följer du de här anvisningarna för att montera den.
I Azure-portalen går du till lagringskontot som innehåller den filresurs som du vill montera en ögonblicksbild av.
Välj Datalagring > Filresurser och välj filresursen.
Välj Driftögonblicksbilder > och anteckna namnet på den ögonblicksbild som du vill montera. Namnet på ögonblicksbilden är en GMT-tidsstämpel, till exempel i skärmbilden nedan.
Konvertera tidsstämpeln till det format som förväntas av
mount
kommandot, vilket är @GMT-year.month.day-hour.minutes.seconds. I det här exemplet konverterar du 2023-01-05T00:08:20.0000000Z till @GMT-2023.01.05-00.08.20.mount
Kör kommandot med gmt-tiden för att ange värdetsnapshot
. Se till att ersätta<storage-account-name>
,<file-share-name>
och GMT-tidsstämpeln med dina värden. .cred-filen innehåller de autentiseringsuppgifter som ska användas för att montera resursen (se Montera filresurser automatiskt).sudo mount -t cifs //<storage-account-name>.file.core.windows.net/<file-share-name> /media/<file-share-name>/snapshot1 -o credentials=/etc/smbcredentials/snapshottestlinux.cred,snapshot=@GMT-2023.01.05-00.08.20
Om du kan bläddra i ögonblicksbilden under sökvägen
/media/<file-share-name>/snapshot1
lyckades monteringen.
Om monteringen misslyckas kan du läsa Felsöka anslutning och åtkomstproblem för Azure Files (SMB)..
Nästa steg
Mer information om Azure Files finns på följande länkar: