Řešení Azure Files potíží v Linuxu (SMB)
Tento článek obsahuje seznam běžných problémů souvisejících s Azure Files při připojování z klientů s Linuxem. Poskytuje také možné příčiny a řešení těchto problémů.
Kromě kroků pro řešení potíží v tomto článku můžete pomocí nástroje AzFileDiagnostics zajistit, aby měl linuxový klient správné požadavky. AzFileDiagnostics automatizuje detekci většiny příznaků uvedených v tomto článku. Pomáhá nastavit prostředí pro zajištění optimálního výkonu. Tyto informace najdete také v poradci při potížích Azure Files sdílených složek. Poradce při potížích obsahuje postup, který vám pomůže s problémy s připojením, mapováním a Azure Files sdílené složky.
Důležité
Obsah tohoto článku se týká jenom sdílených složek SMB. Podrobnosti o sdílených složek NFS najdete v tématu Řešení potíží se sdílenými složkymi Systému souborů NFS Azure.
Platí pro
| Typ sdílené složky | SMB | NFS |
|---|---|---|
| Standardní sdílené složky (GPv2), LRS/ZRS | ||
| Standardní sdílené složky (GPv2), GRS/GZRS | ||
| Premium sdílené složky (FileStorage), LRS/ZRS |
Nelze se připojit ke sdílené složky Azure nebo ji připojit
Příčina
Mezi běžné příčiny tohoto problému dochází:
- Používáte linuxovou distribuci se zastaralým klientem SMB. Další informace o běžných linuxových distribucích dostupných v Azure s kompatibilními klienty najdete v tématu Použití Azure Files s Linuxem.
- V klientovi nejsou nainstalované nástroje SMB (cifs-utils).
- Minimální verze protokolu SMB 2.1 není v klientovi k dispozici.
- Šifrování SMB 3.x se v klientovi nepodporuje. Předchozí tabulka obsahuje seznam distribucí Linuxu, které podporují připojení z místního prostředí a mezi oblastmi pomocí šifrování. Ostatní distribuce vyžadují jádro verze 4.11 nebo novější.
- Pokoušíte se připojit ke sdílené složky Azure z virtuálního počítače Azure a virtuální počítač není ve stejné oblasti jako účet úložiště.
- Pokud je pro účet úložiště povolené nastavení Požadováno zabezpečený přenos, Azure Files připojení, která používají protokol SMB 3.x s šifrováním.
Řešení
Pokud chcete tento problém vyřešit, použijte nástroj pro řešení potíží pro Azure Files chyb připojení v Linuxu. Tento nástroj:
- Pomáhá ověřit spuštěné prostředí klienta.
- Zjistí nekompatibilní konfiguraci klienta, která by způsobila selhání přístupu Azure Files.
- Poskytuje preskriptivní pokyny k samoobslužné opravě.
- Shromažďuje diagnostická trasování.
„Chyba připojení (13): Oprávnění se zamítlo“ při připojování sdílené složky Azure
Příčina 1: Nešifrovaný komunikační kanál
Z bezpečnostních důvodů se připojení ke sdíleným složkám Azure blokují, když komunikační kanál není šifrovaný a když k pokusu o připojení nedošlo ze stejného datacentra, ve kterém se sdílená složka Azure nachází. Nešifrovaná připojení ze stejného datacentra se můžou blokovat také v případě, že je pro účet úložiště povolené nastavení Vyžadovat zabezpečený přenos. Šifrovaný komunikační kanál je k dispozici pouze v případě, že klientský operační systém uživatele podporuje šifrování protokolu SMB.
Další informace najdete v části Požadavky na připojení sdílené složky Azure v Linuxu s využitím balíčku cifs-utils.
Řešení 1. příčiny
- Připojení z klienta, který podporuje šifrování SMB, nebo se připojovat z virtuálního počítače ve stejném datacentru jako účet úložiště Azure, který se používá pro sdílené složky Azure.
- Pokud klient nepodporuje šifrování SMB, ověřte, že je v účtu úložiště zakázané nastavení Požadováno zabezpečený přenos.
Příčina 2: Pro účet úložiště jsou povolená pravidla virtuální sítě nebo firewallu
Pokud jsou pro účet úložiště nakonfigurovaná pravidla virtuální sítě nebo brány firewall, síťovému provozu se odepře přístup, dokud se nepovolí přístup z virtuální sítě nebo IP adresy klienta.
Řešení 2. příčiny
Ověřte, že jsou pro účet úložiště správně nakonfigurovaná pravidla brány firewall a virtuální sítě. Pokud chcete otestovat, jestli problém způsobují pravidla brány firewall nebo virtuální sítě, dočasně změňte nastavení pro účet úložiště na Povolit přístup ze všech sítí. Další informace najdete v tématu Konfigurace virtuálních sítí a bran firewall Azure Storage.
[oprávnění odepřeno] Překročení kvóty disku" při pokusu o otevření souboru
V Linuxu se zobrazí podobná chybová zpráva:
<filename> [oprávnění se zamítla] Překročení kvóty disku
Příčina
Dosáhli jste horního limitu souběžně otevřených popisovačů, které jsou povolené pro soubor nebo adresář.
Kvóta je 2 000 otevřených popisovačů pro jeden soubor nebo adresář. Pokud máte 2 000 otevřených popisovačů, zobrazí se chybová zpráva s oznámením, že došlo k dosažení kvóty.
Řešení
Snižte počet souběžně otevřených popisovačů tím, že zavřete některé popisovače a pak zkuste operaci zopakovat.
Pokud chcete zobrazit otevřené popisovače sdílené složky, adresáře nebo souboru, použijte rutinu PowerShellu Get-AzStorageFileHandle.
Pokud chcete zavřít otevřené popisovače sdílené složky, adresáře nebo souboru, použijte rutinu PowerShellu Close-AzStorageFileHandle.
Poznámka
Rutiny Get-AzStorageFileHandle a Close-AzStorageFileHandle jsou součástí modulu Az PowerShell verze 2.4 nebo novější. Pokud chcete nainstalovat nejnovější modul Az PowerShellu, podívejte se na Azure PowerShell modulu.
Pomalé kopírování souborů do a z Azure Files v Linuxu
- Pokud nemáte konkrétní požadavek na minimální velikost V/V, doporučujeme k zajištění optimálního výkonu použít 1 MiB jako velikost V/V.
- Použijte správnou metodu kopírování:
- Pro přenos mezi dvěma sdílené složky použijte AzCopy.
- Použití cp nebo dd s paralelním zpracováním může zvýšit rychlost kopírování, počet vláken závisí na vašem případu použití a úlohách. V následujících příkladech je šest:
- příklad cp (cp použije výchozí velikost bloku systému souborů jako velikost bloku):
find * -type f | parallel --will-cite -j 6 cp {} /mntpremium/ &. - Příklad dd (tento příkaz explicitně nastaví velikost bloku dat na 1 MiB):
find * -type f | parallel --will-cite-j 6 dd if={} of=/mnt/share/{} bs=1M - Open source nástroje třetích stran, jako jsou:
- GNU Parallel.
- Fpart – seřadí soubory a zabalí je do oddílů.
- Fpsync – používá Fpart a nástroj pro kopírování k otevření více instancí k migraci dat z src_dir do dst_url.
- Multi – multi-threaded cp a md5sum založené na GNU coreutils.
- Nastavení velikosti souboru předem místo toho, aby se každý zápis rozšířil o zápis, pomáhá zvýšit rychlost kopírování ve scénářích, kde je známá velikost souboru. Pokud je potřeba se vyhnout rozšiřování zápisů, můžete pomocí příkazu nastavit velikost cílového
truncate - size <size><file>souboru. Potom příkaz zkopíruje zdrojový soubor bez nutnosti opakované aktualizace velikostidd if=<source> of=<target> bs=1M conv=notrunccílového souboru. Můžete například nastavit velikost cílového souboru pro každý soubor, který chcete zkopírovat (předpokládejme, že je sdílená složka připojená pod /mnt/share):$ for i in `` find * -type f``; do truncate --size ``stat -c%s $i`` /mnt/share/$i; done- a pak – kopírování souborů bez paralelního rozšiřování zápisů:
$find * -type f | parallel -j6 dd if={} of =/mnt/share/{} bs=1M conv=notrunc
"Chyba připojení (115): Právě probíhá operace" při připojování Azure Files protokolem SMB 3.x
Příčina
Některé distribuce Linuxu zatím nepodporují funkce šifrování v protokolu SMB 3.x. Uživatelům se může zobrazit chybová zpráva 115, pokud se kvůli chybějící funkci pokusí připojit Azure Files protokolem SMB 3.x pomocí protokolu SMB 3.x. Protokol SMB 3.x s úplným šifrováním se podporuje jenom v případě, že používáte Ubuntu 16.04 nebo novější.
Řešení
Funkce šifrování pro PROTOKOL SMB 3.x pro Linux byla zavedena v jádru 4.11. Tato funkce umožňuje připojení sdílené složky Azure z místního prostředí nebo z jiné oblasti Azure. Některé linuxové distribuce mohou mít backportované změny z jádra 4.11 na starší verze jádra Linuxu, které udržují. Pokud chcete zjistit, jestli vaše verze Linuxu podporuje protokol SMB 3.x s šifrováním, obraťte se na část Azure Files s Linuxem.
Pokud váš linuxový klient SMB nepodporuje šifrování, připojte službu Azure Files pomocí protokolu SMB 2.1 z virtuálního počítače Azure s Linuxem, který je ve stejném datacentru jako sdílená složka. Ověřte, že je pro účet úložiště zakázané nastavení Vyžadovat zabezpečený přenos.
Chyba Žádný přístup při pokusu o přístup ke sdílené složky Azure nebo odstranění sdílené složky Azure
Při pokusu o přístup ke sdílené složky Azure nebo odstranění sdílené složky Azure na portálu se může zobrazit následující chyba:
Bez přístupu
Kód chyby: 403
Příčina 1: V účtu úložiště jsou povolená pravidla virtuální sítě nebo brány firewall
Řešení 1. příčiny
Ověřte, že jsou pro účet úložiště správně nakonfigurovaná pravidla brány firewall a virtuální sítě. Pokud chcete otestovat, jestli problém způsobují pravidla brány firewall nebo virtuální sítě, dočasně změňte nastavení pro účet úložiště na Povolit přístup ze všech sítí. Další informace najdete v tématu Konfigurace virtuálních sítí a bran firewall Azure Storage.
Příčina 2: Váš uživatelský účet nemá přístup k účtu úložiště
Řešení 2. příčiny
Přejděte k účtu úložiště, ve kterém se nachází sdílená složky Azure, klikněte na Řízení přístupu (IAM) a ověřte, že váš uživatelský účet má přístup k účtu úložiště. Další informace najdete v tématu Zabezpečení účtu úložiště pomocí řízení přístupu na základě role v Azure (Azure RBAC).
Nejde odstranit soubor nebo adresář ve sdílené složce Azure
Příčina
K tomuto problému obvykle dochází v případě, že má soubor nebo adresář otevřený popisovač.
Řešení
Pokud klienti SMB zavřeli všechny otevřené popisovače a problém přetrvává, proveďte následující kroky:
K zobrazení otevřených popisovačů použijte rutinu PowerShellu Get-AzStorageFileHandle.
K zavření otevřených popisovačů použijte rutinu PowerShellu Close-AzStorageFileHandle.
Poznámka
Rutiny Get-AzStorageFileHandle a Close-AzStorageFileHandle jsou součástí modulu Az PowerShell verze 2.4 nebo novější. Pokud chcete nainstalovat nejnovější modul Az PowerShellu, podívejte se na Azure PowerShell modulu.
Pomalý výkon sdílené složky Azure připojené k virtuálnímu počítači s Linuxem
Příčina 1: Ukládání do mezipaměti
Jednou z možných příčin pomalého výkonu je zakázáno ukládání do mezipaměti. Ukládání do mezipaměti být užitečné, pokud k souboru přistupujete opakovaně, jinak to může být režie. Před zakázáním zkontrolujte, jestli mezipaměť používáte.
Řešení 1. příčiny
Pokud chcete zkontrolovat, jestli je ukládání do mezipaměti zakázané, vyhledejte položku cache=.
Cache=none znamená, že ukládání do mezipaměti je zakázané. Znovu připojte sdílené složky pomocí výchozího příkazu pro připojení nebo explicitním přidáním možnosti cache=strict do příkazu mount, abyste zajistili, že je povolený výchozí režim ukládání do mezipaměti nebo "striktní" režim ukládání do mezipaměti.
V některých scénářích může možnost serverino mount způsobit, že příkaz ls spustí statistiku pro každou položku adresáře. Toto chování vede ke snížení výkonu při výpisu velkého adresáře. Možnosti připojení můžete zkontrolovat v položce /etc/fstab:
//azureuser.file.core.windows.net/cifs /cifs cifs vers=2.1,serverino,username=xxx,password=xxx,dir_mode=0777,file_mode=0777
Můžete také zkontrolovat, jestli se používají správné možnosti, spuštěním příkazu sudo mount | grep cifs a kontrolou jeho výstupu. Následuje příklad výstupu:
//azureuser.file.core.windows.net/cifs on /cifs type cifs (rw,relatime,vers=2.1,sec=ntlmssp,cache=strict,username=xxx,domain=X,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.10.1,file_mode=0777, dir_mode=0777,persistenthandles,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,actimeo=1)
Pokud možnost cache=strict nebo serverino není k dispozici, odpojte a Azure Files znovu spuštěním příkazu mount z dokumentace. Pak znovu zkontrolujte, že má položka /etc/fstab správné možnosti.
Příčina 2: Omezování
Je možné, že dochází k omezování a vaše požadavky se odesílají do fronty. Můžete to ověřit využitím Azure Storage metrik v Azure Monitor.
Řešení 2. příčiny
Ujistěte se, že se vaše aplikace nachází v Azure Files škálování cílů.
Při kopírování souborů z virtuálního počítače do Windows se ztratila časová razítka
Na platformách Linux/Unix příkaz cp -p selže, pokud soubor 1 a soubor 2 vlastní jiní uživatelé.
Příčina
Příznak force f v příkazu COPYFILE má za výsledek spuštění příkazu cp -p -f v Unixu. Tento příkaz také nedokáže zachovat časové razítko souboru, který vlastníte.
Alternativní řešení
Ke kopírování souborů použijte uživatele účtu úložiště:
Useadd : [storage account name]Passwd [storage account name]Su [storage account name]Cp -p filename.txt /share
ls: cannot access ' < path > ': Input/output error
Když se pokusíte zobrazit seznam souborů ve sdílené složky Azure pomocí příkazu ls, příkaz při výpisu souborů přestane reagovat. Zobrazí se následující chyba:
ls: cannot access' < path > ': Chyba vstupu/výstupu
Řešení
Upgradujte jádro Linuxu na následující verze, které mají opravu tohoto problému:
- 4.4.87 nebo novější
- 4.9.48 nebo novější
- 4.12.11 nebo novější
- Všechny verze, které jsou větší než nebo rovno 4.13
Nelze vytvořit symbolické odkazy – ln: Nepodařilo se vytvořit symbolický odkaz 't': Operace není podporována.
Příčina
Ve výchozím nastavení připojení sdílených složek Azure v Linuxu pomocí protokolu CIFS nepomáguje podporu symbolických odkazů (symbolických odkazů). Zobrazí se chyba podobná této:
ln -s linked -n t
ln: failed to create symbolic link 't': Operation not supported
Řešení
Linuxový klient CIFS nepodporuje vytváření symbolických Windows ve stylu Linuxu přes protokol SMB 2 nebo 3. Linuxový klient v současné době podporuje další styl symbolických odkazů s názvem Minshall+french symlinks pro operace vytvoření i sledování. Zákazníci, kteří potřebují symbolické odkazy, mohou použít možnost připojení "nesymlinks". Doporučujeme použít i formát, který používají macy.
Pokud chcete použít symlinky, přidejte na konec příkazu CIFS mount následující kód:
,mfsymlinks
Příkaz tedy vypadá nějak takhle:
sudo mount -t cifs //<storage-account-name>.file.core.windows.net/<share-name> <mount-point> -o vers=<smb-version>,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino,mfsymlinks
Pak můžete vytvořit symlinky, jak je navrženo na wikiwebu.
Chyba ConditionHeadersNotSupported z webové aplikace pomocí služby soubory Azure z prohlížeče
K chybě ConditionHeadersNotSupported dojde při přístupu k obsahu hostovanému v souborech Azure pomocí aplikace, která využívá podmíněná záhlaví, jako je webový prohlížeč, ale přístup se nezdařil. Chyba uvádí, že hlavičky podmínek nejsou podporovány.

