全部产品
Search
文档中心

Object Storage Service:ossfs faq

更新时间:Dec 30, 2025

Topik ini menjelaskan masalah umum dan solusinya saat menggunakan ossfs. Jika mengalami masalah, periksa terlebih dahulu versi ossfs yang digunakan. Jika masih menggunakan versi lama seperti 1.80.x, upgrade ke versi terbaru. Versi terbaru mencakup fitur baru dan peningkatan stabilitas.

Deskripsi umum

Setiap error ossfs disertai pesan yang dapat digunakan untuk troubleshooting. Misalnya, jika terjadi kegagalan koneksi socket atau menerima kode status HTTP 4xx atau 5xx, aktifkan log debug sebelum memulai troubleshooting.

  • Error 403 menunjukkan bahwa akses ditolak karena izin tidak mencukupi.

  • Error 400 menunjukkan kesalahan operasi pengguna.

  • Error 5xx biasanya menunjukkan jitter jaringan atau masalah di 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 sistem file lokal tidak bersifat atomic terhadap operasi OSS remote. Tindakan lokal mungkin tampak berhasil meskipun operasi OSS yang sesuai gagal.

Jika ossfs tidak memenuhi kebutuhan bisnis Anda, pertimbangkan untuk menggunakan ossutil.

Error izin

Terjadi error 403 saat Anda menyentuh file setelah mount berhasil

Penyebab: Error 403 biasanya disebabkan oleh izin akses yang tidak mencukupi. Error ini dapat terjadi ketika menjalankan perintah touch pada file dalam situasi berikut:

  • File tersebut merupakan objek Archive Storage. Menjalankan perintah touch pada jenis file ini menghasilkan error 403.

  • AccessKey yang digunakan tidak memiliki izin yang diperlukan untuk mengakses bucket.

Solusi:

  • Untuk objek Archive Storage, Anda harus memulihkan objek tersebut sebelum dapat mengaksesnya. Atau, aktifkan akses real-time untuk objek Archive di bucket tempat objek tersebut disimpan.

  • Untuk error izin, berikan izin yang diperlukan kepada akun yang terkait dengan AccessKey tersebut.

Mengapa saya mendapatkan error "Operation not permitted" dengan perintah rm?

Penyebab: Saat 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 selengkapnya, lihat kebijakan RAM dan Contoh umum kebijakan RAM.

Mengapa saya mendapatkan error "The bucket you are attempting to access must be addressed using the specified endpoint"?

Penyebab: Pesan ini menunjukkan bahwa Endpoint ditentukan secara salah. Error ini dapat terjadi karena dua alasan berikut:

  • Bucket dan Endpoint tidak cocok.

  • UID pemilik bucket berbeda dari UID akun yang terkait dengan AccessKey.

Solusi: Pastikan konfigurasi Anda benar dan lakukan perubahan jika diperlukan.

Error pemasangan

Apakah ossfs mendukung nama domain kustom untuk memasang bucket?

Tidak, tidak didukung. ossfs tidak mendukung pemasangan bucket menggunakan nama domain kustom.

Mengapa pemasangan gagal pada CentOS 7.x melalui HTTPS dengan ossfs 1.91.5 atau yang lebih baru?

Solusi:

  1. Tambahkan opsi -ocurldbg saat memasang bucket. Periksa log untuk NSS error -8023 (SEC_ERROR_PKCS11_DEVICE_ERROR).

  2. Jika error tersebut muncul, periksa versi NSS lokal Anda.

    Jika versi NSS adalah 3.36, jalankan perintah yum update nss untuk memperbarui NSS. Kemudian, coba pasang bucket lagi.

Mengapa pemasangan gagal dengan ECS RAM role untuk ossfs 1.91.7 dan yang lebih baru?

Solusi:

  1. Jalankan perintah curl http://100.100.100.200/latest/meta-data/ram/security-credentials/[your-ecs-ram-role] untuk memeriksa konektivitas.

  2. Jika perintah curl berhasil dijalankan, tambahkan opsi -o disable_imdsv2 saat memasang bucket.

Error mount: "ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected"

Penyebab: Error ini terjadi karena direktori titik mount tidak ada.

Solusi: Buat direktori titik mount sebelum memasang bucket.

Error pemasangan: "fusermount: failed to open current directory: Permission denied"

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 mount.

Solusi: Jalankan perintah cd untuk berpindah ke direktori yang Anda miliki izin bacanya, lalu jalankan perintah ossfs.

