Aracılığıyla paylaş


Azure NetApp Files'da dosya kilitleme ve kilitleme türlerini anlama

NAS ortamlarında, birden çok istemci aynı birimdeki dosyalara erişer. NAS birimi uygulamadan haberdar değildir, bu nedenle birden fazla istemci aynı anda aynı dosyaya yazmaya çalıştığında verileri olası bozulmalara karşı korumak için uygulamalar, dosya kullanımdayken diğer istemcilerin değişiklik yapmasını önlemek için NAS sunucusuna kilit istekleri gönderir. NFS ile dosya kilitleme mekanizmaları, kullanılan NFS sürümüne bağlıdır.

Kilit türleri

Aşağıdakiler dahil olmak üzere çeşitli NFS kilit türleri vardır:

Paylaşılan kilitler: Paylaşılan kilitler aynı anda birden çok işlem tarafından kullanılabilir ve yalnızca bir dosyada özel kilit yoksa yayımlanabilir. Bu kilitler salt okunur çalışmaya yöneliktir, ancak yazma işlemleri için (örneğin bir veritabanıyla) kullanılabilir.

Özel kilitler: Özel kilitler CIFS/SMB'deki özel kilitlerle aynı şekilde çalışır: Özel bir kilit olduğunda dosyayı yalnızca bir işlem kullanabilir. Dosyayı kilitleyen başka işlemler varsa, bu işlem çatallanmadığı sürece özel bir kilit düzenlenemez.

Temsilci seçmeler: Temsilciler yalnızca NFSv4.x ile kullanılır ve NFS sunucu seçenekleri etkinleştirildiğinde ve istemci NFSv4.x temsilcilerini desteklediğinde atanır. Temsilci seçmeler, istemci tarafından kullanılan dosyaya "geçici" bir kilit oluşturarak işlemleri istemci tarafında önbelleğe almak için bir yol sağlar. Bu, istemci ve sunucu arasındaki çağrı sayısını azaltarak belirli iş yüklerinin performansını artırır ve SMB fırsatçı kilitlerine benzer. Azure NetApp Files şu anda NFSv4.x temsilcilerini desteklememektedir.

Bayt aralığı kilitleri: Bayt aralığı kilitleri, dosyanın tamamını kilitlemek yerine dosyanın yalnızca bir bölümünü kilitler.

Kilitleme davranışı kilit türüne, istemci işletim sistemi sürümüne ve kullanılan NFS sürümüne bağlıdır. Beklenen davranışı ölçmek için ortamınızda kilitlemeyi test etmeye özen gösterin.

NFSv3 kilitleme

NFSv3, NFS istemcisi ve sunucusu arasındaki dosya kilitlerini koordine etmek için Ağ Kilit Yöneticisi (NLM) ve Ağ Durum İzleyicisi (NSM) gibi yardımcı protokoller kullanır. Bu yardımcı protokoller, Azure NetApp Files'ın bağlı olduğu RFC-1813'te tanımlanır.

NLM kilitlerin oluşturulmasına ve serbest bırakılmasına yardımcı olurken, NSM eşlere sunucu yeniden başlatmalarını bildirir. NFSv3 kilitlemesi ile, bir istemci yeniden başlatıldığında sunucunun kilitleri serbest bırakması gerekir. Bir sunucu yeniden başlatıldığında, istemci sunucuya tuttuğu kilitleri anımsatır

Dekont

Bazı durumlarda NFS kilit mekanizmaları düzgün iletişim kurmaz (örneğin, ağ kesintisi durumunda) ve eski kilitler sunucuda artık kalır ve el ile temizlenmelidir. Bu görev hakkında daha fazla bilgi için bkz . Dosya kilitlerinde sorun giderme.

NFSv4.x kilitleme

NFSv4.x, NFS protokolüyle tümleştirilmiş kira tabanlı bir kilitleme modeli kullanır. Bu, bakım veya kaygılanacak yardımcı hizmetler olmadığı anlamına gelir; tüm kilitleme NFSv4.x iletişiminde kapsüllenmiş.

