Saya mungkin tidak mengutarakan pertanyaan saya dengan benar, tetapi saya akan melakukan yang terbaik untuk menjelaskan gejala yang saya alami. Pertama, untuk konteks, saya menjalankan server Ubuntu (tanpa GUI), versi 12.04.3 LTS (sesuai dengan utilitas lsb_release). Saya biasanya melakukan semua pekerjaan saya di tmux, saya terhubung ke server melalui Putty, dan saya menggunakan vim untuk semua pengeditan teks saya.
Sekarang untuk gejalanya. Karena saya menggunakan tmux, saya biasanya memiliki beberapa jendela terbuka setiap saat. Salah satunya merumahkan server simpul yang telah saya mainkan, dan tinggal di subdirektori dari rumah akun pengguna saya (khususnya, ~/battleship
). Server berinteraksi dengan halaman web yang saya hosting dari server menggunakan nginx, dan semua kode situs tinggal /usr/share/nginx/www/bs
(saya juga membuka jendela terpisah untuk mengedit sumber klien). Apa yang terjadi adalah bahwa setelah beberapa jam membiarkan jendela server diam dan tidak tersentuh, sepertinya tidak sinkron. Saya dapat menjalankan ls
dan melihat file, dan saya dapat membukanya untuk diedit ( vim server.js
). Ketika saya melakukan itu, bagaimanapun, terlepas dari apakah saya membuat perubahan dan menyimpan atau hanya berhenti secara instan, ketika saya menjalankanls
lagi saya melihat file .server.js.swp, dan tidak ada perubahan saya (jika saya membuat) tetap ada. Jika saya keluar dari direktori itu dan kemudian kembali, itu memperbaiki sendiri - saya dapat membuka file dan mengeditnya dengan sukses, tanpa meninggalkan .swp ketika saya menutupnya. Saya menyebutkan sumber setengah dari sumber klien karena saya perhatikan bahwa ini tidak terjadi di folder / www (mungkin karena itu di luar direktori home akun pengguna saya).
Setelah tembok teks itu, pertanyaan saya adalah ini: Adakah yang tahu mengapa ini terjadi, dan bagaimana cara mencegahnya? Saya hanya bisa membayangkan ada beberapa cara, mengingat ini bukan satu-satunya server Linux yang saya hubungkan melalui Putty dan menggunakan tmux / vim, namun itu satu-satunya di mana perilaku aneh ini terjadi. Bantuan apa pun akan dihargai.
Catatan: Saya menandai ini dengan bash, tmux, dan dempul karena saya berasumsi salah satu dari mereka yang harus disalahkan tetapi saya benar-benar tidak tahu.
Pembaruan: Ini adalah output cat /proc/mount
seperti yang diminta oleh Gilles (walaupun dengan nama pengguna saya dan nilai-nilai ecryptfs_fnek_sig
dan ecryptfs_sig
disensor, karena sementara saya tidak benar-benar tahu apa dua hal itu, mereka tampaknya terkait enkripsi, dan lebih baik aman daripada menyesal).
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0
Pembaruan 2: Inilah output dari uname -a
:
Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Pembaruan 3: Saya menyelesaikan lulus tes. Ini adalah hasil dari tes tersebut . Tampaknya telah selesai tanpa kesalahan, jadi saya tidak yakin apakah itu akan membantu sesuatu. Anda juga dapat melihat beberapa perincian peranti keras untuk berjaga-jaga.
cat /proc/mounts
)? Ini mungkin server yang tervirtualisasi, virtualisasi macam apa yang digunakannya?cat /proc/mounts
untuk Anda. Mudah-mudahan itu akan berarti bagi Anda - saya masih cukup baru untuk Linux, jadi ada banyak belajar dengan melakukan, dan saya belum melihat-lihat dengan sistem file sama sekali (di luar menggunakannya).uname -a
? Jika itu adalah perangkat keras Anda, colokkan konsol dan lakukan tes memori pada boot berikutnya. Jika dihosting, hubungi penyedia hosting Anda dan jelaskan gejala ini.sudo sync
apakah file diperbarui?df -h /www ~/battleship /usr/share/nginx/www/bs
. Apakah masalah dengan mounts enkripsi? Mungkin pemrosesan sw tambahan diperlukan untuk menulis ke disk itu sehingga ada caching atau ada sesuatu yang terjadi dengan itu?Jawaban:
Satu-satunya pengalaman yang pernah saya lihat dengan sesuatu seperti ini adalah ketika direktori sedang dihapus dan yang baru dibuat. AIX dan Solaris memiliki masalah ini bertahun-tahun yang lalu. Jika Anda memiliki sesi shell terbuka di direktori yang dihapus Anda bisa mendapatkan kembali hasil yang tidak terduga yang terlihat seperti sistem file yang keluar dari sinkronisasi.
Sistem file terenkripsi juga terdengar seperti sesuatu untuk ditinjau. Sudahkah Anda mencoba dalam sistem file yang tidak dienkripsi?
Maaf saya belum bisa mengirim komentar. Tidak cukup poin.
sumber
cd .
ketika saya kembali ke sesi setelah beberapa saat. Pada titik ini saya jujur hanya mempertimbangkan untuk mencadangkan semuanya, menghapus server, dan menginstal ulang tanpa sistem file terenkripsi. Saya tidak menyimpan apa pun yang penting, jadi saya tidak terlalu khawatir mengenkripsi file saya.Anda bisa mencoba menjalankan perintah sinkronisasi di antara perintah bash Anda.
Saya tidak pernah menemukan kebutuhan untuk itu sendiri tetapi telah mengetahui setidaknya satu orang yang mengetiknya praktis seperti setiap perintah kedua! Pasti pernah terbakar parah di masa lalu dengan disk yang lambat.
Internet tampaknya ringan pada diskusi tentang penggunaan
sync
perintah. Berikut ini tautan ke entri manual yang sangat singkat untuksync
: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.htmlsync
menjamin bahwa data ditulis dari memori ke perangkat disk. Data masih bisa di memori cache perangkat disk dan tidak ditulis ke disk jika perangkat disk itu sendiri lambat atau memiliki masalah.Anda menjalankan server ubuntu. . . apakah itu mesin di desktop Anda? Atau apakah itu di awan? Atau . . . sesuatu yang lain? Lihat di sini: /server/534627/what-does-the-sync-command-do sinkronisasi lambat dari memori ke disk yang terkait dengan masalah hard disk ATAU mungkin dengan instance Amazon AWS yang lebih kecil.
sumber
sync
akan ada gunanya; Saya telah menemukan bahwa hanya dengan melakukancd .
mengurangi masalah itu. Saya membuat aliasref
untuk itu (saya tahu, menyelamatkan satu karakter agak konyol) yang biasa saya gunakan setiap kali saya kembali ke sesi lama sekarang. Adapun apa servernya, itu adalah menara desktop lama saya (saya membuat yang baru tahun lalu) yang sekarang tinggal di sudut ruang tamu saya yang menjalankan distro Ubuntu, jadi saya memiliki akses penuh ke perangkat keras dan kekuasaan atas apa yang sedang berjalan di atasnya.FWIW masalah ditampilkan oleh perintah ls, bukan oleh bash.
Fakta bahwa Anda melihat file itu berarti masih ada di sana. Tidak ada yang tidak sinkron dengan hal lain dan tidak ada jumlah sinkronisasi yang berjalan akan menghentikan Anda dari menggunakan satu-satunya salinan cache dari data sistem file yang relevan. sinkronisasi hanya akan menyebabkan data komit ke penyimpanan permanen, tidak mengubah pandangan Anda tentang itu.
Apakah Anda menggunakan sesi VIM? Saya tidak tahu sesi VIM, tidak pernah menggunakannya sendiri, tapi saya membayangkan tmux mungkin menyebabkan manajer sesi VI tidak menyadari file ditutup dan untuk menjaga perubahan Anda dilacak.
sumber