SMB Azure-fájlmegosztás csatlakoztatása Linuxon

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató. Az Azure Files a Microsoft könnyen használható felhőalapú fájlrendszere. Az Azure-fájlmegosztások az SMB-kernel ügyféllel csatlakoztathatók Linux-disztribúciókon.

Az Azure-fájlmegosztások Linux rendszeren való csatlakoztatásának ajánlott módja az SMB 3.1.1 használata. Alapértelmezés szerint az Azure Files titkosítást igényel az átvitel során, amelyet az SMB 3.0-s és újabb verziók támogatnak. Az Azure Files támogatja az SMB 2.1-et is, amely nem támogatja az átvitel közbeni titkosítást, de biztonsági okokból nem csatlakoztathat Azure-fájlmegosztásokat az SMB 2.1-sel egy másik Azure-régióból vagy a helyszínen. Hacsak az alkalmazása nem igényel kifejezetten SMB 2.1-et, használja inkább az SMB 3.1.1-et.

Disztribúció SMB 3.1.1 (Ajánlott) SMB 3.0
Linux-kernel verziója
  • Alapszintű 3.1.1-támogatás: 4.17
  • Alapértelmezett csatlakoztatás: 5.0
  • AES-128-GCM titkosítás: 5.3
  • AES-256-GCM titkosítás: 5.10
  • Alapszintű 3.0-támogatás: 3.12
  • AES-128-CCM-titkosítás: 4.11
Ubuntu AES-128-GCM titkosítás: 18.04.5 LTS+ AES-128-CCM titkosítás: 16.04.4 LTS+
Red Hat Enterprise Linux (RHEL)
  • Alapszintű: 8.0+
  • Alapértelmezett csatlakoztatás: 8.2+
  • AES-128-GCM titkosítás: 8.2+
7.5+
Debian Alapszintű: 10+ AES-128-CCM titkosítás: 10+
SU Standard kiadás Linux Enterprise Server AES-128-GCM titkosítás: 15 SP2+ AES-128-CCM titkosítás: 12 SP2+

Ha az Ön által használt Linux-disztribúció nem szerepel a fenti táblázatban, a Linux-kernel verzióját az uname paranccsal ellenőrizheti:

uname -r

Feljegyzés

Az SMB 2.1-es támogatása hozzá lett adva a Linux-kernel 3.7-es verziójához. Ha a Linux kernel 3.7-es verziója után használja, az SMB 2.1-es verzióját kell támogatnia.

A következőre érvényes:

Fájlmegosztás típusa SMB NFS
Standard szintű fájlmegosztások (GPv2), LRS/ZRS Igen Nem
Standard szintű fájlmegosztások (GPv2), GRS/GZRS Igen Nem
Prémium fájlmegosztások (FileStorage), LRS/ZRS Igen Nem

Előfeltételek

  • Győződjön meg arról, hogy a cifs-utils csomag telepítve van. A cifs-utils csomag a csomagkezelővel telepíthető a választott Linux-disztribúción.

Az Ubuntu és a Debian esetén használja a csomagkezelőt apt :

sudo apt update
sudo apt install cifs-utils

Más disztribúciókban használja a megfelelő csomagkezelőt vagy fordítást a forrásból.

  • Az Azure Parancssori felület (CLI) legújabb verziója. Az Azure CLI telepítésével kapcsolatos további információkért tekintse meg az Azure CLI telepítését és az operációs rendszer kiválasztását ismertető témakört. Ha inkább az Azure PowerShell-modult szeretné használni a PowerShell 6+-ban, akkor előfordulhat, hogy A cikkben szereplő utasítások azonban az Azure CLI-hez tartoznak.

  • Győződjön meg arról, hogy a 445-ös port nyitva van: az SMB a 445-ös TCP-porton keresztül kommunikál – győződjön meg arról, hogy a tűzfal vagy az internetszolgáltató nem blokkolja a 445-ös TCP-portot az ügyfélszámítógépről. Cserélje le <your-resource-group> , majd <your-storage-account> futtassa a következő szkriptet:

    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
    

    Ha a kapcsolat sikeres volt, a következő kimenethez hasonlót kell látnia:

    Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
    

    Ha nem tudja megnyitni a 445-ös portot a vállalati hálózaton, vagy egy internetszolgáltató letiltja, a 445-ös porton VPN-kapcsolat vagy ExpressRoute használatával dolgozhat. További információért lásd: Hálózati megfontolások az Azure fájlmegosztás közvetlen eléréséhez.

