Topik ini menjelaskan versi protokol Network File System (NFS) yang didukung oleh File Storage NAS (NAS), perbedaan antara NFSv3 dan NFSv4, serta model konsistensi NFS.
Apa itu NFS?
NFS adalah protokol sistem file terdistribusi yang memungkinkan Anda mengakses file di sistem remote seperti mengakses file lokal.
Kami merekomendasikan untuk memasang sistem file NFS pada instance Elastic Compute Service (ECS) Linux dan kontainer. Jika Anda memasang sistem file Server Message Block (SMB) pada instance ECS Linux dan kontainer, masalah kompatibilitas mungkin terjadi. Untuk informasi lebih lanjut, lihat FAQ Kompatibilitas Pemasangan Silang.
Versi Protokol
Tiga versi NFS telah dirilis: NFSv2, NFSv3, dan NFSv4. NFSv4 memiliki dua versi minor: NFSv4.0 dan NFSv4.1.
Sistem file NAS tujuan umum mendukung NFSv3 dan NFSv4.0.
Sistem file NAS Extreme mendukung NFSv3.
Perbedaan antara NFSv3 dan NFSv4.0
Fitur
NFSv4.0 adalah protokol stateful yang mengimplementasikan fitur penguncian file dan dapat memperoleh node root dari sistem file.
NFSv3 tidak mengidentifikasi kunci file. Saat sistem file dipasang menggunakan NFSv3 dan NFSv4.0 secara bersamaan, data yang ditulis menggunakan NFSv4.0 mungkin tertimpa.
Keamanan
NFSv4.0 menyediakan keamanan yang ditingkatkan dan mendukung autentikasi identitas RPCSEC-GSS.
Permintaan
NFSv4.0 hanya menyediakan dua jenis permintaan: NULL dan COMPOUND. Semua operasi diintegrasikan ke dalam COMPOUND. Klien dapat mengenkapsulasi beberapa operasi menjadi satu permintaan COMPOUND berdasarkan permintaan aktual untuk meningkatkan fleksibilitas.
Nama Ruang
Nama ruang sistem file NFSv4.0 telah berubah. Sistem file root (fsid=0) harus diatur di server, dan sistem file lainnya dipasang pada sistem file root untuk diekspor.
Untuk informasi lebih lanjut tentang batasan pada sistem file NFS, lihat Batasan pada Protokol.
Aplikasi Cache NFS
Pada disk tradisional, semua data disimpan dalam cache halaman, dan halaman yang dimodifikasi dikembalikan ke server secara asinkron. Latensi disk tradisional rendah. Namun, dalam sistem file NFS, NFS tidak menyimpan file baru atau konten yang baru ditulis ke dalam cache halaman, tetapi segera mengembalikannya ke server NAS. Oleh karena itu, ketika beberapa instance ECS berbagi sistem file NFS, semua operasi NAS menyebabkan overhead tambahan dibandingkan dengan operasi disk. Overhead ini umumnya berkisar antara 100 µs hingga 1 ms. Untuk segera mengembalikan data ke server NAS, NAS menyediakan model konsistensi multi-node berikut:
Model Konsistensi Akhir Berbasis Timeout
NFS menyimpan atribut (FileAttr) direktori atau file. Sistem operasi menentukan apakah direktori atau file telah dimodifikasi pada instance ECS lain berdasarkan apakah FileAttr telah berubah. Selain itu, setelah FileAttr dimuat, sistem operasi menganggap cache (misalnya, isi file atau daftar file dalam direktori) valid selama waktu T. Setelah waktu T, sistem operasi memperoleh FileAttr dari server lagi. Jika FileAttr tetap tidak berubah, sistem operasi menganggap semua cache terkait file atau direktori valid.
T adalah nilai adaptif. Nilai default: 1 detik hingga 60 detik.
Cache konten file: menyimpan isi file.
Cache subdirektori: menyimpan file mana yang ada dalam direktori dan file mana yang tidak ada dalam direktori.
Contoh cache konten file:
ECS-1 membaca 0 hingga 4 KB file X: ECS-1 membaca isi file untuk pertama kalinya dan isi tersebut tidak ada dalam cache. ECS-1 membaca isi dari server dan menyimpannya di cache lokal.
ECS-2 memperbarui 0 hingga 4 KB file X: ECS-2 menulis data ke server dan memperbarui mtime dalam FileAttr.
ECS-1 membaca 0 hingga 4 KB file X lagi: Jika interval waktu antara pembacaan kedua dan pertama kurang dari waktu T, FileAttr belum kedaluwarsa. Dalam hal ini, ECS-1 langsung membaca 0 hingga 4 KB file X dalam cache.
ECS-1 membaca 0 hingga 4 KB file X untuk ketiga kalinya: Jika interval waktu antara pembacaan ketiga dan pertama lebih dari waktu T, ECS-1 memperoleh FileAttr baru dari server dan menemukan bahwa mtime telah berubah. Dalam hal ini, ECS-1 membuang data dalam cache dan membaca data dari server.
Contoh cache subdirektori:
ECS-1 mencoba menemukan /a: ECS-1 menemukan bahwa a tidak ada saat pencarian pertama. ECS-1 kemudian menyimpan informasi bahwa a tidak ada dalam direktori /.
ECS-2 membuat subdirektori /a.
ECS-1 mencoba menemukan /a lagi: Jika interval waktu antara pencarian kedua dan pertama kurang dari waktu T, ECS-1 langsung menggunakan cache dan memberi tahu bahwa subdirektori tidak ada.
ECS-1 mencoba menemukan /a untuk ketiga kalinya: Jika interval waktu antara pencarian ketiga dan pertama lebih dari waktu T, ECS-1 memperoleh FileAttr terbaru dari subdirektori / dan menemukan bahwa mtime telah berubah. Dalam hal ini, ECS-1 membuang data dalam cache dan mencari /a di server.
Untuk informasi lebih lanjut tentang model konsistensi akhir berbasis timeout yang disediakan oleh NFS, lihat NFS.
Model Konsistensi Close-to-Open (CTO) Berbasis File
Model konsistensi akhir berbasis timeout tidak dapat memastikan bahwa ECS-2 segera membaca data yang ditulis oleh ECS-1. Oleh karena itu, untuk meningkatkan konsistensi, NFS menyediakan model konsistensi CTO berbasis file. Saat dua atau lebih node komputasi membaca atau menulis data ke file yang sama secara bersamaan, perubahan yang dibuat oleh ECS-1 mungkin tidak segera dibaca oleh ECS-2. Namun, begitu ECS-1 membuka file, menulis data ke file, dan kemudian menutup file, membuka kembali file pada node komputasi apa pun memastikan akses ke data yang baru ditulis.
Sebagai contoh, instance ECS produsen memproduksi file X dan kemudian mengeksekusi operasi close. Kemudian, instance ECS produsen mengirim pesan X ke Antrian Pesan, menyatakan bahwa file X telah diproduksi. Instance ECS konsumen yang telah berlangganan Antrian Pesan membaca pesan X (file X telah diproduksi). Kemudian, instance ECS konsumen mengeksekusi operasi open pada file dan membaca file melalui fd yang dikembalikan oleh operasi open. Dengan cara ini, instance ECS konsumen pasti dapat membaca semua isi file X. Anggaplah bahwa instance ECS konsumen telah mengeksekusi operasi open pada file X dan memperoleh fd sebelum instance ECS produsen menyelesaikan produksi file. Dalam hal ini, instance ECS konsumen mungkin tidak dapat membaca konten file terbaru dengan langsung menggunakan fd setelah menerima pesan X.
Untuk informasi tentang cara menyelesaikan latensi dalam membuat file dan menulis data ke file, lihat Bagaimana cara menyelesaikan latensi dalam membuat file di sistem file NFS? dan Bagaimana cara menyelesaikan latensi dalam menulis data ke sistem file NFS?