Error mount: "ossfs: Mountpoint directory /tmp/ossfs is not empty. if you are sure this is safe, can use the 'nonempty' mount option"

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 bucket lagi. Jika Anda harus memasang bucket ke direktori yang tidak kosong, tambahkan parameter -ononempty ke perintah mount.

Error mount: "ops-nginx-12-32 s3fs[163588]: [tid-75593]curl.cpp:CurlProgress(532): timeout now: 1656407871, curl_times[curl]: 1656407810, readwrite_timeout: 60"

Penyebab: Operasi mount 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.

Error pemasangan: "ossfs: credentials file /etc/passwd-ossfs should not have others permissions"

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.

Error "Operation not permitted" saat menjalankan ls pada direktori setelah mount 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 nama diganti, perintah ls dapat menampilkan konten direktori dengan benar.

Error saat memasang: "fuse: device not found, try 'modprobe fuse'"

Penyebab: Error "fuse: device not found, try 'modprobe fuse'" dapat terjadi ketika 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, tambahkan parameter --privileged=true untuk memberikan izin yang lebih tinggi kepada container. Hal ini memungkinkan proses di dalam container melakukan operasi yang mirip dengan yang ada di host, termasuk menggunakan sistem file FUSE. Perintah berikut adalah contoh cara memulai container dengan flag --privileged:

docker run --privileged=true -d your_image

Error saat memasang: "ossfs: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory"

Penyebab: Versi paket instalasi tidak sesuai dengan versi sistem operasi.

Solusi: Untuk mengatasi masalah ini, unduh paket instalasi yang sesuai dengan sistem operasi Anda.

Isu biaya

Memasang OSS pada ECS: Cara menghindari biaya dari pemindaian file latar belakang

Penyebab: Saat program memindai direktori yang dipasang oleh ossfs, pemindaian tersebut dikonversi menjadi permintaan ke OSS. Banyak permintaan dapat menimbulkan biaya.

Solusi: Anda dapat menggunakan tool auditd untuk mengidentifikasi proses mana yang memindai direktori OSS yang dipasang. Langkah-langkahnya sebagai berikut:

  1. Instal dan mulai auditd.

    sudo apt-get install auditd
    sudo service auditd start
  2. Tetapkan direktori OSS yang dipasang sebagai direktori yang akan dipantau. Misalnya, jika direktori yang dipasang adalah /mnt/ossfs:

    auditctl -w /mnt/ossfs
  3. Periksa log audit untuk mengidentifikasi proses mana yang mengakses direktori ini.

    ausearch -i | grep /mnt/ossfs
  4. Ubah parameter program untuk melewati pemindaian.

    Misalnya, jika log audit menunjukkan bahwa updatedb memindai direktori yang dipasang, Anda dapat mengubah /etc/updatedb.conf untuk melewati direktori tersebut. Caranya:

    1. Tambahkan fuse.ossfs setelah RUNEFS =.

    2. Tambahkan direktori yang dipasang ke baris PRUNEPATHS =.

Isu disk dan memori

ossfs terputus secara intermiten

Analisis:

  1. 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.

  2. 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.

    Catatan

    Operasi listobject mengirim permintaan HTTP ke OSS untuk mengambil metadata objek. Jika terdapat banyak file, perintah ls mengonsumsi sejumlah besar 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 dalam cache lokal. Nilai default-nya adalah 1.000, yang mengonsumsi sekitar 4 MB memori. Sesuaikan nilai ini berdasarkan ukuran memori mesin Anda.

  • Selama operasi baca dan tulis, ossfs menggunakan ruang disk untuk menulis sejumlah besar data cache sementara, mirip dengan cara kerja Nginx. Hal ini dapat menyebabkan ruang disk bebas tidak mencukupi. Saat ossfs keluar, file sementara ini secara otomatis dibersihkan.

  • Gunakan ossutil sebagai ganti ossfs. Gunakan 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 akan dicadangkan. Misalnya, untuk mencadangkan ruang disk 20 GB, tambahkan opsi tersebut ke perintah mount Anda:

ossfs examplebucket /tmp/ossfs -o url=http://oss-cn-hangzhou.aliyuncs.com -oensure_diskfree=20480

Setelah memasang dengan ossfs, mengapa perintah df menampilkan ruang disk sebesar 256 TB?

Ruang disk yang ditampilkan oleh perintah df hanya untuk tujuan tampilan saja. Ini 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 selengkapnya tentang cara menanyakan penggunaan bucket, lihat Tanyakan penggunaan tingkat bucket.

Error saat menyalin data dengan perintah cp: 'input/output error'