Az Azure-fájlmegosztás csatlakoztatása igény szerint csatlakoztatással

Amikor linuxos operációs rendszerre csatlakoztat egy fájlmegosztást, a távoli fájlmegosztás mappaként jelenik meg a helyi fájlrendszerben. A rendszer bármely pontjára csatlakoztathatja a fájlmegosztásokat. Az alábbi példa az /media elérési út alá csatlakozik. Ezt módosíthatja a kívánt elérési útra a $MNT_ROOT változó módosításával.

Cserélje le és <storage-account-name><file-share-name> írja be <resource-group-name>a környezetének megfelelő információkat:

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

Ezután csatlakoztassa a fájlmegosztást a mount parancs használatával. Az alábbi példában a parancs a $SMB_PATH tárfiók fájlvégpontjának teljes tartománynevével van feltöltve, és $STORAGE_ACCOUNT_KEY a tárfiók kulccsal van feltöltve.

Feljegyzés

A Linux kernel 5.0-s verziójától kezdve az SMB 3.1.1 az alapértelmezett egyeztetett protokoll. Ha a Linux kernel 5.0-snál régebbi verzióját használja, adja meg vers=3.1.1 a csatlakoztatási beállítások listáját.

# 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

Az engedélyek beállításához használhatja uid/dir_modegidfile_mode a parancs csatlakoztatási beállításait vagy a mount csatlakoztatási beállításokat. További információ az engedélyek beállításáról: UNIX numerikus jelölés.

Igény szerint több csatlakoztatási pontra is csatlakoztathatja ugyanazt az Azure-fájlmegosztást. Ha végzett az Azure-fájlmegosztással, a megosztás leválasztásához használja sudo umount $mntPath .

Fájlmegosztások automatikus csatlakoztatása

Amikor linuxos operációs rendszerre csatlakoztat egy fájlmegosztást, a távoli fájlmegosztás mappaként jelenik meg a helyi fájlrendszerben. A rendszer bármely pontjára csatlakoztathatja a fájlmegosztásokat. Az alábbi példa az /media elérési út alá csatlakozik. Ezt módosíthatja a kívánt elérési útra a $MNT_ROOT változó módosításával.

MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT

Azure-fájlmegosztás linuxos csatlakoztatásához használja a tárfiók nevét a fájlmegosztás felhasználóneveként, jelszóként pedig a tárfiókkulcsot. Mivel a tárfiók hitelesítő adatai idővel változhatnak, a tárfiók hitelesítő adatait a csatlakoztatási konfigurációtól elkülönítve kell tárolnia.

Az alábbi példa bemutatja, hogyan hozhat létre fájlt a hitelesítő adatok tárolására. Ne felejtse el lecserélni <resource-group-name> a <storage-account-name> környezetének megfelelő információkat.

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

A fájlmegosztás automatikus csatlakoztatásához választhat a statikus csatlakoztatás segédprogramon keresztüli használata vagy a /etc/fstab segédprogramon keresztüli autofs dinamikus csatlakoztatás között.

Statikus csatlakoztatás /etc/fstab használatával

A korábbi környezet használatával hozzon létre egy mappát a tárfiókhoz/fájlmegosztáshoz a csatlakoztatási mappa alatt. Cserélje le <file-share-name> az Azure-fájlmegosztás megfelelő nevére.

FILE_SHARE_NAME="<file-share-name>"

MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH

