Perbedaan antara opsi pemasangan 'sinkronisasi' dan 'async'

42

Apa perbedaan antara syncdan asyncpasang opsi dari sudut pandang pengguna akhir? Apakah sistem file yang dipasang dengan salah satu opsi ini bekerja lebih cepat daripada jika dipasang dengan yang lain? Opsi mana yang merupakan opsi default, jika tidak ada yang ditetapkan?

man mountmengatakan bahwa syncopsi dapat mengurangi masa pakai memori flash, tetapi mungkin dengan kebijaksanaan konvensional yang usang. Bagaimanapun ini sedikit mengkhawatirkan saya, karena hard drive utama saya, tempat partisi /dan /homeditempatkan, adalah drive SSD.

Installer Ubuntu (14.04) belum ditentukan syncatau asyncpilihan untuk /partisi, tetapi telah menetapkan asyncuntuk /homeoleh pilihan defaults. Inilah saya /etc/fstab, saya menambahkan beberapa baris tambahan (lihat komentar), tetapi tidak mengubah apa pun di baris yang dibuat oleh installer:

# / was on /dev/sda2 during installation
UUID=7e4f7654-3143-4fe7-8ced-445b0dc5b742 /     ext4  errors=remount-ro 0  1
# /home was on /dev/sda3 during installation
UUID=d29541fc-adfa-4637-936e-b5b9dbb0ba67 /home ext4  defaults          0  2
# swap was on /dev/sda4 during installation
UUID=f9b53b49-94bc-4d8c-918d-809c9cefe79f none  swap  sw                0  0

# here goes part written by me:

# /mnt/storage
UUID=4e04381d-8d01-4282-a56f-358ea299326e /mnt/storage ext4 defaults  0  2
# Windows C: /dev/sda1
UUID=2EF64975F6493DF9   /mnt/win_c    ntfs    auto,umask=0222,ro      0  0
# Windows D: /dev/sdb1
UUID=50C40C08C40BEED2   /mnt/win_d    ntfs    auto,umask=0222,ro      0  0

Jadi jika /dev/sdaSSD saya , haruskah saya - demi mengurangi keausan - menambahkan asyncopsi /dan /homesistem file? Haruskah saya mengatur syncatau asyncopsi untuk partisi tambahan yang saya tentukan di saya /etc/fstab? Apa pendekatan yang disarankan untuk drive SSD dan HDD?


sumber
1
Jangan posting silang askubuntu.com/questions/502691/…
cuonglm
@Gnouc Apa yang salah dengan crossposting? Lagi pula, saya menghapus posting dari Ask Ubuntu, seperti yang Anda minta.

Jawaban:

50

asyncadalah kebalikan dari sync, yang jarang digunakan. asyncadalah default, Anda tidak perlu menentukan itu secara eksplisit.

Opsi ini syncberarti bahwa semua perubahan pada sistem file yang sesuai segera dibilas ke disk; masing-masing operasi penulisan sedang menunggu. Untuk penggerak mekanis, ini berarti sangat lambat karena sistem harus memindahkan kepala disk ke posisi yang tepat; dengan syncproses userland harus menunggu operasi selesai. Sebaliknya, dengan asyncsistem mendukung operasi tulis dan mengoptimalkan penulisan aktual; Sementara itu, alih-alih diblokir, proses di userland terus berjalan. (Jika terjadi kesalahan, maka close()kembali -1dengan errno = EIO.)

SSD: Saya tidak tahu seberapa cepat memori SSD dibandingkan dengan memori RAM, tetapi tentu saja itu tidak lebih cepat, sehingga synccenderung memberikan penalti kinerja, meskipun tidak seburuk dengan drive disk mekanis. Pada masa hidup, kebijaksanaan masih berlaku, karena menulis ke SSD banyak "memakainya". Skenario terburuk adalah proses yang membuat banyak perubahan di tempat yang sama; dengan syncmasing - masing menekan SSD, sementara dengan async(default) SSD tidak akan melihat sebagian besar dari mereka karena buffering kernel.

Pada akhirnya, jangan repot-repot sync, kemungkinan besar Anda baik-baik saja async.

countermode
sumber
dalam hal aplikasi lokal menghapus dan menulis ke drive yang dipasang (menunjuk ke kotak Windows eksternal); adakah potensi bahwa mode async default tidak aman? Skenarionya adalah aplikasi polling, mencari di satu folder di mount, mengosongkan sub folder lalu menghapusnya.
HellishHeat
@HellishHeat Anda harus menanyakan ini sebagai pertanyaan terpisah dengan rincian yang cukup dari skenario yang ada dalam pikiran Anda.
countermode
Berapa kecepatan lapisan penyimpanan yang berbeda: ram adalah nanodetik, flash adalah mikrodetik (10 untuk tulis, sekitar 100 untuk dibaca), disk rotasi adalah milidetik (kasus terbaik 5 ms, 10 hingga 100 ms jika antrian disk dicadangkan dan aksesnya diakses acak). Menulis ke satu lokasi pada perangkat flash dapat menulis ke kapasitor yang didukung SRAM dan tidak dapat ditulis sepenuhnya ke NAND. Karena itu sulit untuk menentukan dampak keausan atau kecepatan.
Brian Bulkowski
Apakah salah satu berarti ini tidak perlu panggilan syncatau fsyncatau fdatasyncsyscalls di sync yang dipasang fs?
CMCDragonkai
1
@ini Anda mungkin berisiko kehilangan data async. Namun, jika ini adalah masalah, maka syncitu bukan jawabannya - hukuman kinerja synchanya penghalang.
countermode
5

Kata-kata hati-hati: menggunakan opsi mount 'async' mungkin bukan ide terbaik jika Anda memiliki mount yang secara konstan ditulis (mis. Catatan berharga, rekaman kamera keamanan, dll.) Dan Anda tidak terlindungi dari pemadaman listrik yang tiba-tiba . Ini bisa mengakibatkan catatan yang hilang atau data yang tidak lengkap (tidak berguna). Contoh yang tidak terlalu pintar: bayangkan seorang pencuri masuk ke toko dan segera memotong kabel daya kamera. Rekaman video dari pembobolan itu direkam tetapi mungkin tidak disiram / disinkronkan ke disk karena (atau bagian dari itu) mungkin telah disangga dalam memori sebagai gantinya, sehingga hilang ketika kamera kehilangan daya.

Bank Andreas Mikael
sumber
Server modern memiliki cache disk yang didukung baterai di pengontrol RAID, yang akan mencegah dari kehilangan data bahkan jika terjadi kehilangan daya.
tonioc
async tidak menulis selama beberapa detik? Berapa detik kira-kira?
Ini
@Ini tampaknya tergantung pada filesystem yang digunakan, saya percaya.
bd1251252
OS tetap harus memastikan bahwa ketika Anda mematikan, bahwa semuanya akan ditulis ke SSD / hdd. Dalam hal pemadaman listrik maka Anda mungkin kehilangan beberapa data. Apakah yang saya katakan benar?
Ini
Cache berbasis baterai di beberapa disk benar-benar bukan alasan untuk tidak mengoptimalkan kehilangan daya 1) itu hanya di server profesional yang mahal. Tidak semua pengguna memiliki ini 2) itu hanya akan menyelamatkan Anda dalam situasi di mana data bahkan telah mencapai pengontrol disk sama sekali. Dalam banyak kasus itu akan terjebak dalam cache OS, jauh sebelum controller akan pernah melihat data itu - dan itu akan hilang jika terjadi kegagalan daya.
Cray