Setiap kali saya memutakhirkan Linux di komputer rumah saya, saya memiliki daftar tugas yang biasanya saya lakukan. Mereka telah menjadi kebiasaan selama bertahun-tahun:Saya mencadangkan file saya, menghapus sistem, menginstal ulang dari awal, memulihkan file saya, lalu menginstal ulang aplikasi tambahan favorit saya. Saya juga membuat beberapa tweak sistem. Saya telah membuat beberapa penyesuaian ini begitu lama sehingga saya baru-baru ini bertanya-tanya apakah saya masih perlu melakukannya.
Satu tweak adalah atime
, yang merupakan salah satu dari tiga stempel waktu pada setiap file di Linux (lebih lanjut tentang itu nanti). Secara khusus, saya bertanya-tanya apakah masih layak untuk menonaktifkan atime
dalam sistem Linux yang lebih baru. Sejak atime
diperbarui setiap kali file diakses, pemahaman saya adalah bahwa itu berdampak signifikan pada kinerja sistem.
Saya baru-baru ini memutakhirkan komputer saya ke Fedora 32 dan mematikan atime
pada sistem saya yang ditingkatkan karena kebiasaan. Tapi apakah saya masih perlu? Saya memutuskan untuk melihat lebih jauh. Inilah yang saya temukan.
Sedikit tentang stempel waktu file
Untuk memahami noatime
, Anda perlu mengambil langkah mundur dan memahami beberapa hal tentang sistem file Linux dan bagaimana kernel menerapkan stempel waktu ke file dan direktori. Anda mungkin sudah mengetahui tanggal Terakhir Dimodifikasi pada file dan direktori; Anda dapat melihatnya dalam ls -l
daftar direktori (panjang) atau jika Anda melihat detail file di manajer file. Namun di balik layar, kernel Linux melacak beberapa stempel waktu pada file dan direktori:
- Kapan file terakhir diubah (
mtime
) - Kapan terakhir kali file diubah (
ctime
) - Kapan terakhir kali file diakses (
atime
)
Anda dapat menggunakan stat
perintah untuk melihat detail ini untuk file atau direktori. Berikut adalah contoh dari /etc/fstab
file di salah satu server pengujian saya:
$ stat fstab
File: fstab
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2097285 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
Birth: 2019-04-25 21:03:11.840496275 -0500
Dari output, Anda dapat melihat file ini dibuat pada 25 April 2019, ketika saya menginstal sistem. /etc/fstab
saya file terakhir diubah pada 16 Mei 2019, dan atribut lainnya diubah pada waktu yang hampir bersamaan.
Jika saya menyalin /etc/fstab
ke file baru, tanggal berubah, menunjukkan bahwa ini adalah file baru:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
File: fstab.bak
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Tetapi jika saya hanya mengganti nama file tanpa mengubah isinya, Linux hanya memperbarui waktu Ubah file:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
File: fstab.tmp
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Stempel waktu ini sangat berguna untuk program Unix tertentu. Misalnya, biff adalah program yang memberi tahu Anda ketika Anda memiliki pesan email baru. Anda tidak melihat banyak orang menggunakan biff akhir-akhir ini, tetapi pada hari-hari ketika kotak surat bersifat lokal untuk sistem Anda, biff cukup umum.
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Bagaimana sebuah program mengetahui jika Anda memiliki email baru di kotak masuk Anda? Biff membandingkan waktu Terakhir Dimodifikasi (saat file kotak masuk diperbarui dengan pesan email baru) dan waktu Terakhir Diakses (terakhir kali Anda membaca email). Jika Dimodifikasi lebih baru daripada Diakses, maka biff mengetahui bahwa pesan email telah tiba sejak terakhir kali Anda membaca email dan memberi tahu Anda. Klien email Mutt melakukan hal serupa untuk memperingatkan Anda saat pesan baru tiba.
Waktu Terakhir Diakses juga berguna jika Anda perlu melakukan statistik sistem file dan penyesuaian kinerja. Pada sistem Linux yang besar, administrator mungkin perlu mengetahui apa yang sedang diakses sehingga mereka dapat menyesuaikan sistem file dengan tepat.
Tetapi sebagian besar program modern tidak lagi memerlukan waktu Terakhir Diakses, jadi ada beberapa argumen untuk tidak menggunakannya. Pada tahun 2007, Linus Torvalds dan beberapa pengembang kernel lainnya membahas atime
dan masalah kinerjanya. Pengembang kernel Linux Ingo Molnár membuat pengamatan ini tentang atime
dan sistem file ext3:
Agak aneh bahwa setiap desktop dan server Linux terganggu oleh penurunan kinerja IO yang nyata karena pembaruan atime yang konstan, sementara hanya ada dua pengguna sebenarnya:tmpwatch [yang dapat dikonfigurasi untuk menggunakan ctime jadi itu bukan masalah besar] dan beberapa alat cadangan. (Oke, dan saya kira juga beri tahu email.) Dari puluhan ribuan aplikasi.
Tetapi orang masih menggunakan beberapa program yang membutuhkannya, dan menghapus atime
akan merusak program pengguna tersebut. Dan aturan dalam pengembangan kernel Linux adalah tidak merusak ruang pengguna.
Kompromi relatime
Distribusi Linux mencakup banyak aplikasi perangkat lunak, dan pengguna dapat mengunduh dan menginstal program lain yang sesuai dengan kebutuhan khusus mereka. Itulah manfaat utama dari sistem operasi open source! Tapi itu membuat segalanya lebih sulit dalam menyetel kinerja sistem file Anda. Apakah Anda memerlukan atime
, atau apakah menghapusnya akan merusak sesuatu di sistem Anda?
Sebagai kompromi, pengembang kernel Linux menerapkan metode baru:relatime
adalah ukuran kinerja yang sedikit berbeda yang dimaksudkan untuk menyeimbangkan kinerja dengan kompatibilitas. mount
halaman manual mengatakan ini tentang relatime
:
Waktu akses hanya diperbarui jika waktu akses sebelumnya lebih awal dari waktu modifikasi atau perubahan saat ini. … Sejak Linux 2.6.30, kernel default ke perilaku yang disediakan oleh opsi ini (kecuali noatime ditentukan) … Selain itu, sejak Linux 2.6.30, waktu akses terakhir file selalu diperbarui jika lebih dari 1 hari.
Singkatnya:sistem Linux modern (sejak Linux 2.6.30, dirilis pada 2009) sudah menggunakan relatime
, yang seharusnya memberi Anda peningkatan performa yang sangat cepat. Itu berarti Anda tidak perlu mengubah /etc/fstab
file dan dapat mengandalkan relatime
kernel default.
Mengubah kinerja sistem dengan noatime
Tetapi jika Anda ingin mengubah sistem Anda untuk mendapatkan kinerja maksimal, nonaktifkan atime
masih merupakan opsi yang valid di tahun 2020.
Perubahan kinerja ini mungkin tidak terlalu terlihat pada drive modern yang sangat cepat (seperti NVME atau SSD cepat), tetapi masih ada sedikit peningkatan di sana.
Jika Anda tahu Anda tidak menggunakan perangkat lunak yang memerlukan atime
, maka Anda bisa mendapatkan sedikit peningkatan kinerja dengan menyetel noatime
di /etc/fstab
mengajukan. Ini memberi tahu kernel untuk tidak melacak waktu Terakhir Diakses, menghindari kinerja kecil itu untuk terus memperbarui atime
dalam sistem file. Tambahkan noatime
sebagai opsi untuk sistem file Linux Anda, biasanya setelah entri default:
/dev/mapper/fedora_localhost--live-root / ext4 defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot ext4 defaults,noatime 1 2
UUID=C594-12B1 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home ext4 defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none swap defaults,x-systemd.device-timeout=0 0 0
Ini akan berlaku saat berikutnya Anda melakukan boot ulang.