Příčina
Podmíněné hlavičky ještě nejsou podporované. Aplikace, které je implementují, budou muset požádat o úplný soubor pokaždé, když se k souboru dostanete.
Alternativní řešení
Když se nahraje nový soubor, ve výchozím nastavení vlastnost Control cache je "no-cache". Chcete-li vynutit, aby aplikace vyžadovala soubor pokaždé, je nutné aktualizovat vlastnost řízení mezipaměti souboru z "no-cache" na "no-cache" No-Store ", musí-revalidate". Toho lze dosáhnout pomocí Průzkumník služby Azure Storage.

Chyba připojení (112): Hostitel je mimo limit kvůli časovému limitu opětovného připojení
K chybě připojení 112 dochází v klientovi s Linuxem při dlouhodobé nečinnosti klienta. Po delší době nečinnosti se klient odpojí a vyprší platnost připojení.
Příčina
Připojení může být nečinné z následujících důvodů:
- Selhání síťové komunikace, která brání opětovnému navázání připojení k serveru přes protokol TCP, při použití výchozí možnosti dočasného připojení
- Nedávné opravy opětovného připojení, které nejsou ve starších jádrech
Řešení
Tento problém s opětovným připojením v jádru Linuxu je teď opravený v rámci následujících změn:
- Oprava opětovného připojení, aby se neodkládalo opětovné připojení k relaci protokolu SMB 3 dlouho po opětovném připojení k socketu
- Volání služby Echo okamžitě po opětovném připojení k socketu
- CIFS: Oprava možného poškození paměti během opětovného připojování
- CIFS: Oprava možného dvojího uzamčení vzájemně vyloučeného přístupu během opětovného připojování (u jádra verze 4.9 nebo novější)
Tyto změny se však ještě nemusely přenést do všech distribucí Linuxu. Pokud používáte oblíbenou distribuci Linuxu, můžete se podívat na stránku Použití Azure Files s Linuxem a zjistit, která verze vaší distribuce má potřebné změny jádra.
Alternativní řešení
Tento problém můžete obejít tím, že zadáte trvalé připojení. Trvalé připojení přinutí klienta, aby počkal na navázání nebo explicitní přerušení připojení. S jeho využitím můžete zabránit chybám způsobeným vypršením časového limitu sítě. Toto alternativní řešení však může způsobit nekonečné čekání. Buďte připraveni v případě potřeby zastavit připojení.
Pokud nemůžete upgradovat na nejnovější verze jádra, můžete tento problém obejít tím, že ve sdílené složce Azure budete uchovávat soubor, do kterého budete každých maximálně 30 sekund zapisovat. Musí se jednat o operaci zápisu, jako je přepsání vytvořeného nebo upraveného data souboru. Jinak můžete dostávat výsledky uložené v mezipaměti a vaše operace nemusí aktivovat opětovné připojení.
"CIFS VFS: error -22 on ioctl to get interface list" (Chyba -22 v ioctl pro získání seznamu rozhraní) při připojení sdílené složky Azure pomocí protokolu SMB 3.x
Příčina
Tato chyba se do protokolu zaprotokoluje, protože Azure Files v současné době nepodporuje smb multichannel.
Řešení
Tuto chybu můžete ignorovat.
Nelze získat přístup ke složkám nebo souborům s názvem, který má na konci mezeru nebo tečku
Nemůžete získat přístup ke složkám nebo souborům ze sdílené složky Azure, když je připojená k Linuxu, příkazy jako du a ls nebo aplikace třetích stran selžou s chybou Typu Žádný takový soubor nebo adresář při přístupu ke sdílené složky, ale můžete nahrát soubory do těchto složek přes portál.
Příčina
Složky nebo soubory byly nahrány ze systému, který kóduje znaky na konci názvu do jiného znaku. Soubory nahrané z počítače mohou místo znaku 0x20 (mezery) nebo 0X2E (tečka) obsahovat znak "0xF028" nebo "0xF029".
Řešení
Při připojování sdílené složky v Linuxu použijte u sdílené složky možnost mapchars:
Namísto:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino
použijte:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino,mapchars
Potřebujete pomoc? Obraťte se na podporu.
Pokud stále potřebujete pomoc, obraťte se na podporu, aby se váš problém rychle vyřešil.