Apakah `/ etc / fstab` digunakan untuk memount ulang drive?

9

Saya memiliki perangkat yang diinstal dengan Ubuntu 14.04.5 yang memiliki satu hard drive dengan sistem file ext4.

Dengan membaca dokumen Filesystem Ext4 saya mengetahui bahwa mode data default adalah orderedyang hanya melindungi metadata. Dalam proyek saya, kami ingin mengubahnya journaluntuk juga melindungi data file karena keamanan data bernilai lebih tinggi.

Hal pertama yang saya coba adalah memodifikasi /etc/fstabfile. Saya mencoba untuk berubah

UUID=<UUID> / ext4 errors=remount-ro 0 1

untuk

UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1

dengan menambahkan data=journalke bidang opsi.

Namun, ketika saya reboot perangkat, saya berakhir dengan pesan kesalahan cannot change data mode on remount. Saya memeriksa dmesgdan melihat pesan sebelumnya tentang pemasangan drive dengan orderedmode data.

Untuk waktu yang lama dan memalukan, saya pikir /etc/fstabdigunakan untuk mengganti opsi pemasangan default sehingga drive hanya dipasang sekali. Tapi sekarang kelihatannya salah: drive sudah terpasang menggunakan opsi pemasangan standarnya, kemudian /etc/fstabdiambil untuk remount.

Pertanyaan saya adalah :

  • Apakah ini "mount-remout" memproses desain sistem? Saya membaca Fstabhalaman wiki tetapi tidak melihatnya menyebutkan "mount-remount".
  • Jika /etc/fstabbenar-benar digunakan untuk remounting, pada langkah manakah proses booting adalah drive dipasang untuk pertama kali? Apakah ini diterapkan /etc/init.d? Saya memang melihat beberapa skrip di /etc/init.ddipanggil umountfsdan umountroot, tetapi, membaca sepintas konten mereka, mereka tidak terlihat relevan.
yaobin
sumber
2
Saya pikir ini adalah masalah "ayam dan telur" yang disebutkan di sini ( /etc/fstabberada di sistem file root, tetapi tidak dapat dibaca sampai setelah filesystem dipasang): Apakah initramfs menggunakan / etc / fstab?
steeldriver

Jawaban:

8

Dari man ext4:

data = {jurnal | dipesan | tulisan kembali}
              Menentukan mode penjurnalan untuk data file. Metadata selalu
              dijurnal. Untuk menggunakan mode selain yang dipesan pada root filesys-
              tem, operkan mode ke kernel sebagai parameter boot, misalnya root -
              flags = data = jurnal.

Hapus data=ordereddari fstab-line Anda dan edit /etc/default/grub. Di /etc/default/grubganti garis

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

untuk

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"

jalankan sudo update-grubdan reboot.

mook765
sumber
5

Kapan / etc / fstab digunakan

Jika Anda menjalankan sudo strace -e open,openat mount -o remount,rw /Anda akan melihat bahwa perintah itu sebenarnya terbuka /etc/fstab. Ini adalah perintah paling umum yang akan Anda lihat, sering direferensikan dalam artikel tentang bekerja dari shell pemulihan.

Untuk juga mengutip jawaban sourcejedi (yang berasal dari mount(8)manual):

mount -o remount, rw / dir

Setelah panggilan ini, mount membaca fstab dan menggabungkan opsi-opsi ini dengan opsi dari baris perintah (-o) . Jika tidak ada mountpoint ditemukan di fstab, maka remount dengan sumber yang tidak ditentukan diizinkan.

Namun, bukan berarti itu /etc/fstabselalu digunakan. Secara khusus, ketika Anda juga menentukan file perangkat; referensi ke mount(8)manual :

Fungsi remount mengikuti cara standar bagaimana perintah mount bekerja dengan opsi dari fstab. Itu berarti perintah mount tidak membaca fstab (atau mtab) hanya ketika perangkat dan dir sepenuhnya ditentukan.

mount -o remount, rw / dev / foo / dir

Setelah panggilan ini, semua opsi pemasangan lama diganti dan barang sewenang-wenang dari fstab diabaikan , kecuali opsi perulangan = yang dibuat secara internal dan dikelola oleh perintah pemasangan.

Ini masuk akal, karena /dirbisa berubah-ubah - mengount ulang perangkat ke mountpoint yang berbeda.

The /etc/fstabjuga tidak dirujuk saat pemasangan /filesystem pada waktu boot kernel tahu apa-apa dari /etc/fstab. Mengutip jawaban psusi :

Akhirnya boot loader datang dan dapat melewati baris perintah ke kernel. Jika argumen root = disahkan, itu memberi tahu kernel di mana root fs bukan nilai bawaan. Driver diperlukan untuk mengakses yang masih harus dibangun ke dalam kernel

...

Akhirnya, hari ini kita memiliki initramf. Ini mirip dengan initrd, tetapi alih-alih menjadi image sistem file terkompresi yang dimuat ke dalam ramdisk, ini adalah arsip cpio terkompresi. Sebuah tmpfs di-mount sebagai root, dan arsip diekstraksi di sana. Alih-alih menggunakan pivot_root, yang dianggap sebagai hack kotor, skrip boot initramfs me-mount root asli di / root, hapus semua file di root tmpfs, lalu chroot ke / root, dan exec / sbin / init

Sistem file yang tidak membutuhkan fstab

Perhatikan juga, bahwa kernel Linux memiliki sistem file lain yang berada di memori - ini tidak tersedia untuk pengguna secara normal, beberapa di antaranya tidak memiliki mountpoint sama sekali, sementara beberapa terpapar ke pengguna. Kernel tidak perlu referensi /etc/fstabuntuk itu. Contohnya adalah /proc- itu adalah sistem file virtual yang memaparkan sebagian besar informasi tentang proses, dan beberapa hal tentang perangkat keras dan sistem yang seharusnya ada di dalamnya /sys- sistem file virtual lain.

Sergiy Kolodyazhnyy
sumber