Memasang berbagi file SMB Azure di Linux
Perhatian
Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS. Azure Files adalah sistem file cloud Microsoft yang mudah digunakan. Berbagi file Azure dapat dipasang dalam distribusi Linux menggunakan klien kernel SMB.
Cara yang direkomendasikan untuk memasang berbagi file Azure di Linux menggunakan SMB 3.1.1. Secara default, Azure Files memerlukan enkripsi saat transit, yang didukung oleh SMB 3.0+. Azure Files juga mendukung SMB 2.1, yang tidak mendukung enkripsi saat transit, tetapi Anda tidak dapat memasang berbagi file Azure dengan SMB 2.1 dari wilayah Azure lain atau lokal karena alasan keamanan. Kecuali aplikasi Anda secara khusus memerlukan SMB 2.1, gunakan SMB 3.1.1.
Distribusi | SMB 3.1.1 (Disarankan) | SMB: 3.0 |
---|---|---|
Versi kernel Linux |
|
|
Ubuntu | Enkripsi AES-128-GCM: 18.04.5 LTS+ | Enkripsi AES-128-CCM: 16.04.4 LTS+ |
Red Hat Enterprise Linux (RHEL) |
|
7.5+ |
Debian | Dasar: 10+ | Enkripsi AES-128-CCM: 10+ |
SUSE Linux Enterprise Server | Enkripsi AES-128-GCM: 15 SP2+ | Enkripsi AES-128-CCM: 12 SP2+ |
Jika distribusi Linux Anda tidak tercantum dalam tabel di atas, Anda dapat memeriksa versi kernel Linux dengan perintah uname
:
uname -r
Catatan
Dukungan SMB 2.1 ditambahkan ke kernel Linux versi 3.7. Jika Anda menggunakan versi kernel Linux setelah 3.7, itu harus mendukung SMB 2.1.
Berlaku untuk
Jenis berbagi File | SMB | NFS |
---|---|---|
Berbagi file standar (GPv2), LRS/ZRS | ||
Berbagi file standar (GPv2), GRS/GZRS | ||
Berbagi file premium (FileStorage), LRS/ZRS |
Prasyarat
- Pastikan paket cifs-utils diinstal. Paket cifs-utils dapat diinstal menggunakan manajer paket pada distribusi Linux pilihan Anda.
Di Ubuntu dan Debian, gunakan apt
manajer paket:
sudo apt update
sudo apt install cifs-utils
Pada distribusi lain, gunakan manajer paket yang sesuai atau kompilasi dari sumber.
Versi terbaru dari Azure Command Line Interface (CLI). Untuk informasi selengkapnya tentang cara memasang Azure CLI, lihat Memasang Azure CLI dan memilih sistem operasi Anda. Jika Anda lebih suka menggunakan modul Azure PowerShell di PowerShell 6+, Anda dapat; namun, instruksi dalam artikel ini adalah untuk Azure CLI.
Pastikan port 445 terbuka: SMB berkomunikasi melalui port TCP 445 - pastikan firewall atau ISP Anda tidak memblokir port TCP 445 dari komputer klien. Ganti lalu
<your-storage-account>
jalankan<your-resource-group>
skrip berikut: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
Jika koneksi berhasil, Anda akan melihat sesuatu yang mirip dengan output berikut:
Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
Jika Anda tidak dapat membuka port 445 di jaringan perusahaan Anda atau diblokir untuk melakukannya oleh ISP, Anda dapat menggunakan koneksi VPN atau ExpressRoute untuk mengatasi port 445. Untuk informasi selengkapnya, lihat Pertimbangan jaringan untuk akses berbagi file Azure langsung.
Pasang berbagi file Azure sesuai permintaan pemasangan
Saat Anda memasang berbagi file di OS Linux, berbagi file jarak jauh Anda direpresentasikan sebagai folder di sistem file lokal Anda. Anda dapat memasang berbagi file ke mana saja pada sistem Anda. Contoh berikut dipasang pada jalur /media
. Anda dapat mengubah jalur ini ke jalur pilihan yang Anda inginkan dengan memodifikasi variabel $MNT_ROOT
.
Ganti <resource-group-name>
, <storage-account-name>
, dan <file-share-name>
dengan informasi yang sesuai untuk lingkungan Anda:
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
Selanjutnya, pasang berbagi file menggunakan perintah mount
. Dalam contoh berikut, perintah $SMB_PATH
diisi menggunakan nama domain yang sepenuhnya memenuhi syarat untuk titik akhir file akun penyimpanan dan $STORAGE_ACCOUNT_KEY
diisi dengan kunci akun penyimpanan.
Catatan
Mulai dari kernel Linux versi 5.0, SMB 3.1.1 adalah protokol negosiasi default. Jika Anda menggunakan versi kernel Linux yang lebih lama dari 5.0, tentukan vers=3.1.1
dalam daftar opsi pemasangan.
# 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
Anda dapat menggunakan uid
/gid
atau dir_mode
dan file_mode
di opsi pemasangan untuk perintah mount
guna mengatur izin. Untuk informasi selengkapnya tentang cara mengatur izin, lihat notasi numerik UNIX.
Anda juga dapat memasang berbagi file Azure yang sama ke beberapa titik pemasangan jika diinginkan. Setelah selesai menggunakan berbagi file Azure, gunakan sudo umount $mntPath
untuk melepas berbagi.
Memasang berbagi file secara otomatis
Saat Anda memasang berbagi file di OS Linux, berbagi file jarak jauh Anda direpresentasikan sebagai folder di sistem file lokal Anda. Anda dapat memasang berbagi file ke mana saja pada sistem Anda. Contoh berikut dipasang pada jalur /media
. Anda dapat mengubah jalur ini ke jalur pilihan yang Anda inginkan dengan memodifikasi variabel $MNT_ROOT
.
MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT
Untuk memasang berbagi file Azure di Linux, gunakan nama akun penyimpanan sebagai nama pengguna berbagi file, dan kunci akun penyimpanan sebagai sandi. Karena kredensial akun penyimpanan dapat berubah dari waktu ke waktu, Anda harus menyimpan kredensial untuk akun penyimpanan secara terpisah dari konfigurasi pemasangan.
Contoh berikut menunjukkan cara membuat file untuk menyimpan info masuk. Jangan lupa untuk mengganti <resource-group-name>
dan <storage-account-name>
dengan informasi yang sesuai untuk lingkungan Anda.
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
Untuk memasang berbagi file secara otomatis, Anda memiliki pilihan antara menggunakan pemasangan statis melalui utilitas /etc/fstab
atau menggunakan pemasangan dinamis melalui utilitas autofs
.
Pemasangan statis dengan /etc/fstab
Buat folder untuk akun penyimpanan/berbagi file di bawah folder pemasangan Anda dengan menggunakan lingkungan sebelumnya. Ganti <file-share-name>
dengan nama yang sesuai dari berbagi file Azure Anda.
FILE_SHARE_NAME="<file-share-name>"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Terakhir, buat rekaman dalam file /etc/fstab
untuk berbagi file Azure Anda. Dalam contoh di bawah ini, file default Linux 0755 dan izin folder digunakan, yang berarti membaca, menulis, dan menjalankan untuk pemilik (berdasarkan file/direktori pemilik Linux), membaca dan menjalankan untuk pengguna dalam grup pemilik, serta membaca dan menjalankan untuk orang lain di sistem. Anda mungkin ingin mengatur izin alternatif uid
dan gid
atau dir_mode
dan file_mode
pada pemasangan yang diinginkan. Untuk informasi selengkapnya tentang cara mengatur izin, lihat notasi numerik UNIX di Wikipedia.
Tip
Jika Anda ingin kontainer Docker yang menjalankan aplikasi .NET Core dapat menulis ke berbagi file Azure, sertakan nobrl dalam opsi pemasangan SMB untuk menghindari pengiriman permintaan kunci rentang byte ke server.
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
Catatan
Mulai dari kernel Linux versi 5.0, SMB 3.1.1 adalah protokol negosiasi default. Anda dapat menentukan versi protokol alternatif menggunakan opsi pemasangan vers
(versi protokol adalah 3.1.1
, 3.0
, dan 2.1
).
Pemasangan dinamis dengan autof
Untuk memasang berbagi file secara dinamis dengan utilitas autofs
, instal berbagi file menggunakan manajer paket pada distribusi Linux pilihan Anda.
Pada distribusi Ubuntu dan Debian, gunakan apt
manajer paket:
sudo apt update
sudo apt install autofs
Selanjutnya, update file konfigurasi 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
Langkah terakhir adalah memulai ulang layanan autofs
.
sudo systemctl restart autofs
Memasang rekam jepret berbagi file
Jika Anda ingin memasang rekam jepret tertentu dari berbagi file Azure SMB, Anda harus menyediakan snapshot
opsi sebagai bagian mount
dari perintah, di mana snapshot
adalah waktu rekam jepret tertentu dibuat dalam format seperti @GMT-2023.01.05-00.08.20. Opsi snapshot
ini telah didukung di kernel Linux sejak versi 4.19.
Setelah Anda membuat rekam jepret berbagi file, ikuti instruksi berikut untuk memasangnya.
Di portal Azure, navigasikan ke akun penyimpanan yang berisi berbagi file yang ingin Anda pasang rekam jepretnya.
Pilih Berbagi file penyimpanan data > dan pilih berbagi file.
Pilih Rekam Jepret Operasi > dan catat nama rekam jepret yang ingin Anda pasang. Nama rekam jepret akan menjadi tanda waktu GMT, seperti pada cuplikan layar di bawah ini.
Konversi tanda waktu ke format yang diharapkan oleh
mount
perintah, yaitu @GMT-year.month.day-hour.minutes.seconds. Dalam contoh ini, Anda akan mengonversi 2023-01-05T00:08:20.0000000Z ke @GMT-2023.01.05-00.08.20.Jalankan
mount
perintah menggunakan waktu GMT untuk menentukansnapshot
nilai. Pastikan untuk mengganti<storage-account-name>
,<file-share-name>
, dan tanda waktu GMT dengan nilai Anda. File .cred berisi kredensial yang akan digunakan untuk memasang berbagi (lihat Memasang berbagi file secara otomatis).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
Jika Anda dapat menelusuri rekam jepret di bawah jalur
/media/<file-share-name>/snapshot1
, maka pemasangan berhasil.
Jika pemasangan gagal, lihat Memecahkan masalah konektivitas dan akses (SMB) Azure Files.
Langkah berikutnya
Lihat tautan ini untuk informasi selengkapnya tentang Azure Files: