У меня нет привычки отключать пи в смысле отказа от правильного его выключения, за исключением случаев, когда я теряю сеть на безголовом пи, и в этом случае мне обычно лень подключать клавиатуру и т. Д.
Обычно я всегда проверяю, чтобы в этот момент не горел зеленый индикатор ACT; для последних моделей (или прошивки?) это будет отключено, когда SD-карта не будет доступна. В чем вы хотите убедиться. Если вы не пишете в него постоянно, это должно быть достаточно просто; до тех пор, пока в свободной ОЗУ имеется достаточный запас (скажем, 50–100 + МБ, в зависимости от контекста), то вещи, которые часто используются повторно, но фактически не загружаются процессом в любой момент будет кэшироваться в свободной памяти и перезагружаться оттуда ОС, а не реальным физическим носителем. Так работают все современные операционные системы общего назначения.
Если пи использует SD-карту, риск минимален : файловая система на карте не синхронизирована с состоянием в памяти. Обычно это, вероятно, не большая проблема; для начала, защита от файловой системы, используемая по умолчанию на большинстве pis, может быть защитой от нее, как и fsck, который должен применяться автоматически при загрузке, если файловая система не была чисто размонтирована. Вскоре я объясню, почему я говорю «может», а не «есть», потому что в этом контексте я думаю, что часто это не так .
Насколько я знаю, я никогда не заканчивал повреждением файловой системы или потерей данных при извлечении заглушки, что я, возможно, делал сотни или более раз за эти годы. Однако, опять же, я не делаю это привычно. Если вы делаете это несколько раз в день, вы можете в конечном итоге столкнуться с тем или иным уровнем статистического риска, и это может привести к неприятным последствиям.
Вот ПРОБЛЕМА:
Недавно мне пришло в голову, что есть проблема с SD-картами, против которой механизмы ОС / файловой системы могут быть бессильны, и которая может объяснить, почему некоторые люди, кажется, имеют постоянные проблемы с повреждением fs, особенно те, кто вмешивается в работу независимо от системы. например, недавно кто-то здесь утверждал, что запускает вычислительные модули, из-за повреждения которых системы не загружались в ~ 1/40 таких отключений питания.
В абстрактном смысле, не принимая во внимание природу SD-карт , этого не должно происходить, даже если система занята, потому что то, что с большой вероятностью может привести к повреждению, - это написанное некритически, а не любое системное программное обеспечение, которое эффективно только для чтения и изменяется только во время обновлений.
Это может произойти, если биты перетасовываются, и поэтому метаинформация файловой системы, которая хранит различные биты, повреждена. Опять же, однако, journalling и fsck должны быть в состоянии справиться с этим, что требует ядра для загрузки, но ядро на pi находится в отдельном загрузочном разделе, который также может быть размонтирован во время использования (кроме случаев обновления), потому что ничего из этого не используется после загрузки системы. То есть информация о разделе должна быть практически неподкупной, даже если она оставлена подключенной.
Но...
SD-карты являются черным ящиком для операционной системы. Выхода из этого нет. Хотя существуют специальные драйверы для контроллеров SD-карт, которые являются частью аппаратного обеспечения компьютера (на пи, это часть SoC), нет такой вещи, как драйвер для разных, конкретных марок и моделей карт.
И все же, все они имеют микроконтроллеры, которые могут работать по-разному. 1. Это то, что делает карту черным ящиком; он взаимодействует с операционной системой через стандартизированный протокол SD, и это последняя точка контроля, которую имеет ОС.
SD-карты и другие твердотельные носители отличаются от традиционных вращающихся дисков тем, что используют непрозрачную виртуальную адресацию; они не хранят информацию физически в последовательностях, которые воспринимает операционная система. В основном это хорошо, иначе нам могут действительно понадобиться разные драйверы для карт разных марок и т. Д., И это позволяет картам (непрозрачно) осуществлять выравнивание износа , что значительно продлевает срок их службы.
Другая вещь, на которую они полагаются - это относительно большие «блоки стирания»; когда данные в блоке должны быть изменены, весь блок стирается и перезаписывается. Файловые системы также делают это, как само собой разумеющееся, но учтите, что это на уровне системного программного обеспечения, и возникающие в результате этого проблемы - это именно те проблемы, о которых сообщается и которые нужно fsck
решать.
Суть более непреодолимой проблемы заключается в том, что масштабируемые файловые системы обычно намного меньше, чем масштабируемые SD-карты. Если бы это было не так, вы бы потеряли много места, потому что блок файловой системы может содержать данные только из одного файла. Если размер блока составляет 2 МБ, а данных всего несколько КБ, остальное теряется. Таким образом, блоки файловой системы имеют тенденцию варьироваться от 1/2 КиБ до 4 КиБ.
Совершенно очевидно, что SD-карты этого не делают, и на самом деле не могли, потому что контроллер на SD-карте не знает границ, таких как «файл», «файловая система» или даже «раздел устройства». Он имеет дело только с порциями данных, которые нужны ОС, через непрозрачный слой из черного ящика, где все может происходить на физическом уровне.
Одна из причин, по которой это очевидно (за исключением исходных карт, «которые в первую очередь не могли этого сделать»), заключается в том, что эти блоки часто бывают довольно большими, хотя карты, похоже, отлично справляются с задачей использования всего пространства. Размер стираемого блока может составлять несколько мегабайт . Более того, детали являются собственностью. Хотя могут существовать механизмы, с помощью которых ОС может запрашивать размер стираемого блока с карты, карта не должна предоставлять это, она может лгать об этом, и это станет абсурдом, если ОС попытается использовать его.
Из этого следует, что, поскольку:
Контроллер SD-карты не имеет понятия о том, какие данные «по праву» принадлежат, где в смысле согласованных файловых систем и разделов, и,
SD-карта - это черный ящик, в который ОС не может видеть,
Тогда то, что находится в данном блоке стирания объемом 1 МБ, где карта содержит несколько разделов, использующих блоки файловой системы размером 4 КБ или меньше, должно быть произвольным, если карта была использована достаточно (и, возможно, даже если она не использовалась в все). Это, вероятно, верно, даже если вы пытаетесь заставить ОС использовать больший / соответствующий размер блока; они будут в конечном итоге смещены.
Так:
Если питание отключается, когда SD-карта находится в процессе изменения блока, это может привести к потере довольно большого объема произвольных данных, которые могут быть чем-либо с карты. Это может быть информация с пометкой «только для чтения». Это может быть информация из раздела, который даже не смонтирован , и, очевидно, достаточно часто из неиспользуемого загрузочного раздела.
Если это произойдет, и у карты нет какой-либо собственной системы защиты (что, возможно, есть у некоторых, но я уверен, что у большинства ее нет), вы можете посмотреть на ситуацию с FUBAR. Журналирование не защитит от случайного повреждения размера МБ, которое даже не распознает границы раздела. Или fsck.
Или, поскольку аппаратное обеспечение карты, как правило, является проприетарным, может быть что угодно, кроме программного обеспечения, произведенного производителем карты - при условии, что это правдоподобно. Я никогда не слышал о таких. Это сделало бы карты более сложными, более дорогими и более сложными в использовании. Что не является целью.
Иными словами, SD-карты не предназначены для надежного использования таким образом . Они дешевы и очень удобны, но это результат компромисса в протоколе: в общем, нет никакой гарантии целостности данных для чего-либо на карте, если вы произвольно отключите питание для нее.
Что может пойти не так, просто отключив Pi? Должен ли я начать просто отключить? Примечание: в этом случае я не слишком беспокоюсь о потере данных.
Это не будет физически вредить пи, нет, просто опасайтесь, что «потеря данных» может распространиться на «бесполезную карту», которую нужно полностью переформатировать. Тем не менее, я бы сказал, что вероятность этого, если вы делаете это с выключенным зеленым светом ACT, очень мала.
- Это может быть важно, если учесть, почему некоторые конкретные марки / модели карт явно хуже, чем другие, для некоторых людей. К сожалению, хотя две карты, которые имеют одинаковую маркировку, могут быть идентичными с точки зрения заявленных характеристик (размер, скорость и т. Д.), Производители не обязаны делать их действительно идентичными на 100% с точки зрения составных частей.