Azure NetApp Files, kira tabanlı bir model altında tüm dosya kilitlerinin durumunu koruyarak NFSv4.x dosya kilitleme mekanizmasını destekler. RFC 8881'e uygun olarak, Azure NetApp Files "bir NFS istemcisi tarafından tutulan tüm eyaletler için tek bir kira süresi tanımlar. İstemci, tanımlanan süre içinde kirasını yenilemezse, istemcinin kirasıyla ilişkili tüm durum sunucu tarafından serbest bırakılabilir."

Bu, istemcinin dosya okuma gibi bir işlem gerçekleştirerek kirasını açık veya örtük olarak yenilediği anlamına gelir. Ayrıca Azure NetApp Files, istemcilerin sunucu kurtarma sırasında kilit durumlarını geri kazanmayı denediği özel bir işlem dönemi olan yetkisiz kullanım süresini tanımlar.

Süre Tanım
Kira Azure NetApp Files'ın bir istemciye geri alınamaz bir şekilde kilit verme süresi.
Yetkisiz kullanım süresi Sunucu kesintisi durumunda sunucu kurtarma sırasında istemcilerin kilit durumlarını geri kazanmayı denediği zaman aralığı.

Azure NetApp Files NFSv4.x kilitlerini nasıl işler?

Kilitler, kira temelinde istemci isteği üzerine Azure NetApp Files tarafından verilir. Azure NetApp Files sunucusu, değişiklikler için her istemcideki kiralamayı her 30 saniyede bir denetler. İstemcinin yeniden başlatılması durumunda, istemci yeniden başlatıldıktan sonra sunucudan tüm geçerli kilitleri geri alabilir. Azure NetApp Files sunucusu yeniden başlatılırsa, yeniden başlatıldıktan sonra istemcilere 45 saniyelik yetkisiz kullanım süresi boyunca yeni kilitler vermez. Bu süreden sonra, istekte bulunan istemcilere kilitler oluşturulabilir. Belirtilen yetkisiz kullanım süresi boyunca kilit yeniden oluşturulamıyorsa, kilidin süresi kendi başına dolar. Bu davranış, el ile bozulması gereken eski kilitler olmayacağından NFSv3 kilitlemesinden farklıdır.

İstemcide kilitleri el ile oluşturma

NFS kilitlerini test etmek için istemcinin NFS sunucusuna bir kilit oluşturmasını söylemesi gerekir. Ancak, tüm uygulamalar kilitleri kullanmaz. Örneğin, "vi" uygulaması bir dosyayı kilitlemez. Aynı klasörde nokta adlandırma kuralı kullanarak gizli bir takas dosyası oluşturur ve uygulama kapatıldığında bu dosyaya yazma işlemleri işler. Ardından eski dosya silinir ve takas dosyası dosya adı olarak yeniden adlandırılır.

Bununla birlikte, kilitleri el ile oluşturmak için yardımcı programlar vardır. Örneğin, sürü dosyaları kilitleyebilir.

Bir dosyada kilit oluşturmak için önce exec komutunu çalıştırarak sayısal bir kimlik atayın.

# exec 4<>v4user_file

Dosyada paylaşılan veya özel kilit oluşturmak için sürü kullanın.

# flock

Usage:
 flock [options] <file|directory> <command> [command args]
 flock [options] <file|directory> -c <command>
 flock [options] <file descriptor number>

Options:
 -s  --shared             get a shared lock
 -x  --exclusive          get an exclusive lock (default)
 -u  --unlock             remove a lock
 -n  --nonblock           fail rather than wait
 -w  --timeout <secs>     wait for a limited amount of time
 -E  --conflict-exit-code <number>  exit code after conflict or timeout
 -o  --close              close file descriptor before running command
 -c  --command <command>  run a single command string through the shell

 -h, --help     display this help and exit
 -V, --version  output version information and exit

# flock -n 4

Dosyanın kilidini açmak için.

# flock -u -n 4

Dosyaları el ile kilitlemek, Azure NetApp Files'da dosya açma ve düzenleme etkileşimlerini test etmenizi ve kilit sonu işlevini test etmenizi sağlar.

Sonraki adımlar