dd пишет в CF с задержкой

Я выполнял бы его каждую неделю и имел бы проверку сценария, чтобы видеть, является ли недельное число нечетным числом: если да выход.

Этому была бы нужна еще некоторая мысль для работы с декабря по январь.

Возможно, имейте сценарий, устанавливает "последнее успешное выполнение" файл флага. Когда сценарий запускается, проверьте, что файл флага был в последний раз изменен 14 дней назад.

5
26.01.2015, 11:22
2 ответа

Запись блочного устройства буферизируется ядром. Это хорошо видно при монтировании файловой системы (при размонтировании буферы должны быть промыты, что иногда приводит к очень длительной задержке до возвращения umount). Казалось бы, эта задержка усиливается по мере того, как доступная оперативная память становится всё больше и больше. Возможно, вы сможете записать половину гигабайта сразу же до того, как ядро даже инициализирует передачу данных. Ядро может прозрачно записывать на устройство в течение нескольких минут после завершения передачи.

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

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

6
27.01.2020, 20:35

Операционная система кэширует данные для dd (и других команд), необходимо выполнить синхронизацию перед удалением CF и дождаться завершения синхронизации .

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

3
27.01.2020, 20:35

Теги

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