Végül hozzon létre egy rekordot a fájlban az /etc/fstab Azure-fájlmegosztáshoz. Az alábbi parancsban az alapértelmezett 0755-ös Linux-fájl- és mappaengedélyek lesznek használatban, ami azt jelenti, hogy a tulajdonos (a fájl/könyvtár Linux-tulajdonosa alapján) olvasási, írási és végrehajtási jogosultságokat használ, a tulajdonoscsoport felhasználói számára olvasást és végrehajtást, valamint a rendszer többi felhasználójának olvasását és végrehajtását. Igény szerint beállíthatja az alternatív uid és gid a dir_modefile_mode csatlakoztatási engedélyeket. További információ az engedélyek beállításáról: UNIX numerikus jelölés a Wikipédián.

Tipp.

Ha azt szeretné, hogy a .NET Core-alkalmazásokat futtató Docker-tárolók írni tudjanak az Azure-fájlmegosztásba, az SMB csatlakoztatási beállításai között adja meg a nobrlt , hogy elkerülje a bájttartomány-zárolási kérelmek kiszolgálóra küldését.

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

Feljegyzés

A Linux kernel 5.0-s verziójától kezdve az SMB 3.1.1 az alapértelmezett egyeztetett protokoll. A csatlakoztatási beállítással vers alternatív protokollverziókat is megadhat (a protokollverziók a következők3.1.13.0: és 2.1).

Dinamikus csatlakoztatás autofokkal

Ha dinamikusan szeretne csatlakoztatni egy fájlmegosztást a autofs segédprogrammal, telepítse azt a csomagkezelővel a választott Linux-disztribúcióra.

Ubuntu- és Debian-disztribúciók esetén használja a csomagkezelőt apt :

sudo apt update
sudo apt install autofs

Ezután frissítse a autofs konfigurációs fájlokat.

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

Az utolsó lépés a szolgáltatás újraindítása autofs .

sudo systemctl restart autofs

Fájlmegosztás pillanatképének csatlakoztatása

Ha egy SMB Azure-fájlmegosztás adott pillanatképét szeretné csatlakoztatni, a parancs részeként meg kell adnia a snapshotmount lehetőséget, ahol snapshot az adott pillanatkép létrehozása olyan formátumban történt, mint például @GMT-2023.01.05-00.08.20. A snapshot linuxos kernel a 4.19-es verzió óta támogatja ezt a lehetőséget.

Miután létrehozta a fájlmegosztás pillanatképét, kövesse az alábbi utasításokat a csatlakoztatásához.

  1. Az Azure Portalon lépjen arra a tárfiókra, amely tartalmazza azt a fájlmegosztást, amelyről pillanatképet szeretne készíteni.

  2. Válassza ki az Adattárolási > fájlmegosztásokat , és válassza ki a fájlmegosztást.

  3. Válassza az Operatív > pillanatképek lehetőséget, és jegyezze fel a csatlakoztatni kívánt pillanatkép nevét. A pillanatkép neve gmt időbélyeg lesz, például az alábbi képernyőképen.

    Képernyőkép a fájlmegosztás pillanatképének nevéről és időbélyegéről az Azure Portalon.

  4. Konvertálja az időbélyeget a mount parancs által várt formátumra, amely @GMT-year.month.day-hour.minutes.seconds. Ebben a példában a 2023-01-05T00:08:20.0000000Z-t@GMT-2023.01.05-00.08.20-ra konvertálná.

  5. Futtassa a mount parancsot a GMT-idő használatával az snapshot érték megadásához. Mindenképpen cserélje le <storage-account-name>a , <file-share-name>és a GMT időbélyeget az értékeire. A .cred fájl tartalmazza a megosztás csatlakoztatásához használandó hitelesítő adatokat (lásd : Fájlmegosztások automatikus csatlakoztatása).

    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
    
  6. Ha meg tudja tallózni a pillanatképet az elérési út /media/<file-share-name>/snapshot1alatt, a csatlakoztatás sikeres volt.

Ha a csatlakoztatás sikertelen, tekintse meg az Azure Files csatlakozási és hozzáférési problémáinak (SMB) hibaelhárítását.

Következő lépések

Az alábbi hivatkozások további információkat tartalmaznak az Azure Filesról: