Topik ini menjelaskan masalah umum dan solusinya saat menggunakan ossfs. Jika Anda mengalami suatu masalah, pertama-tama periksa versi ossfs Anda. Jika Anda menggunakan versi lama, seperti 1.80.x, upgrade ke versi terbaru. Versi baru mencakup fitur-fitur baru dan peningkatan stabilitas.
Informasi umum
Setiap error ossfs menyertakan sebuah pesan. Saat melakukan troubleshooting suatu masalah, kumpulkan pesan-pesan tersebut untuk membantu mengidentifikasi akar permasalahan. Misalnya, jika Anda mengalami kegagalan koneksi socket atau menerima kode status HTTP 4xx atau 5xx, aktifkan log debug sebelum memulai troubleshooting.
Kesalahan 403 menunjukkan bahwa akses ditolak karena izin tidak mencukupi.
Kesalahan 400 menunjukkan operasi pengguna yang salah.
Error 5xx biasanya terkait dengan jitter jaringan atau masalah pada layanan sisi klien.
Perhatikan karakteristik berikut dari ossfs:
ossfs memasang bucket OSS remote ke disk lokal. Jika bisnis Anda memerlukan performa baca-tulis file yang tinggi, jangan gunakan ossfs.
Operasi ossfs tidak bersifat atomic. Operasi di sisi on-premises mungkin berhasil, tetapi operasi OSS remote mungkin gagal.
Jika ossfs tidak memenuhi kebutuhan bisnis Anda, pertimbangkan untuk menggunakan ossutil.
Masalah izin
Terjadi error 403 saat menjalankan perintah touch setelah mount berhasil
Penyebab: Error 403 biasanya disebabkan oleh izin akses yang tidak mencukupi. Error 403 dapat terjadi saat Anda menyentuh (touch) sebuah file dalam situasi berikut:
File tersebut merupakan objek Archive Storage. Menjalankan perintah `touch` pada file ini menghasilkan error 403.
AccessKey yang Anda gunakan tidak memiliki izin yang diperlukan untuk mengakses bucket tersebut.
Solusi:
Untuk objek Archive Storage, Anda harus memulihkan (restore) objek tersebut sebelum dapat mengaksesnya. Atau, Anda dapat mengaktifkan akses real-time untuk objek Archive di bucket tempat objek tersebut disimpan.
Untuk masalah izin, berikan izin yang diperlukan kepada akun yang terkait dengan AccessKey tersebut.
Terjadi error "Operation not permitted" saat menjalankan perintah rm untuk menghapus file
Penyebab: Saat Anda menjalankan perintah `rm` untuk menghapus file, operasi API `DeleteObject` dipanggil. Jika Anda memasang bucket sebagai pengguna Resource Access Management (RAM), periksa apakah pengguna RAM tersebut memiliki izin untuk menghapus file.
Solusi: Berikan izin yang diperlukan kepada pengguna RAM tersebut. Untuk informasi lebih lanjut, lihat kebijakan RAM dan Contoh umum kebijakan RAM.
Terjadi error "The bucket you are attempting to access must be addressed using the specified endpoint"
Penyebab: Pesan ini menunjukkan bahwa Endpoint yang ditentukan salah. Error ini dapat terjadi karena dua alasan:
Bucket dan Titik akhir tidak cocok.
UID pemilik bucket berbeda dengan UID akun yang terkait dengan AccessKey.
Solusi: Pastikan konfigurasi Anda benar dan lakukan perubahan jika diperlukan.
Masalah Pemasangan
Apakah ossfs mendukung nama domain kustom untuk memasang bucket?
Tidak, ossfs saat ini tidak mendukung skenario nama domain kustom.
Pemasangan gagal saat menggunakan ECS RAM role dengan ossfs 1.91.7 atau yang lebih baru
Solusi:
Jalankan perintah
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/[your-ecs-ram-role]untuk memeriksa konektivitas.Jika perintah `curl` berhasil dijalankan, tambahkan opsi
-o disable_imdsv2saat memasang bucket.
Terjadi error "ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected" selama pemasangan
Penyebab: Error ini terjadi karena direktori titik pemasangan (mount point) tidak ada.
Solusi: Buat direktori titik pemasangan sebelum memasang bucket.
Terjadi error "fusermount: failed to open current directory: Permission denied" selama pemasangan
Penyebab: Ini adalah bug pada Filesystem in Userspace (FUSE). Pengguna saat ini harus memiliki izin baca pada direktori kerja saat ini, yang berbeda dari direktori pemasangan.
Solusi: Jalankan perintah `cd` untuk berpindah ke direktori yang Anda miliki izin bacanya, lalu jalankan perintah `ossfs`.
Terjadi error "ossfs: Mountpoint directory /tmp/ossfs is not empty. if you are sure this is safe, can use the 'nonempty' mount option" selama pemasangan
Penyebab: Secara default, ossfs hanya dapat dipasang ke direktori kosong. Error ini terjadi ketika Anda mencoba memasang bucket ke direktori yang tidak kosong.
Solusi: Beralihlah ke direktori kosong dan pasang kembali bucket tersebut. Jika Anda harus memasang bucket ke direktori yang tidak kosong, tambahkan parameter `-ononempty` ke perintah pemasangan.
Terjadi error "ops-nginx-12-32 s3fs[163588]: [tid-75593]curl.cpp:CurlProgress(532): timeout now: 1656407871, curl_times[curl]: 1656407810, readwrite_timeout: 60" selama pemasangan
Penyebab: Operasi pemasangan ossfs mengalami timeout.
Solusi: ossfs menggunakan opsi readwrite_timeout untuk menentukan periode timeout permintaan baca dan tulis. Satuannya adalah detik, dengan nilai default 60. Anda dapat menambah nilai ini sesuai kebutuhan.
Terjadi error "ossfs: credentials file /etc/passwd-ossfs should not have others permissions" selama pemasangan
Penyebab: Izin untuk file /etc/passwd-ossfs salah.
Solusi: File /etc/passwd-ossfs menyimpan kredensial akses. Untuk melindungi kredensial ini, Anda harus mencegah pengguna lain mengakses file tersebut. Jalankan perintah chmod 640 /etc/passwd-ossfs untuk mengubah izin akses file tersebut.
Terjadi error "operation not permitted" saat menjalankan perintah ls pada folder setelah pemasangan berhasil
Penyebab: Error ini dapat terjadi jika bucket Anda berisi objek yang namanya mencakup karakter tak terlihat. Sistem file memiliki batasan ketat pada nama file dan direktori.
Solusi: Gunakan tool lain untuk mengganti nama objek-objek tersebut. Setelah diganti namanya, perintah `ls` dapat menampilkan konten direktori dengan benar.
Terjadi error "fuse: device not found, try 'modprobe fuse'" selama pemasangan
Penyebab: Error "fuse: device not found, try 'modprobe fuse'" dapat terjadi saat Anda mencoba memasang dengan ossfs di dalam container Docker. Error ini biasanya disebabkan oleh container yang tidak memiliki izin yang diperlukan untuk mengakses atau memuat modul kernel FUSE.
Solusi: Saat menjalankan ossfs di dalam container Docker, Anda dapat menambahkan parameter --privileged=true untuk memberikan izin yang lebih tinggi kepada container tersebut. Hal ini memungkinkan proses di dalam container melakukan operasi yang mirip dengan yang dilakukan di host, termasuk menggunakan sistem file FUSE. Perintah berikut adalah contoh cara memulai container dengan flag --privileged:
docker run --privileged=true -d your_imageTerjadi error "ossfs: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory" selama pemasangan
Penyebab: Versi paket instalasi tidak sesuai dengan versi sistem operasi.
Solusi: Untuk mengatasi masalah ini, unduh paket instalasi yang sesuai dengan sistem operasi Anda.
Masalah biaya
Bagaimana cara menghindari biaya dari program latar belakang yang memindai file saat OSS dipasang pada instance ECS
Penyebab: Saat suatu program memindai direktori yang dipasang oleh ossfs, pemindaian tersebut dikonversi menjadi permintaan ke OSS. Banyaknya permintaan dapat menimbulkan biaya.
Solusi: Anda dapat menggunakan tool `auditd` untuk mengidentifikasi proses mana yang memindai direktori OSS yang dipasang. Langkah-langkahnya sebagai berikut:
Instal dan mulai `auditd`.
sudo apt-get install auditd sudo service auditd startTetapkan direktori OSS yang dipasang sebagai direktori yang akan dipantau. Misalnya, jika direktori yang dipasang adalah /mnt/ossfs:
auditctl -w /mnt/ossfsPeriksa log audit untuk mengidentifikasi proses mana yang mengakses direktori ini.
ausearch -i | grep /mnt/ossfsUbah parameter program untuk melewati pemindaian tersebut.
Misalnya, jika log audit menunjukkan bahwa updatedb memindai direktori yang dipasang, Anda dapat mengubah /etc/updatedb.conf agar melewati direktori tersebut. Caranya:
Tambahkan
fuse.ossfssetelahRUNEFS =.Tambahkan direktori yang dipasang ke baris
PRUNEPATHS.
Masalah disk dan memori
ossfs terputus secara intermiten
Analisis:
Aktifkan log debug ossfs dengan menambahkan parameter -d -odbglevel=dbg. ossfs menulis log ke file log sistem default.
Pada sistem CentOS: Log ditulis ke
/var/log/messages.Pada sistem Ubuntu: Log ditulis ke
/var/log/syslog.
Analisis log tersebut. Log mungkin menunjukkan bahwa ossfs meminta terlalu banyak memori untuk operasi `listbucket` dan `listobject`, yang memicu out-of-memory (OOM) killer sistem.
CatatanOperasi `listobject` mengirim permintaan HTTP ke OSS untuk mengambil metadata objek. Jika terdapat banyak file, perintah `ls` mengonsumsi banyak memori sistem untuk mengambil metadata tersebut.
Solusi:
Tingkatkan ukuran cache stat menggunakan parameter -omax_stat_cache_size=xxx. Operasi `ls` pertama akan lebih lambat, tetapi operasi `ls` berikutnya akan lebih cepat karena metadata objek disimpan di cache lokal. Nilai default adalah 1.000, yang mengonsumsi sekitar 4 MB memori. Anda dapat menyesuaikan nilai ini berdasarkan ukuran memori mesin Anda.
Selama operasi baca dan tulis, ossfs menggunakan ruang disk untuk menulis banyak data cache sementara, mirip dengan cara kerja Nginx. Hal ini dapat menyebabkan ruang disk gratis tidak mencukupi. Saat ossfs keluar, file-file sementara ini secara otomatis dibersihkan.
Gunakan ossutil sebagai ganti ossfs. Anda dapat menggunakan ossfs untuk layanan non-produksi yang tidak sensitif terhadap performa. Untuk layanan yang memerlukan keandalan dan stabilitas tinggi, gunakan ossutil.
Mengapa ossfs mengisi ruang disk?
Penyebab: Untuk meningkatkan performa, ossfs secara default menggunakan sebanyak mungkin ruang disk untuk menyimpan data sementara unggah dan unduh. Hal ini dapat menyebabkan disk penuh.
Solusi: Anda dapat menggunakan opsi -oensure_diskfree untuk menentukan jumlah ruang disk yang harus dicadangkan. Misalnya, untuk mencadangkan ruang disk 20 GB, tambahkan opsi tersebut ke perintah pemasangan Anda:
ossfs examplebucket /tmp/ossfs -o url=http://oss-cn-hangzhou.aliyuncs.com -oensure_diskfree=20480Setelah pemasangan dengan ossfs, mengapa perintah df menampilkan ruang disk sebesar 256 TB?
Ruang disk yang ditampilkan oleh perintah df hanya untuk tujuan tampilan saja. Nilai tersebut tidak merepresentasikan kapasitas aktual bucket OSS. Nilai `Size` (total ruang disk) dan `Avail` (ruang disk bebas) tetap pada 256 TB. Nilai `Used` (ruang disk terpakai) tetap pada 0 TB.
OSS menyediakan kapasitas bucket tanpa batas. Penggunaan penyimpanan bucket Anda bergantung pada penggunaan aktual Anda. Untuk informasi lebih lanjut tentang cara menanyakan penggunaan bucket, lihat Tanyakan penggunaan tingkat bucket.
Terjadi "input/output error" saat menyalin data menggunakan perintah cp
Penyebab: Error input/output dilaporkan saat terdeteksi kesalahan pada sistem disk. Periksa apakah disk sedang mengalami beban baca/tulis tinggi saat error terjadi.
Solusi: Anda dapat menambahkan parameter sharding untuk mengontrol pembacaan dan penulisan file. Jalankan perintah ossfs -h untuk melihat parameter sharding yang tersedia.
Terjadi "input/output error" saat menggunakan rsync untuk sinkronisasi
Penyebab: Menggunakan ossfs dengan `rsync` untuk sinkronisasi dapat menyebabkan masalah. Dalam kasus ini, pengguna menjalankan perintah `cp` pada file berukuran 141 GB. Hal ini membuat disk berada dalam kondisi beban tinggi untuk operasi baca dan tulis, yang menyebabkan error tersebut.
Solusi: Jika Anda ingin mengunduh file dari OSS ke instance ECS lokal atau mengunggah file lokal ke instance ECS, gunakan fitur unggah atau unduh multi-bagian (multipart) dari ossutil.
Terjadi error "there is no enough disk space for used as cache(or temporary)" saat mengunggah file besar
Penyebab
Ruang disk yang tersedia kurang dari
multipart_size × parallel_count.`multipart_size` menentukan ukuran bagian dalam MB, dan `parallel_count` menentukan jumlah bagian unggah konkuren. Nilai default untuk `parallel_count` adalah 5.
Analisis
Secara default, ossfs menggunakan unggah multi-bagian untuk mengunggah file besar. Selama pengunggahan, ossfs menulis file cache sementara ke folder /tmp. Sebelum menulis, ossfs memeriksa apakah ruang bebas pada disk yang berisi folder /tmp kurang dari
multipart_size × parallel_count. Jika ruang disk bebas lebih besar darimultipart_size × parallel_count, file ditulis secara normal. Jika ruang disk bebas kurang darimultipart_size × parallel_count, error yang menunjukkan ruang disk lokal tidak mencukupi dikembalikan.Misalnya, asumsikan ruang disk bebas adalah 300 GB dan file yang akan diunggah berukuran 200 GB. Namun, `multipart_size` diatur ke 100000 (yaitu 100 GB), dan jumlah bagian unggah konkuren dipertahankan pada nilai default 5. Dalam kasus ini, ossfs menentukan bahwa ruang unggah yang diperlukan adalah 100 GB × 5 = 500 GB, yang melebihi ruang disk lokal yang tersedia.
Solusi
Jika jumlah bagian unggah konkuren dipertahankan pada nilai default 5, atur `multipart_size` ke nilai yang wajar:
Jika ruang disk bebas adalah 300 GB dan file yang akan diunggah berukuran 200 GB, atur `multipart_size` ke 20.
Jika ruang disk bebas adalah 300 GB dan file yang akan diunggah berukuran 500 GB, atur `multipart_size` ke 50.
Masalah dependensi
Terjadi error "fuse: warning: library too old, some operations may not work" selama instalasi ossfs
Penyebab: Error ini terjadi karena versi `libfuse` yang digunakan saat kompilasi ossfs lebih tinggi daripada versi `libfuse` yang ditautkan saat runtime. Hal ini sering terjadi ketika pengguna menginstal `libfuse` secara manual. Pada sistem CentOS 5.x dan CentOS 6.x, paket instalasi ossfs yang disediakan oleh Alibaba Cloud mencakup `libfuse-2.8.4`. Jika `libfuse-2.8.3` ada di lingkungan runtime dan ossfs ditautkan ke versi FUSE yang lebih lama, error ini terjadi.
Anda dapat menjalankan perintah ldd $(which ossfs) | grep fuse untuk mengonfirmasi versi FUSE yang ditautkan oleh ossfs saat runtime. Jika hasilnya adalah /lib64/libfuse.so.2, Anda dapat menjalankan perintah ls -l /lib64/libfuse* untuk melihat versi FUSE tersebut.
Solusi: Tautkan ossfs ke versi yang benar.
Jalankan perintah rpm -ql ossfs | grep fuse untuk menemukan direktori `libfuse`.
Jika hasilnya adalah /usr/lib/libfuse.so.2, jalankan ossfs dengan perintah LD_LIBRARY_PATH=/usr/lib ossfs ….
Kesalahan terjadi saat Anda menginstal pustaka dependensi fuse
Penyebab: Versi FUSE tidak memenuhi persyaratan ossfs.
Solusi: Unduh dan instal versi terbaru FUSE secara manual. Jangan gunakan `yum` untuk instalasi. Untuk informasi lebih lanjut, lihat fuse.
Terjadi "Input/Output error" saat menggunakan ls untuk menampilkan daftar file
Penyebab: Masalah ini terutama terjadi di lingkungan CentOS. Log melaporkan NSS error -8023. Terjadi masalah saat ossfs menggunakan `libcurl` untuk komunikasi HTTPS. Hal ini mungkin karena versi library Network Security Services (NSS) yang digunakan oleh `libcurl` terlalu rendah.
Solusi: Jalankan perintah berikut untuk meningkatkan library NSS ke versi terbaru.
yum update nssTerjadi error "conflicts with file from package fuse-devel" saat menggunakan yum/apt-get untuk menginstal ossfs
Penyebab: Versi lama FUSE ada di sistem, yang bertentangan dengan versi dependensi di ossfs.
Solusi: Pertama, gunakan manajer paket terkait untuk meng-uninstal FUSE, lalu instal ulang ossfs.
Masalah lainnya
Apa saran untuk masalah tersendat (stuttering) setelah pemasangan dengan ossfs saat terdapat banyak file OSS atau dalam skenario konkurensi tinggi?
ossfs 1.0 tidak direkomendasikan untuk skenario konkurensi tinggi. Jika Anda harus menggunakannya dalam skenario tersebut, pertimbangkan solusi berikut:
Solusi 1: Pasang dengan ossfs 2.0. Dibandingkan dengan ossfs 1.0, ossfs 2.0 memberikan peningkatan performa signifikan untuk pembacaan dan penulisan berurutan, serta untuk membaca file kecil dengan konkurensi tinggi. Untuk informasi lebih lanjut tentang performa ossfs 2.0, lihat bagian Peningkatan performa.
Solusi 2: Pasang OSS menggunakan Cloud Storage Gateway untuk performa yang lebih baik. Tool ossfs 1.0 tidak direkomendasikan untuk unggah dan unduh file besar dengan konkurensi tinggi. Tool ini lebih cocok untuk operasi harian pada file kecil.
Content-Type file yang diunggah ke OSS menggunakan ossfs selalu application/octet-stream
Penyebab: Saat mengunggah file, ossfs menetapkan `Content-Type` file dengan menanyakan isi /etc/mime.types. Jika file ini tidak ada, `Content-Type` diatur ke `application/octet-stream` secara default.
Solusi: Periksa apakah file tersebut ada. Jika tidak ada, Anda harus menambahkannya.
Tambahkan file mime.types secara otomatis menggunakan perintah:
Sistem Ubuntu
Jalankan perintah sudo apt-get install mime-support untuk menambahkan file tersebut.
Sistem CentOS
Jalankan perintah sudo yum install mailcap untuk menambahkan file tersebut.
Tambahkan file mime.types secara manual:
Buat file mime.types.
vi /etc/mime.typesTambahkan format yang diperlukan. Setiap format harus berada di baris baru, dalam format
application/javascript js.
Setelah Anda menambahkan file tersebut, Anda harus memasang ulang bucket OSS.
Mengapa ossfs mengidentifikasi folder sebagai file biasa?
Skenario 1:
Penyebab: Saat Anda membuat objek folder (objek yang namanya diakhiri dengan
/) dan menentukan `Content-Type` sebagai `text/plain`, ossfs mengidentifikasi objek ini sebagai file biasa.Solusi: Anda dapat menambahkan parameter `-ocomplement_stat` selama pemasangan. Jika ukuran objek folder adalah 0 atau 1, ossfs mengidentifikasinya sebagai direktori.
Skenario 2:
Penyebab: Anda dapat menjalankan perintah
ossutil stat folder_object/(misalnya,ossutil stat oss://[bucket]/folder/). Setelah menjalankan perintah tersebut:Periksa bidang `Content-Length` objek, yaitu ukuran objek. Jika ukuran objek bukan 0, objek tersebut diidentifikasi sebagai file.
Solusi: Jika Anda tidak lagi memerlukan konten objek folder tersebut, Anda dapat menjalankan perintah
ossutil rm oss://[bucket]/folder/untuk menghapus objek tersebut. Hal ini tidak memengaruhi file di bawah direktori tersebut. Atau, Anda dapat mengunggah objek berukuran nol byte dengan nama yang sama untuk menimpanya.Jika ukuran objek adalah 0, periksa bidang `Content-Type`, yaitu atribut objek. Jika `Content-Type` bukan
application/x-directory,httpd/unix-directory,binary/octet-stream, atauapplication/octet-stream, objek tersebut juga diidentifikasi sebagai file.Solusi: Anda dapat menjalankan perintah
ossutil rm oss://[bucket]/folder/untuk menghapus objek tersebut. Hal ini tidak memengaruhi file di bawah direktori tersebut.
Operasi mv gagal di ossfs
Penyebab: Operasi `mv` di ossfs mungkin gagal karena file sumber merupakan objek Archive, Cold Archive, atau Deep Cold Archive.
Solusi: Sebelum menjalankan perintah `mv` pada objek Archive, Cold Archive, atau Deep Cold Archive, Anda harus memulihkan (restore) objek tersebut. Untuk informasi lebih lanjut, lihat Memulihkan objek.
Apakah ossfs mendukung pemasangan bucket di lingkungan Windows?
Tidak, tidak didukung. Anda dapat menggunakan Rclone untuk memasang bucket di Windows. Untuk informasi lebih lanjut, lihat Rclone.
Apakah ossfs mendukung pemasangan bucket OSS ke beberapa server Linux ECS?
Ya, didukung. Anda dapat memasang bucket ke beberapa server ECS Linux. Untuk informasi lebih lanjut, lihat Memasang bucket.
Mengapa informasi file (seperti ukuran) yang terlihat di ossfs tidak konsisten dengan yang terlihat di tool lain?
Penyebab: Secara default, ossfs menyimpan cache metadata file, termasuk ukuran dan izin. Cache ini mempercepat operasi `ls` karena menghindari pengiriman permintaan ke OSS setiap kali. Jika pengguna memodifikasi file menggunakan program lain, seperti SDK, konsol OSS, atau ossutil, ossfs tidak segera memperbarui cache-nya. Hal ini menyebabkan informasi file tidak konsisten dengan informasi yang ditampilkan di tool lain.
Solusi: Anda dapat menambahkan parameter -omax_stat_cache_size=0 selama pemasangan untuk menonaktifkan fitur cache metadata. Saat cache dinonaktifkan, setiap kali Anda menjalankan `ls`, permintaan dikirim ke OSS untuk mengambil informasi file terbaru.
Mengapa pemasangan menjadi lambat setelah pengendalian versi diaktifkan untuk bucket?
Penyebab: Secara default, ossfs menampilkan daftar file dengan memanggil operasi ListObjects (GetBucket). Jika versioning diaktifkan untuk bucket dan bucket tersebut berisi satu atau beberapa versi sebelumnya dari objek serta banyak penanda hapus (delete markers) yang kedaluwarsa, kecepatan respons operasi ListObjects (GetBucket) menurun saat menampilkan versi objek saat ini. Hal ini memperlambat operasi pemasangan ossfs.
Solusi: Gunakan opsi -olistobjectsV2 untuk mengonfigurasi ossfs agar menggunakan operasi ListObjectsV2 (GetBucketV2) guna meningkatkan performa penayangan daftar file.
Bagaimana cara saya memasang bucket melalui HTTPS?
ossfs mendukung pemasangan melalui HTTPS. Perintah berikut adalah contoh untuk wilayah China (Hangzhou):
ossfs examplebucket /tmp/ossfs -o url=https://oss-cn-hangzhou.aliyuncs.comMengapa perintah ls lambat saat folder berisi jumlah file yang sangat besar?
Penyebab: Jika direktori berisi N file, perintah `ls` untuk direktori tersebut memerlukan setidaknya N permintaan HTTP ke OSS. Saat direktori berisi jumlah file yang sangat besar, hal ini dapat menyebabkan masalah performa serius.
Solusi: Tingkatkan ukuran cache stat menggunakan parameter -omax_stat_cache_size=xxx. Operasi `ls` pertama akan lebih lambat, tetapi operasi `ls` berikutnya akan lebih cepat karena metadata objek disimpan di cache lokal. Sebelum versi 1.91.1, nilai default adalah 1.000. Mulai dari versi 1.91.1, nilai default adalah 100.000, yang menggunakan puluhan megabyte memori. Anda dapat menyesuaikan nilai ini berdasarkan memori mesin Anda.
Terjadi error "fusermount: failed to unmount /mnt/ossfs-bucket: Device or resource busy" selama pencopotan pemasangan (unmounting)
Penyebab: Suatu proses sedang mengakses file di direktori yang dipasang /mnt/ossfs-bucket, yang mencegah direktori tersebut dicopot pemasangannya.
Solusi:
Jalankan
lsof /mnt/ossfs-bucketuntuk menemukan proses yang mengakses direktori tersebut.Jalankan perintah `kill` untuk memaksa proses tersebut ditutup.
Jalankan
fusermount -u /mnt/ossfs-bucketuntuk mencopot pemasangan bucket tersebut.
Banyak log 404 muncul saat menggunakan ossfs 1.0
Latar Belakang: Saat menggunakan ossfs 1.0, umum ditemukan catatan 404 Not Found di log. Dalam kebanyakan kasus, ini bukan error sistem. Ini adalah perilaku interaktif normal yang digunakan ossfs 1.0 untuk mensimulasikan semantik sistem file lokal.
Sebelum mengoperasikan file, sistem operasi memeriksa apakah objek target ada. Proses ini dapat menyebabkan banyak permintaan probe dikirim ke OSS. Jika objek tidak ada, OSS mengembalikan kode status 404.
Proses lengkap yang digunakan ossfs 1.0 untuk memeriksa keberadaan objek adalah sebagai berikut:
Mengirim permintaan `HeadObject` untuk menanyakan apakah path tertentu, seperti
object, ada sebagai objek aktual.Jika objek ada, OSS mengembalikan metadata objek tersebut. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.
Setelah menerima error 404, ossfs mengirim permintaan `HeadObject` untuk menanyakan apakah objek
object/ada.Jika objek ada, OSS mengembalikan metadata objek tersebut. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.
Setelah menerima error 404, ossfs mengirim permintaan `HeadObject` untuk menanyakan apakah objek
object_$folder$ada.Jika objek ada, OSS mengembalikan metadata objek tersebut. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.
Setelah menerima error 404, ossfs mengirim permintaan `ListObjects` untuk menentukan apakah path tertentu adalah "direktori" dengan menanyakan objek yang memiliki awalan
object/.Jika hasilnya kosong, path tersebut ditentukan tidak ada. Jika hasilnya tidak kosong, direktori tersebut ada, dan sistem menampilkan isi direktori tersebut.
Analisis:
Saat Anda menggunakan perintah seperti `stat` untuk mengakses file yang tidak ada, OSS mengembalikan error 404, yang dipetakan ke error sistem file lokal "No such file or directory".
Sebelum membuat file atau direktori secara batch, sistem operasi terlebih dahulu memeriksa apakah file target ada. Sistem hanya mengirim permintaan pembuatan jika file tersebut tidak ada. Error 404 yang dihasilkan selama pemeriksaan ini adalah perilaku yang diharapkan, bukan pengecualian sistem.
Solusi: Meskipun error 404 merupakan perilaku normal, permintaan probe yang sering dapat memengaruhi performa dalam skenario konkurensi tinggi atau operasi batch. Anda dapat mengoptimalkan konfigurasi dengan cara berikut:
Setelah mengonfigurasi opsi-opsi ini, ossfs 1.0 tidak dapat mendeteksi perubahan yang dilakukan pada file di OSS hingga cache lokal kedaluwarsa.
Tingkatkan durasi cache metadata dan jumlah entri yang di-cache dengan menambah nilai
-o stat_cache_expiredan-o max_stat_cache_size.Menanyakan file atau direktori sebelum metadata-nya kedaluwarsa menghindari permintaan OSS berulang.
-o stat_cache_expire: Waktu kedaluwarsa cache metadata dalam detik. Nilai default adalah 900.-o max_stat_cache_size: Jumlah entri dalam cache metadata. Nilai default adalah 100.000.
Jika Anda menggunakan versi ossfs sebelum 1.91.6, aktifkan cache negatif dengan mengonfigurasi
-o enable_noobj_cache. Cache negatif diaktifkan secara default di ossfs 1.91.6 dan yang lebih baru.Saat file ditanyakan untuk pertama kalinya dan tidak ada, hasilnya di-cache di memori. Permintaan berikutnya untuk file tersebut sebelum cache kedaluwarsa langsung menanyakan cache negatif lokal alih-alih mengirim permintaan ke OSS.
CatatanCache negatif file ossfs 1.0 merupakan bagian dari cache metadata. Waktu kedaluwarsa dikontrol oleh parameter
-o stat_cache_expire, dan jumlah maksimum entri yang di-cache dikontrol oleh parameter-o max_stat_cache_size.