Файловая система, которая никогда не повреждается (приемлемая потеря данных)

У меня была та же проблема. Это - мое первое решение. Сначала запишите вывод в файл, который мы усекаем после каждой строки, таким образом, это не растет неограниченно долго:

spewingprocess | while read line; do echo $line > buffer.txt ; done

Затем читайте из файла с помощью хвоста (где 2> /dev/null избавляется от "файла усеченное" сообщение об ошибке):

tail -f ./buffer.txt 2> /dev/null

Таким образом, буфер не растет, и мы можем мультиплексировать, например, выполнить столько хвостов, сколько мы хотим. Однако проблема с этим подходом состоит в том, что мы можем потерять данные, когда мы усекаем быстрее, чем хвост может читать как этот тест шоу:

for ((i=0; ; i++)) ; do echo "$i" ; done | while read line; do  echo $line > buffer.txt ; done
tail -f ./buffer.txt 2> /dev/null > log.txt

После выполнения в течение некоторого времени первые и последние строки:

$ head -n 1 log.txt
0
$ tail -n 1 log.txt
78783

Но файл имеет меньше строк, таким образом, некоторые потеряны:

$ wc log.txt
67087  67087 392819 log.txt

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

9
22.02.2018, 05:07
2 ответа
[12220]Программа ДОЛЖНА продолжаться![12221]Это общее требование, и системы Linux - лучший выбор, когда дело доходит до выбора стабильной системы.[12222]Ваши усилия, кажется, также не идут в правильном направлении. Однако, что Вы можете сделать, чтобы получить стабильную систему?[12223]На первом уровне Вы можете улучшить свою файловую систему:[12224]Используйте [114727]yournal_data_ordered[114728] на файловой системе [114729]ext3/ext4[114730], при создании или модификации с помощью [114731]tune2fs[114732]. [12225]С помощью [114733]JFS[114734] используйте [114735]--replay_journal_only[114736] при проверке.[12226]Включите авторемонтирование, установив [114737]FSCKFIX=да[114738] в initscripts.[12227]Если этого недостаточно, можно загрузить систему без подключения багги-диска. Вместо этого создайте свежий [114650]ramdisk[114651] во время ручной проверки и ремонта багги-диска. Это также может быть автоматизировано с помощью скриптов.[12228]На следующем уровне вам нужно будет оставить встроенную систему и прочитать некоторые темы о [114652]High Availability[12229]
2
27.01.2020, 20:07
[113954] В вашей истории есть небольшая непоследовательность или, по крайней мере, двусмысленность:

Я все равно лучше потеряю все это, чем встречусь с "неспособным смонтировать", "подождите этих 10 минут fsck" Подразумевает - хотя вы на самом деле не говорите этого - что это проблема, которую вы на самом деле испытываете. Но потом:e2fsprogs-libs (зависимость от jfsutils) кажется чертовски сложной компиляцией в моем дистрибутиве.

означает [114433], что у вас вообще нет fsck[114434], так как [114435]e2fsprogs-libs[114436] является зависимостью для [114437]e2fsprogs[114438], которая обеспечивает [114439]e2fsck[114440]. Так что, возможно, Вы все еще находитесь в стадии планирования и даже не протестировали систему, например, с помощью [114441]ext4[114442], а вместо этого перешли к выводу, что Вам следует начать с JFS? Есть ли для этого какая-то конкретная причина?

Я заметил на малиновом пи-обмене (первичное хранилище пи также является SD-картой), что значительное количество пользователей, похоже, очень расстроены проблемами подобного рода, хотя большинство (включая меня) никогда не имели его вообще. Сначала я предположил, что эти люди не знают о том, что система должна быть чисто выключена, но это не трудно понять, когда это объясняют, и есть люди, которые сообщают об этом [114443], даже несмотря на то, что система HAS была должным образом выключена [114444].

Вы уже говорили, что это необходимо для того, чтобы быть в состоянии терпеть перебои в подаче электроэнергии (что справедливо), но я упоминаю об этом, потому что это подразумевает, что есть [114445] некоторые [114446] pis, или некоторые SD карты, или какая-то комбинация обоих, которые просто склонны к повреждению файловой системы из-за какого-то события (всплеска?), которое регулярно происходит либо при вытаскивании штекера, либо при его повторном включении. Я также НЕ видел -- и было достаточно времени для многих людей, чтобы попробовать -- ЛЮБОЕ ПОЛОЖЕНИЕ о том, что кто-то сказал, что переключился на btrfs или jfs или что-то в этом роде, и теперь проблема решена.

<font face="Helvetica, Arial, sans-serif" size="3"><span style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;"> <br />
  <br>
  Cheers, <br />
  <br>
  Abel Braaksma
  </span>
</font>
<br />
<br />


<hr style="height:1px;border:none;color:black;background-color:black" />
<table style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;" cellspacing="0" cellpadding="0">
  <tr>
    <th align="left" style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">From:</th>
    <td style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">%from%</td>
  </tr>
  <tr>
    <th align="left" style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">Sent:</th>
    <td style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">%datelocal%</td>
  </tr>
  <tr>
    <th align="left" style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">To:</th>
    <td style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">%to(name)%</td>
  </tr>
  <tr>
    <th align="left" style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">Cc:</th>
    <td style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">%cc(name)%</td>
  </tr>
  <tr>
    <th align="left" style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">Subject: &nbsp;</th>
    <td style="font-size:10pt;font-family:Arial, Helvetica, sans-serif;">%subject%</td>
  </tr>
</table>
<br />
<br />
Другая загадочная вещь - [114447], даже если люди дёргаются за шнур, это не должно регулярно приводить к неработоспособности файловой системы. [114448] Конечно, я делал это кучу раз w/ the pi, и забивал сотни, если не сотни раз w/ a обычный linux box (питание было отключено, система стала невосприимчивой, я измотан и зол и т.д.). ) и хотя я видел незначительную потерю данных, я никогда не видел, чтобы файловая система была повреждена до такой степени, что была бы непригодна к использованию после быстрой проверки.

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

На пи я пишу [114449]-y[114450] на [114451]/forcefsck[114452] в сценарии загрузки, так что при следующей загрузке он запускается автоматически и любые проблемы исправляются, независимо от того, кажется ли это необходимым или нет. На 700 МГц одном ядре это занимает ~10 секунд для 12 ГБ файловой системы, содержащей ~4 ГБ данных. Таким образом, "10 минут" звучит как невероятно долгое время, тем более, что вы уже сказали "Это [114453]-[114454] маленькая файловая система для записи!".

Вы также можете рассмотреть возможность вызова [114455]sync[114456] через регулярные интервалы времени.

Наконец, вы должны обновить вопрос более фактическими, специфическими деталями проблем [114457], с которыми вы фактически столкнулись, [114458] и менее гипербольным. В противном случае, это выглядит слишком похоже на преждевременную [114459]XY проблему [114460], которая, скорее всего, будет быстро пропущена людьми с большим опытом и потенциальными советами для вас.[113977].

2
27.01.2020, 20:07

Теги

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