OmniOS / ZFS / Windows 7: “Save as” dari dalam aplikasi tertinggal 5 detik untuk semua ukuran file di atas CIFS / SMB

9

Situasi:

Masalah aneh berikut telah terjadi pada server file tunggal yang menjalankan OmniOS r151018 (95eaa7e) yang melayani file melalui SMB ke Windows dan tamu OS X.

Menyimpan file tertentu (.docx, .xlsx, beberapa gambar) melalui jendela dialog "Simpan sebagai ..." pada pembagian SMB menghasilkan jeda sekitar 3 hingga 5 detik, di mana aplikasi tidak merespons sama sekali, setelah itu aplikasi file disimpan secara normal.

Masalahnya memang terjadi "semalam", tanpa melakukan apa pun ke server, tetapi sulit untuk menentukan tanggal yang tepat, karena keluhan pengguna hanya muncul beberapa saat setelah kejadian pertama. Setelah reboot server, satu vdev dari pool root mirrored tidak tersedia, tetapi pemeriksaan lebih dekat tidak menemukan kesalahan pada perangkat dan disambungkan kembali ke pool. Masalahnya masih berlanjut.

Beberapa pengamatan:

  • Ini terjadi pada semua klien Windows 7
  • Itu terjadi untuk semua ukuran file
  • Itu terjadi pada semua bagian mesin ini, terlepas dari izin
  • Ini terjadi untuk penyimpanan yang lebih cepat yang diimpor pada host melalui iSCSI dari server lain
  • Kecepatan penyalinan normal adalah 110 MB / detik di atas GBit Ethernet
  • Data dan root pool tampaknya baik-baik saja
  • Itu tidak terjadi pada server file lain
  • Itu tidak terjadi ketika file disimpan secara lokal, kemudian disalin melalui explorer
  • Itu tidak terjadi pada OS X (hanya bisa mengujinya dengan OpenOffice)
  • dmesgmenunjukkan beberapa hal NOTICE: bge0: interrupt: flags 0x0 - not updated?dengan berbagai nilai, tetapi ini juga terjadi sebelumnya dan tidak membahayakan

Ide / rencana selanjutnya:

Karena tidak ada pesan kesalahan yang jelas ditemukan, saya mungkin perlu melakukan beberapa percobaan mencari kesalahan. Beberapa hal yang akan saya pertimbangkan ( hasilnya dicetak miring ):

  • Ganti kartu jaringan Broadcom dengan kartu Intel => tidak membuat perbedaan
  • Ganti root pool dengan SATA SSD (saat ini memori USB stick SLC yang bekerja dengan baik selama lebih dari 3 tahun) => tidak membuat perbedaan
  • Periksa jaringan di antaranya (perangkat keras, dengan koneksi langsung ke server)
  • Tangkapan lalu lintas dengan WireShark: sulit jika Anda tidak tahu persis apa yang Anda cari
  • Kembalikan ke lingkungan / versi boot OmniOS sebelumnya untuk mengesampingkan konflik perangkat lunak => tidak membuat perbedaan
  • Kembalikan pembaruan Windows / Office untuk menyingkirkan bug
  • Hapus file dengan :(titik dua) dalam nama file dari snapshot, saran oleh txgsync pada utas reddit yang dibuat oleh ewwhite => tidak membuat perbedaan

    Saya telah melihat sesuatu yang mirip dengan ini ketika fitur "versi sebelumnya" Windows diaktifkan dengan snapshot otomatis yang menyertakan karakter ":". Hanya menembaki angin dengan ini, tetapi mungkin patut dilihat karena karakter ":" tidak diperbolehkan dalam nama file Windows.

  • Pemantauan akses file: seperti yang disarankan oleh shodanshok, saya menggunakan DTracedan skrip ini untuk memonitor akses file. Saya menggunakannya saat menyimpan file terbuka yang sudah dibaca, menghapus output yang tidak terkait dan informasi pribadi, dan hasilnya berpusat di sekitar tiga file:

    CPU ID       FUNCTION:NAME
    1   18753    fop_open:entry Open: Workbook
    0   18181 fop_create:return Create: temp_1
    0   18753    fop_open:entry Open: temp_1
    0   18753    fop_open:entry Open: Workbook
    0   18753    fop_open:entry Open: Workbook
    0   18753    fop_open:entry Open: temp_1
    0   18888  fop_rename:entry Rename: Workbook -> temp_2
    0   18888  fop_rename:entry Rename: temp_1 -> Workbook
    0   18753    fop_open:entry Open: Workbook
    0   18753    fop_open:entry Open: temp_2
    0   18892  fop_remove:entry Remove: temp_2
    0   18753    fop_open:entry Open: Workbook
    0   18753    fop_open:entry Open: Workbook
    

    Prosedur yang sama di server lain di mana masalah tidak terjadi menghasilkan hasil yang serupa:

    CPU ID       FUNCTION:NAME
    1   25182 fop_create:return Create: temp_1
    1   25750    fop_open:entry Open: temp_1
    1   25750    fop_open:entry Open: Workbook
    1   25750    fop_open:entry Open: temp_1
    1   25750    fop_open:entry Open: Workbook
    1   25750    fop_open:entry Open: temp_1
    1   25889  fop_rename:entry Rename: Workbook -> temp_2
    1   25889  fop_rename:entry Rename: temp_1 -> Workbook
    1   25750    fop_open:entry Open: Workbook
    1   25750    fop_open:entry Open: temp_2
    1   25893  fop_remove:entry Remove: temp_2
    1   25750    fop_open:entry Open: Workbook
    1   25750    fop_open:entry Open: Workbook
    1   25750    fop_open:entry Open: Workbook
    

    Saya juga menambahkan cap waktu ( walltimestamp) ke skrip, tetapi dalam kedua kasus semua operasi file berlangsung pada saat yang sama. => tidak membuat perbedaan

  • Impor disk pada host lain untuk memeriksa apakah pool fragmentasi atau disk rusak => tidak membuat perbedaan
  • Pindahkan data dan kumpulan akar ke mesin yang identik untuk mengesampingkan pemasangan kabel, mainboard, dll. => Masalah tetap ada, jadi harus berupa kumpulan akar (perangkat lunak) atau perangkat keras tertentu yang tidak kompatibel dengan perangkat lunak (atau tiba-tiba menjadi tidak kompatibel. ..)

