Чи використовується `/ etc / fstab` для перепланування накопичувачів?


9

У мене встановлено пристрій з Ubuntu 14.04.5, який має єдиний жорсткий диск з файловою системою ext4.

Читаючи документ файлової системи Ext4, я зрозумів, що режим даних за замовчуванням є orderedлише тим, що захищає метадані. У моєму проекті ми хочемо змінити його на journalзахист файлових даних, оскільки безпека даних має більшу цінність.

Перше, що я спробував - це змінити /etc/fstabфайл. Я намагався змінити

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

до

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

додавши data=journalдо поля опції.

Однак, коли я перезавантажував пристрій, я закінчив повідомлення про помилку cannot change data mode on remount. Я перевірив dmesgі побачив попереднє повідомлення про встановлення накопичувача в orderedрежимі даних.

Зважаючи на тривалий час, я вважав /etc/fstab, що використовується для переопрацювання параметрів кріплення за замовчуванням, тому диски встановлюються лише один раз. Але зараз це виглядає неправильно: накопичувач монтується за допомогою стандартних параметрів кріплення, а потім /etc/fstabпідбирається для його повторного встановлення.

Мої запитання :

  • Це процес "монтажу-ремонтажу" проектування системи? Я прочитав сторінку Fstabwiki, але не побачив, що в ній згадується річ "mount-remount".
  • Якщо /etc/fstabпо-справжньому використовується для перепланування, на якому етапі процесу завантаження привід встановлюється вперше? Чи реалізовано це в /etc/init.d? Я дійсно бачив кілька сценаріїв в /etc/init.dназивається umountfsі umountroot, але, пробігаючи їх зміст, вони не виглядають актуальними.

2
Я думаю, що тут вказана проблема "курка і яйце" ( /etc/fstabзнаходиться в кореневій файловій системі, але її неможливо прочитати до монтажу файлового файлу): Чи використовує initramfs / etc / fstab?
steeldriver

Відповіді:


8

Від man ext4:

data = {журнал | замовлений | записування}
              Вказує режим журналу даних файлів. Метадані є завжди
              мандрувати. Використання режимів, відмінних від упорядкованих у кореневій файліys-
              Tem, передати режим ядро ​​як параметр завантаження, наприклад, root-
              прапори = дані = журнал.

Видаліть data=orderedзі свого fstab-рядка та /etc/default/grubзамість цього редагуйте . У /etc/default/grubзміні лінії

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

до

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

запустіть sudo update-grubі перезавантажте.


5

Коли використовується / etc / fstab

Якщо ви запустите, sudo strace -e open,openat mount -o remount,rw /ви побачите, що команда насправді відкрита /etc/fstab. Це найпоширеніша команда, яку ви бачите, на яку часто посилаються статті в роботі з оболонкою відновлення.

Щоб також цитувати відповідь sourcejedi (яка походить з mount(8)посібника):

mount -o перерахунок, rw / dir

Після цього дзвінка mount читає fstab і об'єднує ці параметри з параметрами з командного рядка (-o) . Якщо в fstab не знайдено точку кріплення, допускається перезапис із не вказаним джерелом.

Однак це не означає, що /etc/fstabвикористовується завжди. Зокрема, коли ви також вказуєте файл пристрою; посилання на mount(8)посібник :

Функція повторного перегляду відповідає стандартному способу роботи команди mount з параметрами fstab. Це означає, що команда mount не читає fstab (або mtab) лише тоді, коли пристрій та dir повністю вказані.

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

Після цього виклику всі старі параметри кріплення замінюються, а довільні речі з fstab ігноруються , за винятком опції loop =, яка внутрішньо генерується та підтримується командою mount.

Це має сенс, оскільки /dirможе бути довільним - перенастроювання пристрою на іншу точку монтажу.

На /etc/fstabце також не посилається при монтажі /файлової системи під час завантаження ядро ​​нічого не знає /etc/fstab. Цитую відповідь psusi в :

Врешті-решт завантажувачі завантажуються і можуть передати командний рядок до ядра. Якщо був переданий root = аргумент, це повідомило ядро, де знаходиться корінь fs замість вбудованого значення. Драйвери були потрібні для доступу, який все ще потрібно було вбудувати в ядро

...

Нарешті, сьогодні у нас є initramfs. Це схоже на initrd, але замість того, щоб бути стислим зображенням файлової системи, завантаженим у рамковий диск, це стислий архів cpio. Tmpfs змонтовано як корінь, і там архів витягується. Замість використання pivot_root, який розглядався як брудний злом, скрипти завантаження initramfs монтують справжній корінь у / root, видаляють усі файли в корені tmpfs, потім chroot в / root та exec / sbin / init

Файлові системи, яким не потрібен fstab

Зауважимо також, що ядро ​​Linux має інші файлові системи, які перебувають у пам'яті - вони не доступні нормально для користувачів, деякі з яких взагалі не мають точки монтування, а деякі піддаються дії користувачів. Кернел не повинен посилатися /etc/fstabна них. Приклад цього /proc- це віртуальна файлова система, яка викриває в основному інформацію про процеси, а також деякі відомості про обладнання та систему, які справді повинні бути /sys- інша віртуальна файлова система.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.