Topik ini menjelaskan masalah umum dan solusinya saat menggunakan ossfs 2.0.
Informasi umum
Pesan kesalahan ossfs 2.0 berisi informasi mengenai kesalahan permintaan HTTP. Untuk memecahkan masalah, periksa kode status respons HTTP yang relevan, seperti 4** dan 5**, serta pesan yang dikembalikan oleh OSS dalam log.
Masalah Pemasangan
Kesalahan mount: ERROR: failed to mount ossfs2, see more details in log file
Analisis Masalah: Ini merupakan kesalahan umum. Periksa log untuk detail kesalahan spesifik. Penyebab umum meliputi izin atau parameter konfigurasi yang salah. Contohnya:

AccessKey tidak memiliki izin yang diperlukan untuk mengakses bucket. Pastikan AccessKey Anda memiliki izin yang sesuai dan nama bucket dikonfigurasi dengan benar.

Parameter AccessKey yang Anda konfigurasi salah.

Solusi: Perbaiki konfigurasi berdasarkan pesan kesalahan dalam log, lalu pasang kembali bucket tersebut.
Kesalahan mount: MOUNTPOINT: Directory does not exist: /mnt/ossfs2
Analisis Masalah: Kesalahan ini terjadi karena direktori tersebut belum dibuat.
Solusi: Buat direktori tersebut, lalu lakukan operasi mount.
Kesalahan mount: MOUNTPOINT: directory /mnt/ossfs2 is not empty.
Analisis Masalah: Direktori titik pemasangan tidak kosong. ossfs 2.0 mengharuskan direktori mount dalam keadaan kosong.
Solusi: Periksa apakah sistem file lain telah dipasang ke direktori tersebut. Jika ya, lepas pemasangannya menggunakan perintah umount. Jika tidak ada sistem file lain yang dipasang, periksa apakah terdapat file tersisa di direktori tersebut. Anda juga dapat melakukan mount ke direktori kosong yang berbeda.
Kesalahan mount: version `FUSE_3.12' not found
Analisis Masalah: Kesalahan ini menunjukkan bahwa beberapa file instalasi hilang. Akibatnya, ossfs 2.0 mencoba menggunakan library libfuse yang diinstal sistem, tetapi versinya terlalu lama.
Solusi: Hapus instalasi paket yang bersangkutan, lalu instal ulang.
Kesalahan mount: fuse: device not found, try 'modeprobe fuse' first or fuse_session_mount failed with error: No such file or directory in the log
Analisis Masalah: Perangkat /dev/fuse tidak dapat diakses. Masalah ini umum terjadi di lingkungan container yang tidak memiliki izin akses yang diperlukan.
Solusi: Jika Anda melakukan mount di lingkungan container, jalankan container dalam mode istimewa.
Masalah baca dan tulis
Kesalahan penulisan file: File too large
Analisis Masalah: Secara default, ossfs 2.0 menggunakan ukuran partisi 8 MiB dan mendukung ukuran file maksimum 78,125 GiB. Kesalahan ini terjadi jika Anda mencoba menulis file yang melebihi batas tersebut.
Solusi: Saat memasang bucket, Anda dapat meningkatkan ukuran file maksimum yang didukung dengan mengonfigurasi opsi upload_buffer_size. Perhatikan bahwa pengaturan upload_buffer_size memerlukan lebih banyak sumber daya memori. ossfs 2.0 memungkinkan Anda mengonfigurasi total_mem_limit untuk mengontrol penggunaan memori. Untuk informasi selengkapnya, lihat Mounting options.
Kesalahan penulisan file: Invalid argument
Analisis Masalah: ossfs 2.0 tidak mendukung penulisan acak ke file. Sistem hanya mendukung penambahan sekuensial ke akhir file. Jika Anda menulis ke posisi selain akhir file saat ini, akan muncul kesalahan `Invalid argument`. Pesan kesalahan dalam log sebagai berikut:

Solusi: Jika aplikasi Anda memerlukan penulisan acak, beralihlah ke ossfs 1.0. Penulisan acak sering kali disebabkan oleh penulisan konkuren ke handle file yang sama. Dalam skenario ini, ossfs 2.0 dioptimalkan untuk penulisan sekuensial, dan proses single-threaded memberikan throughput yang baik. Anda dapat beralih ke penulisan sekuensial single-threaded untuk mengatasi masalah ini.
Perintah `git clone` gagal di titik pemasangan (kesalahan tak terduga `No such file or directory` saat membaca file)
Analisis Masalah: Secara default, ossfs 2.0 tidak mendukung penulisan dan pembacaan file secara bersamaan. Jika Anda membaca file saat sedang ditulis, operasi tersebut dapat mengembalikan data lama atau menyebabkan kesalahan baca. Perintah `git clone` menggunakan mode akses write-while-reading. Pesan kesalahan berikut muncul dalam log:

Dalam kasus ini, errno 2 adalah kode kesalahan Linux ENOENT, yang menunjukkan bahwa data file tidak dibaca dengan benar. Jika Anda mengalami kesalahan baca dengan aplikasi lain, periksa log untuk pesan kesalahan serupa. Jika operasi baca tidak mengembalikan kesalahan `file not found`, kemungkinan besar karena aplikasi belum menutup file tersebut, sehingga file belum diunggah ke OSS.
Solusi: Hindari penggunaan perintah semacam itu. Anda dapat menggunakan git clone untuk mengkloning repositori ke disk lokal, lalu gunakan perintah cp untuk menyalin file ke titik pemasangan.
Kesalahan penulisan konkuren: Device or resource busy
Analisis Masalah: Di ossfs 2.0, jika sebuah file dibuka beberapa kali secara bersamaan, hanya satu handle file yang dapat digunakan untuk penulisan sekuensial. Operasi penulisan berikutnya dari handle file lain akan gagal. Pesan kesalahan berikut dikembalikan:

Solusi: Hindari penulisan konkuren ke file yang sama. ossfs 2.0 dioptimalkan untuk penulisan sekuensial, dan proses single-threaded memberikan throughput yang baik.
Masalah Lainnya
Kesalahan Melepas Pemasangan: umount: /mnt/ossfs2: target is busy.
Analisis Masalah: Kesalahan ini terjadi karena suatu proses sedang mengakses file di direktori mount /mnt/ossfs2, sehingga mencegah direktori tersebut dilepas.
Solusi:
Gunakan
lsof /mnt/ossfs2untuk menemukan proses yang mengakses direktori tersebut.Hentikan proses tersebut.
Lepaskan pemasangan direktori tersebut lagi.
Banyak log 404 muncul saat menggunakan ossfs 2.0
Informasi Latar Belakang: Saat menggunakan ossfs 2.0, Anda mungkin melihat banyak catatan `404 Not Found` dalam log. Dalam kebanyakan kasus, ini bukan kesalahan sistem, melainkan perilaku yang diharapkan agar ossfs 2.0 dapat mensimulasikan semantik sistem file lokal.
Sebelum melakukan operasi pada file, sistem operasi memeriksa apakah objek target ada. Proses ini dapat menghasilkan banyak permintaan probe ke OSS. Kode status `404` dikembalikan jika objek tersebut tidak ada.
Proses yang digunakan ossfs 2.0 untuk memeriksa keberadaan objek adalah sebagai berikut:
Mengirim permintaan GetObjectMeta untuk memeriksa apakah path tertentu, seperti
object, ada sebagai objek.Jika objek ada, sistem mengembalikan metadata objek. Jika objek tidak ada, sistem mengembalikan kesalahan `404` dan melanjutkan ke langkah berikutnya.
CatatanMeskipun objek tidak ada, ossfs 2.0 tetap perlu menentukan apakah path tersebut merepresentasikan direktori.
Setelah menerima kesalahan `404`, ossfs 2.0 mengirim permintaan ListObjects untuk menentukan apakah path yang ditentukan merupakan direktori. Hal ini dilakukan dengan mengkueri objek yang memiliki awalan
object/.Jika hasilnya kosong, path tersebut dianggap tidak ada. Jika hasilnya tidak kosong, path tersebut dianggap sebagai direktori yang ada, dan sistem menampilkan isinya.
Analisis Masalah:
Saat Anda menggunakan perintah seperti stat untuk mengakses file yang tidak ada, sistem mengembalikan kesalahan `404`. Hal ini dipetakan ke kesalahan sistem file lokal `No such file or directory`.
Sebelum membuat file atau direktori dalam operasi batch, sistem operasi terlebih dahulu memeriksa apakah file target ada. Permintaan pembuatan hanya dikirim jika file tersebut tidak ada. Kesalahan `404` yang dihasilkan selama pemeriksaan ini bersifat normal dan tidak menunjukkan adanya pengecualian sistem.
Solusi: Meskipun kesalahan `404` bersifat normal, permintaan probe yang sering dapat menurunkan performa dalam skenario konkurensi tinggi atau operasi batch. Anda dapat mengoptimalkan performa menggunakan konfigurasi berikut:
Setelah mengonfigurasi opsi ini, ossfs 2.0 tidak dapat mendeteksi perubahan yang dilakukan pada file di OSS hingga cache lokal kedaluwarsa.
Tingkatkan durasi cache metadata dengan menambah nilai
--attr_timeout. Nilai default adalah 60 detik.Hal ini mencegah pengiriman permintaan berulang ke OSS untuk file atau direktori yang dikueri sebelum metadata-nya kedaluwarsa.
Aktifkan cache negatif dengan mengonfigurasi
--oss_negative_cache_sizedan--oss_negative_cache_timeout.Saat file dikueri pertama kali dan tidak ditemukan, hasil tersebut disimpan dalam cache memori. Kueri berikutnya untuk file yang sama akan memeriksa cache negatif lokal sebelum cache kedaluwarsa, sehingga menghindari pengiriman permintaan baru ke OSS.
--oss_negative_cache_size: Menentukan jumlah entri dalam cache negatif untuk file OSS. Nilai default adalah 10000.--oss_negative_cache_timeout: Menentukan waktu kedaluwarsa cache negatif untuk file OSS. Nilai default adalah 0.