Penyebab: Error input/output dilaporkan saat terdeteksi error pada sistem disk. Periksa apakah disk mengalami beban baca/tulis yang 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.

Sinkronisasi Rsync mengembalikan error "input/output error"

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 instans ECS lokal atau mengunggah file lokal ke instans ECS, gunakan fitur unggah atau unduh multi-bagian dari ossutil.

Mengapa saya mendapatkan error "there is no enough disk space for used as cache(or temporary)" saat mengunggah?

  • 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 file besar. Selama proses unggah, ossfs menulis file cache sementara ke folder /tmp. Sebelum menulis file cache, ossfs memeriksa apakah ruang bebas pada disk yang berisi folder /tmp kurang dari multipart_size * parallel_count. Jika ruang disk bebas lebih besar dari multipart_size * parallel_count, file cache ditulis. Jika ruang disk bebas kurang dari multipart_size * parallel_count, ossfs mengembalikan error yang menunjukkan ruang disk lokal tidak mencukupi.

    Misalnya, asumsikan ruang disk bebas adalah 300 GB dan file yang akan diunggah adalah 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 adalah 200 GB, atur multipart_size ke 20.

    • Jika ruang disk bebas adalah 300 GB dan file yang akan diunggah adalah 500 GB, atur multipart_size ke 50.

Isu dependensi

Error saat instalasi ossfs: "fuse: warning: library too old, some operations may not work"

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.

Jalankan perintah ldd $(which ossfs) | grep fuse untuk mengonfirmasi versi FUSE yang ditautkan oleh ossfs saat runtime. Jika hasilnya adalah /lib64/libfuse.so.2, jalankan perintah ls -l /lib64/libfuse* untuk melihat versi FUSE.

Solusi: Tautkan ossfs ke versi yang benar.

  1. Jalankan perintah rpm -ql ossfs | grep fuse untuk menemukan direktori libfuse.

  2. Jika hasilnya adalah /usr/lib/libfuse.so.2, jalankan ossfs dengan perintah LD_LIBRARY_PATH=/usr/lib ossfs ….

Error menginstal library 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 selengkapnya, lihat fuse.

Mengapa ls menyebabkan error "Input/Output error"?

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 libcurl terlalu rendah.

Solusi: Jalankan perintah berikut untuk memperbarui library NSS ke versi terbaru.

yum update nss

Error saat menginstal ossfs dengan yum/apt-get: "conflicts with file from package fuse-devel"

Penyebab: Versi lama FUSE ada di sistem, yang bertentangan dengan versi dependensi di ossfs.

Solusi: Anda dapat menggunakan manajer paket terkait untuk menguninstal FUSE, lalu menginstal ulang ossfs.

Isu lainnya