Bisakah Anda menyarankan hal lain yang menjadi penyebab perilaku ini? Atau apakah Anda mengalami hal serupa? karena saya tidak dapat menemukan sesuatu yang membantu online, saya curiga itu adalah masalah perangkat keras yang aneh (karena terbatas pada satu mesin) atau masalah dengan Windows / Office.

pengguna121391
sumber
@ewwhite Terima kasih telah membuat utas! Saran itu sangat menarik, karena memang beberapa snapshot yang dibagikan memiliki file perl yang disalin dari mesin unix, tetapi menghapusnya dan snapshot tidak mengubah perilaku.
user121391
Saat menyimpan file di share, Office memiliki perilaku aneh: pertama-tama membuat file kosong, lalu menghapusnya, akhirnya membuat kembali dan menyimpan file dengan data Anda. Jika salah satu dari langkah-langkah ini memakan waktu lebih lama dari yang diharapkan, jendela "Simpan sebagai" efektif dibekukan. Apakah sistem Anda memiliki beberapa fasilitas untuk melacak akses tingkat file? Bisakah Anda men-debug sesi SMB? Apakah Anda menggunakan sesuatu yang mirip dengan server SMB terintegrasi Samba atau ZFS?
shodanshok
@shodanshok Terima kasih atas saran Anda, lihat pertanyaan saya yang diperbarui untuk hasil. Saya tidak tahu mengapa pesanannya sedikit mati, tetapi stempel waktu tampak serupa pada kedua mesin. Mengenai pertanyaan Anda, itu adalah server CIFS Solaris / illumos terintegrasi, yang saat ini menggunakan SMB 2.1 IIRC.
user121391
Mungkin program anti-virus pada klien Windows 7 menyebabkan kios?
Janne Pikkarainen

Jawaban:

4

Larutan:

Masalahnya hanya mempengaruhi OmniOS r151018, bukan versi sebelumnya. Utas di mailing list omnios-mendiskusikan ini sebenarnya tentang masalah saya, kutipan dari Geoff:

Saya melihat utas serupa dengan forum Nexenta. Tampaknya ada masalah dengan opslock. Saya menonaktifkan opslock dan kami baik-baik saja sekarang.

svccfg -s network/smb/server setprop smbd/oplock_enable=false

Tidak yakin mengapa ini tidak menggigit lebih banyak orang.

Jadi biteCount++;saya kira. Masalahnya dipecahkan dengan menerapkan perbaikan dan melakukan reboot cepat.

Pelajaran untuk masa depan: sebelum mencoba pemecahan masalah apa pun, cukup gunakan pencarian lanjutan pada milis resmi, karena kemungkinan besar masalah Anda sudah terjadi pada mesin orang lain. Juga, putar VM cepat untuk mengesampingkan kesalahan perangkat lunak, pembaruan atau konfigurasi sebelum mencari kesalahan perangkat keras.


Bagaimana saya sampai di sana:

Setelah beberapa tes berbeda seperti yang terlihat pada pertanyaan yang diperbarui, saya mempersempitnya menjadi masalah perangkat lunak atau konflik perangkat keras / driver pada perangkat keras tertentu. Untuk mengesampingkan yang kedua, saya menginstal dua mesin virtual OmniOS baru, r151018 dan r151016 pada host lain dan dikonfigurasi dengan tangan berbagi SMB dasar pada masing-masing.

R151018 mengalami masalah, r151016 berfungsi dengan baik. Saya kira saya tidak menyadarinya dalam tes pertama saya, karena saya hanya memutar kembali beberapa pembaruan pada r151018, tidak kembali ke rilis sebelumnya. Saya pikir masalahnya pasti ada lebih lama dari yang saya duga.

Ketika mencari cara untuk hanya memperbarui paket satu per satu, saya melihat milis dan mencari smbdari 6 bulan terakhir, di mana solusi yang benar / masalah yang sama muncul, tanggal kembali dari Mei.

pengguna121391
sumber