Bagaimana cara membuat noatime mounts default?

8

Saya membuat turunan Ubuntu, dan saya ingin menjadikan noatime opsi pemasangan default untuk semua sistem file (bukan relatime yang merupakan default di Ubuntu).

Tampaknya ada default_relatimeparameter kernel boolean untuk beralih antara default ke atime atau relatime (juga tersedia dengan menulis ke / proc / sys / kernel / default_relatime), tetapi saya tidak dapat menemukan yang setara untuk noatime dan saya tidak tahu cara aktifkan itu di distro secara default.

Bagaimana cara mengonfigurasikan untuk merekam data ke flashdisk langsung? menunjukkan bahwa ada cara untuk menambahkan parameter mount noatime melalui udev, tapi saya tidak tahu apakah itu akan berfungsi untuk media internal dan bagaimana melakukannya.

Apa cara paling tidak invasif untuk menjadikan kernel default ke noatime?

Default saat ini dapat dilihat menggunakan "cat / proc / mounts" karena itu menunjukkan bahkan parameter mount implisit; jangan percaya "mount".

Ya, saya pernah membaca Apakah perlu menyetel Ext4 dengan noatime? dan saya masih ingin melakukannya.

Shnatsel
sumber
3
Relatime adalah opsi default di kernel, bukan di Ubuntu itu sendiri. Anda harus memodifikasi kernel atau menambahkan opsi /etc/fstab.
atur

Jawaban:

4

Kernel yang digunakan untuk memiliki opsi konfigurasi apakah akan menggunakan ATIME atau RELATIME; tidak tahu apakah itu juga termasuk beberapa opsi untuk NOATIME. Bagaimanapun, itu sudah pergi sekarang.

Saya mempelajari util-linux juga, untuk melihat apakah perintah mount memiliki konfigurasi default atau dapat dimodifikasi, tetapi tampaknya tidak demikian.

Namun, sepertinya Anda dapat menambal kernel untuk mengubah perilaku default. Ubah ./fs/namespace.c, sekitar baris 2334:

long do_mount(...)
...
    /* Default to relatime unless overriden */
    if (!(flags & MS_NOATIME))
            mnt_flags |= MNT_RELATIME;
...

Tukar di sekitar:

long do_mount(...)
...
    /* Default to noatime unless overriden */
    if (!(flags & MS_RELATIME))
            mnt_flags |= MNT_NOATIME;
...

Dan itu harus dilakukan.

Bryce
sumber
1
Solusi kedua @ Bryce - ini tampaknya menjadi satu-satunya cara untuk melakukannya. Tentu saja, itu berarti meluncurkan pembaruan kernel Anda sendiri dengan patch ini - seberapa invasifnya terserah Anda :)
ish
IMHO yang benar-benar invasif karena itu membutuhkan pemeliharaan kernel kustom dan akan menghasilkan banyak sakit kepala dengan boot aman. Tetap, +1 karena ini bisa diterapkan.
Shnatsel
askubuntu.com/questions/61448/... menyarankan bahwa aturan udev dapat menambahkan parameter mount, mungkin itu akan berfungsi? Saya akan memperbarui tubuh dengan tautan ini sekarang ...
Shnatsel
Ini adalah baris 2315+ di Linux 3.2, lihat lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME; pada baris 2326 agak mengganggu saya, saya kira saya harus membalikkannya juga. Terima kasih atas bantuan Anda!
Shnatsel