Предотвратите повреждение данных на диске ext4/Linux на потерях мощности

Попытайтесь включить гостевую учетную запись:

  • Панель управления-> Средства администрирования-> Управление компьютером> Локальные пользователи и Группы> Пользователи
  • Щелкните правой кнопкой по Guest> Properties
  • Удалите галочку "У учетной записи, отключен"

Включение этой учетной записи работало для решения этого вопроса для меня на Windows Server 2008 R2.

9
задан 4 October 2011 в 17:37
2 ответа

Кэш записи обычно не имеет ничего общего с BIOS, в основном там нет возможности переключения настроек дискового кеша. В linux может помочь использование hdparm -W 0 .

Параметр является постоянным, поэтому, если у вас нет hdparm, с которым можно было бы поиграть в производственных системах, вы сможете отключить кэш записи на диск в другой системе и повторно подключить диск.

BTW: I Во-вторых, идея корневой файловой системы без возможности записи (чтобы ваша система могла загружаться в своего рода «режиме восстановления» и обеспечивать удаленный доступ, даже если по какой-то причине доступная для записи файловая система не может быть смонтирована). И если вы можете изменить конструкцию оборудования, рассмотрите возможность использования устройств mtd вместо дисков IDE / SATA с файловой системой, поддерживающей флэш-память, например jffs2 . Мы' Я использовал эту комбинацию с несколькими встроенными устройствами (в основном это решения для VPN-маршрутизаторов на местах) в течение нескольких лет с хорошими результатами.

Обновление: Корень вашей проблемы, похоже, заключается в том, что вы используете файловую систему ext4 с журналированием отключено - has_journal отсутствует в списке Функции файловой системы . Просто выключите все службы, проверьте, есть ли еще открытые файлы, используя lsof + f - / , перемонтируйте корневой раздел в режиме только для чтения с помощью mount -o remount, ro / , включите журнал с tune2fs -O has_journal / dev / sda1 и настроил "заказанный" режим журнала в качестве параметра монтирования по умолчанию с использованием tune2fs -o journal_data_ordered / dev / sda1 - вам придется повторно запустить fsck (желательно из аварийной системы) и перемонтировать root / перезагрузить после этой операции.

При наличии этих настроек гарантируется возможность восстановления метаданных из журнала даже в случае внезапного сбоя питания. Фактические данные также постоянно записываются на диск, хотя вы можете увидеть данные за несколько секунд до отключения электроэнергии при загрузке. Если это неприемлемо, вы можете рассмотреть возможность использования опции монтирования tune2fs -o journal_data / dev / sda1 с вашей файловой системой - это будет включать все данные, записанные на диск в журнале - это, очевидно, даст вам более точные данные единообразие, но за счет снижения производительности и более высокого уровня износа твердотельного накопителя.

Фактические данные также постоянно записываются на диск, хотя вы можете увидеть данные за несколько секунд до отключения электроэнергии при загрузке. Если это неприемлемо, вы можете рассмотреть возможность использования опции монтирования tune2fs -o journal_data / dev / sda1 с вашей файловой системой - это будет включать все данные, записанные на диск в журнале - это, очевидно, даст вам более точные данные единообразие, но за счет снижения производительности и более высокого уровня износа твердотельного накопителя.

Фактические данные также постоянно записываются на диск, хотя вы можете увидеть данные за несколько секунд до отключения электроэнергии при загрузке. Если это неприемлемо, вы можете рассмотреть возможность использования опции монтирования tune2fs -o journal_data / dev / sda1 с вашей файловой системой - это будет включать все данные, записанные на диск в журнале - это, очевидно, даст вам более точные данные единообразие, но за счет снижения производительности и более высокого уровня износа твердотельного накопителя.

6
ответ дан 2 December 2019 в 22:31

Предложение кэширования записи - хорошее начало, но звучит как архитектурный недостаток. Во встроенной системе внутреннюю вспышку, вероятно, НЕ следует устанавливать R / W, за исключением редких случаев. Вы действительно должны делать большую часть работы в файловой системе памяти и синхронизировать изменения обратно с RW-флеш-памятью по какой-либо команде пользователя или через регулярные интервалы. Для встроенной системы действительно необычно использовать обычную файловую систему (например, ext4) в режиме rw во время нормальной работы. Если есть какие-то требования к приложению, где вам нужно много места для хранения, вам следует подумать о том, чтобы ваш системный раздел отличался и спроектировал его так, чтобы раздел данных можно было fsck -y'ed как часть запуска.

Если вам нужно немного начать очков Я бы посмотрел, как люди настраивают бездисковые системы Linux:

http: //frank.harvard. edu / ~ coldwell / diskless /

и начните оттуда. Общая идея состоит в том, что ваши системные двоичные файлы и данные могут быть смонтированы только для чтения, чтобы ваша файловая система не была повреждена. Однако вам нужно иметь возможность писать в определенные области, поэтому вам нужно что-то обычно в файловой системе памяти / tmp, / var / tmp. Даже если некоторые вещи должны быть доступны для записи, вы просто создаете сценарий для монтирования раздела как r + w, а затем фиксируете изменения, а затем возвращаетесь в режим только для чтения.

Отличным примером этого является аппаратное обеспечение Cyclades, его встроенный Linux, и всякий раз, когда вы вносите изменения в конфигурацию, вы должны запускать сценарий сохранения, который фактически переупаковывает конфигурации и записывает их во флэш-память.

Однако вам нужно иметь возможность писать в определенные области, поэтому вам нужно что-то обычно в файловой системе памяти / tmp, / var / tmp. Даже если некоторые вещи должны быть доступны для записи, вы просто создаете сценарий для монтирования раздела как r + w, а затем фиксируете изменения, а затем возвращаетесь в режим только для чтения.

Отличным примером этого является аппаратное обеспечение Cyclades, его встроенный Linux, и всякий раз, когда вы вносите изменения в конфигурацию, вы должны запускать сценарий сохранения, который фактически переупаковывает конфигурации и записывает их во флэш-память.

Однако вам нужно иметь возможность писать в определенные области, поэтому вам нужно что-то обычно в файловой системе памяти / tmp, / var / tmp. Даже если некоторые вещи должны быть доступны для записи, вы просто создаете сценарий для монтирования раздела как r + w, а затем фиксируете изменения, а затем возвращаетесь в режим только для чтения.

Отличным примером этого является аппаратное обеспечение Cyclades, его встроенный Linux, и всякий раз, когда вы вносите изменения в конфигурацию, вы должны запускать сценарий сохранения, который фактически переупаковывает конфигурации и записывает их во флэш-память.

5
ответ дан 2 December 2019 в 22:31

Теги

Похожие вопросы