Bagaimana cara meningkatkan performa saat menangani banyak file atau 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 selengkapnya tentang performa ossfs 2.0, lihat bagian Peningkatan performa.

  • Solusi 2: Gunakan Mount 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 untuk unggahan ossfs ke OSS 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 ini 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

    1. Buat file mime.types.

      vi /etc/mime.types
    2. Tambahkan 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: Tambahkan parameter -ocomplement_stat saat memasang. Jika ukuran objek folder adalah 0 atau 1, ossfs mengidentifikasinya sebagai folder.

  • Skenario 2:

    Penyebab: Jalankan perintah ossutil stat folder_object (ends with '/') (misalnya, ossutil stat oss://[bucket]/folder/). Setelah menjalankan perintah tersebut:

    1. 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, jalankan perintah ossutil rm oss://[bucket]/folder/ untuk menghapus objek tersebut. Hal ini tidak memengaruhi file di bawah folder tersebut. Atau, unggah objek berukuran nol byte dengan nama yang sama untuk menimpanya.

    2. 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, atau application/octet-stream, objek tersebut juga diidentifikasi sebagai file.

      Solusi: Jalankan perintah ossutil rm oss://[bucket]/folder/ untuk menghapus objek tersebut. Hal ini tidak memengaruhi file di bawah folder tersebut.

Operasi mv ossfs gagal

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 objek tersebut. Untuk informasi selengkapnya, lihat Pulihkan objek.

Apakah ossfs mendukung pemasangan bucket di lingkungan Windows?

Tidak. Anda dapat menggunakan Rclone untuk memasang bucket di Windows. Untuk informasi selengkapnya, lihat Rclone.

Apakah ossfs mendukung pemasangan bucket OSS ke beberapa server ECS Linux?

Ya. Anda dapat memasang bucket ke beberapa server ECS Linux. Untuk informasi selengkapnya, lihat Pasang 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: Tambahkan parameter -omax_stat_cache_size=0 saat memasang 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 versioning diaktifkan untuk bucket?

Penyebab: Secara default, ossfs mencantumkan 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 yang kedaluwarsa, kecepatan respons operasi ListObjects (GetBucket) menurun saat mencantumkan versi objek saat ini. Hal ini memperlambat operasi mount ossfs.

Solusi: Anda dapat menggunakan opsi -olistobjectsV2 untuk mengonfigurasi ossfs agar menggunakan operasi ListObjectsV2 (GetBucketV2) guna meningkatkan performa pencantuman file.

Bagaimana cara 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.com

Mengapa perintah ls lambat di direktori dengan banyak file?

Penyebab: Jika sebuah direktori berisi N file, perintah ls untuk direktori tersebut memerlukan setidaknya N permintaan HTTP ke OSS. Ketika sebuah 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 dalam cache lokal. Sebelum versi 1.91.1, nilai default-nya adalah 1.000. Mulai dari versi 1.91.1, nilai default-nya adalah 100.000, yang menggunakan puluhan megabyte memori. Sesuaikan nilai ini berdasarkan memori mesin Anda.

Error saat unmount: "fusermount: failed to unmount /mnt/ossfs-bucket: Device or resource busy"

Penyebab: Proses sedang mengakses file di direktori yang dipasang /mnt/ossfs-bucket, yang mencegah direktori tersebut di-unmount.

Solusi:

  1. Jalankan lsof /mnt/ossfs-bucket untuk menemukan proses yang mengakses direktori tersebut.

  2. Jalankan perintah kill untuk memaksa proses tersebut ditutup.

  3. Jalankan fusermount -u /mnt/ossfs-bucket untuk unmount bucket tersebut.

Log 404 berlebihan dihasilkan oleh ossfs 1.0

Latar Belakang: Saat Anda menggunakan ossfs 1.0, umum melihat catatan 404 Not Found di log. Ini adalah perilaku yang diharapkan, bukan error. ossfs mengirim permintaan probe (seperti HeadObject) untuk memeriksa apakah file atau direktori ada sebelum melakukan operasi. Jika objek tidak ada, OSS mengembalikan 404, yang ditafsirkan dengan benar oleh ossfs.

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:

  1. Mengirim permintaan HeadObject untuk menanyakan apakah path yang ditentukan, seperti object, ada sebagai objek aktual.

    Jika objek ada, OSS mengembalikan metadata objek. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.

  2. Setelah menerima error 404, ossfs mengirim permintaan HeadObject untuk menanyakan apakah objek object/ ada.

    Jika objek ada, OSS mengembalikan metadata objek. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.

  3. Setelah menerima error 404, ossfs mengirim permintaan HeadObject untuk menanyakan apakah objek object_$folder$ ada.

    Jika objek ada, OSS mengembalikan metadata objek. Jika objek tidak ada, OSS mengembalikan error 404 dan ossfs melanjutkan ke langkah berikutnya.

  4. Setelah menerima error 404, ossfs mengirim permintaan ListObjects untuk menentukan apakah path yang ditentukan 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 mencantumkan isi direktori tersebut.

Analisis:

  • Saat Anda menggunakan perintah seperti stat untuk mengakses file yang tidak ada, OSS mengembalikan error 404, yang dipetakan ke error "No such file or directory" pada sistem file lokal.

  • Sebelum membuat file atau direktori secara batch, sistem operasi terlebih dahulu memeriksa apakah file target ada. Sistem hanya mengirim permintaan create jika file tersebut tidak ada. Error 404 yang dihasilkan selama pemeriksaan ini adalah perilaku yang diharapkan, bukan pengecualian sistem.

Solusi: Meskipun error 404 adalah perilaku normal, permintaan probe yang sering dapat memengaruhi performa dalam skenario konkurensi tinggi atau operasi batch. Optimalkan konfigurasi dengan cara berikut:

Penting

Setelah Anda mengonfigurasi opsi ini, ossfs 1.0 tidak dapat mendeteksi perubahan yang dilakukan pada file di OSS hingga cache lokal kedaluwarsa.

  1. Tingkatkan durasi cache metadata dan jumlah entri yang di-cache dengan menambah nilai -o stat_cache_expire dan -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-nya adalah 900.

    • -o max_stat_cache_size: Jumlah entri dalam cache metadata. Nilai default-nya adalah 100.000.

  2. 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 OSS.

    Catatan

    Cache negatif file ossfs 1.0 adalah 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.