На встроенной системе, использующей 44-контактную промышленную флеш-память Transcend, через некоторое время я заметил, что не могу читать какие-либо файлы или записывать на диск. Я использую ядро 3.2.0. * BPO i686 SMP PAE. Иногда это сопровождается зависанием ядра резервного порта, но всегда вызывает полное зависание системы в ядре Debian 6 по умолчанию. Когда я пытаюсь перезагрузиться в этот момент, он всегда зависает, если я выключаю питание (что обычно нормально, поскольку это корневая система только для чтения), я обычно получаю зависшую загрузку на fsck, жалуясь, что один из записываемых разделов не был чисто демонтированный. fsck / dev / ... -y всегда исправляет.
Заметив это, я изменил наше основное приложение, чтобы оно считывалось только из ide при запуске и записывало в файлы конфигурации только тогда, когда клиент вызывает функцию WriteConfigurationToDisk. Это радикально улучшило ситуацию, однако через некоторое время начинает происходить то же самое. Кажется, что это происходит не повсеместно, только примерно на 10% продукта.
Это корневая система только для чтения. Каждый раздел представляет собой журналируемую файловую систему ext3. Кроме того, только операционная система записывает что-либо на диск - и большая часть этого происходит при загрузке. Есть идеи, что я должен проверить?
Обновить Я провел еще несколько исследований, и кажется, что ext3 может убить мою флешку, поэтому замороженные чтение / запись являются результатом плохой флэш-памяти. Может, мне перейти на JFSS2?
На SSD вы можете попробовать использовать файловую систему ext4, а затем смонтировать ее, используя опцию Discard. В fstab:
UUID=XXXXXXXXXXXX / ext4 discard 0 1
Добавьте любые другие параметры, которые хотите, например noatime или errors = remount-ro.
Опция сброса потенциально включает TRIM в SSD, что может увеличить его срок службы, https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Ext4_code_implements_discard.2FTRIM
Однако это будет работать только в том случае, если другие (базовые) системы также поддерживают его.
Я не уверен, поддерживает ли ваш флеш-диск TRIM, поскольку он не является частью самого чипа, а является частью логики диска, который содержит чипы. Мне нужно точно знать, что это за устройство.
Но простое изменение самой файловой системы может облегчить ситуацию, я предпочитаю xfs. Файловая система ext3 достаточно хороша для многих целей, но у нее больше проблем с восстановлением (требующих fsck -y), чем у других, таких как xfs, которые я никогда не обнаружил, чтобы выручить меня.
Установка этого в / и т. д. / по умолчанию / rcS включает автоматическое восстановление файловой системы (ext3) при загрузке, не нужно нажимать «y»:
FSCKFIX=yes
Обновление: я проверил спецификации этого устройства, и оказалось, что оно не поддерживает TRIM, хотя это довольно симпатичное маленькое устройство. Вы правы насчет журналирования, и если TRIM не поддерживается, вы можете повысить надежность, используя файловую систему ext2 или другую не журналируемую файловую систему.