/ etc / fstab монтирование с автоматическим сбросом буфера

Вопрос или проблема

Моя строка /etc/fstab для SD-карты, которую я собираюсь смонтировать, выглядит так:

/dev/mmcblk1    /media/sd_card  vfat    user,rw,umask=000,sync  0 2

С этой строкой я могу смонтировать SD-карту, но каждый раз, когда я хочу отсоединить SD-карту, мне нужно выполнить blockdev --flushbufs /dev/mmcblk1, если я хочу, чтобы внесенные изменения вступили в силу.

Что означает, что если я не выполню команду blockdev, все внесенные изменения будут утеряны после отсоединения SD-карты.

Странно то, что все время, пока я использовал эту строку, я считал, что все работает нормально…

Так что я делаю не так?


Я работаю на jetson tx2 с установленным Ubuntu 16.04.

Мой raspbian bullseye имеет опцию flush mount именно для этого.

PARTUUID=80aaf812-01  /boot           vfat    defaults,flush    0       2

В других raspbian я в основном отказывался от монтирования /boot, чтобы исправить ситуации с загрузкой после сброса питания.

Ответ или решение

Автоматическая очистка буферов при монтировании в /etc/fstab

Общая проблема

Вы столкнулись с проблемой, когда при монтировании SD-карты с использованием файла /etc/fstab изменения, которые вы вносите, не сохраняются, пока вы не выполните команду blockdev --flushbufs /dev/mmcblk1. Это может привести к потере данных, если устройство будет выключено или отключено без предварительного вызова этой команды.

Разбор текущей конфигурации

Ваши настройки в /etc/fstab выглядят следующим образом:

/dev/mmcblk1    /media/sd_card  vfat    user,rw,umask=000,sync  0 2

Параметры монтирования

  • /dev/mmcblk1: Это устройство, представляющее вашу SD-карту.
  • /media/sd_card: Путь,куда будет монтироваться устройство.
  • vfat: Файловая система, используемая для SD-карты.
  • user,rw,umask=000,sync: Флаги монтирования:
    • user: Разрешает обычным пользователям монтировать и размонтировать устройство.
    • rw: Монтирование в режиме чтения-записи.
    • umask=000: Позволяет всем пользователям читать, записывать и выполнять файлы.
    • sync: Вся запись на устройство выполняется синхронно, что замедляет операции, но обеспечивает, что все данные будут немедленно записаны на диск.

Причина проблемы

Команда blockdev --flushbufs /dev/mmcblk1 принудительно очищает буферы на устройстве, тем самым гарантируя, что все изменения, записанные в файловую систему, фактически попадают на физический носитель. Параметр sync в вашем монтировании гарантирует, что изменения будут записаны без задержек на уровне программного обеспечения, но это не всегда эффективно для немедленного применения на уровне блока, особенно в случае с SD-картами и их кэшированием.

Решение: Использование flush

В Raspbian Bullseye, как вы указали, есть параметр flush, который автоматически очистит буфер записи при размонтировании устройства. Однако Ubuntu 16.04, скорее всего, не поддерживает этот параметр в стандартной конфигурации для файловых систем, таких как vfat.

Рекомендации

  1. Использование команды sync перед извлечением SD-карты:
    Вы можете добавить команду sync перед тем, как физически отключать SD-карту. Это поможет убедиться, что все буферы будут очищены.

    sync
  2. Используйте umount вместо простого извлечения:
    Убедитесь, что вы используете umount /media/sd_card, чтобы размонтировать устройство корректно. Это заставит систему записать все кэшированные данные на диск.

  3. Создание скрипта:
    Если выполнение команды sync и umount становится слишком трудоемким, вы можете создать простой скрипт, который будет выполнять их последовательно, и запускать его перед отключением.

    #! /bin/bash
    sync
    umount /media/sd_card
  4. Проверка других файловых систем:
    Возможно, вам стоит рассмотреть использование другой файловой системы, которая может поддерживать вашу необходимую функциональность. Некоторые файловые системы более эффективны в управлении буферизацией данных.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...