Мне установили устройство с 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
взят для перемонтирования его.
Мои вопросы:
Fstab
страница Wiki, но не видела, что упоминает, "монтируются - повторно монтируют" вещь./etc/fstab
действительно используется для перемонтирования, в котором шаге процесса начальной загрузки диск смонтирован впервые? Это реализовано в /etc/init.d
? Я действительно видел некоторые сценарии в /etc/init.d
названный umountfs
и umountroot
, но, просматривая их содержание, они не выглядят релевантными.От man ext4
:
data={journal|ordered|writeback} Specifies the journaling mode for file data. Metadata is always journaled. To use modes other than ordered on the root filesys‐ tem, pass the mode to the kernel as boot parameter, e.g. root‐ flags=data=journal.
Удалить 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
и перезагрузка.
Если Вы работаете sudo strace -e open,openat mount -o remount,rw /
Вы будете видеть, что команда действительно на самом деле открывается /etc/fstab
. Это - наиболее распространенная команда, которую Вы будете видеть, часто ссылаемый в статьях о работе от оболочки восстановления.
Также заключить ответ sourcejedi в кавычки (который прибывает из mount(8)
руководство):
смонтируйте, что-o повторно монтируются, rw / dir
После этого вызова смонтируйте чтения fstab, и объединяет эти опции с опциями из командной строки (-o). Если никакая точка монтирования не найдена в fstab, то перемонтирование с неуказанным источником позволяется.
Однако это не означает это /etc/fstab
всегда используется. В частности, когда Вы также указываете файл устройств; ссылка на mount(8)
руководство:
Функциональность перемонтирования следует за стандартным путем, как команда монтирования работает с опциями от fstab. Это означает, что команда монтирования не читает fstab (или mtab) только, когда устройство и dir полностью указаны.
смонтируйте, что-o повторно монтируются, rw/dev/foo / dir
После этого вызова все заменяются старые опции монтирования, и произвольный материал от fstab проигнорирован, кроме цикла = опция, которая внутренне сгенерирована и сохраняется командой монтирования.
Это имеет смысл с тех пор /dir
могло быть произвольным - перемонтирование устройства к другой точке монтирования.
/etc/fstab
также не ссылается при монтировании /
файловая система в ядре времени начальной загрузки не знает ничего из /etc/fstab
. Заключить ответ psusi в кавычки:
В конечном счете загрузчики пришли и могли передать командную строку ядру. Если корень = аргумент был передан, который сказал ядро, где корневая фс была вместо созданного в значении. Драйверы должны были получить доступ, это все еще должно было быть встроено в ядро
...
Наконец, сегодня у нас есть initramfs. Это подобно initrd, но вместо того, чтобы быть изображением сжатой файловой системы, которое загружается в электронный диск, это - сжатый архив cpio. tmpfs смонтирован как корень, и архив извлечен там. Вместо того, чтобы использовать pivot_root, который рассматривался как грязный взлом, сценарии начальной загрузки initramfs монтируют реальный корень в корне/, удаляют все файлы в корне tmpfs, затем chroot в корень / и должностное лицо/sbin/init
Отметьте также, что ядро Linux имеет другие файловые системы, которые находятся в памяти - они обычно не доступны пользователям, некоторые из которых не имеют точки монтирования вообще, в то время как некоторые подвергаются пользователям. Ядро не должно ссылаться /etc/fstab
для тех. Пример этого /proc
- это - виртуальная файловая система, которая выставляет главным образом информацию о процессах и некоторый материал об аппаратных средствах и системе, которая должна действительно быть в /sys
- другая виртуальная файловая система.