Как я могу заставить dd работать быстрее?

у меня есть Samsung XE303C12, и я запускал Arch Linux ARM на нем с SD-карты. Таблица разделов SD карты как таковой:

  1. раздел ядра Chrome OS, в который входит ядро сигнализации, обернутое vboot.
  2. раздел ext2, который я бы использовал для настройки U-Boot всякий раз, когда он установлен в раздел 1 вместо ядра Arch Linux.
  3. корневая файловая система, на которую я установил Arch Linux.

A недавняя попытка обновить все пакеты одновременно привела к повреждению корневой файловой системы. Я видел какое-то сообщение о мигании ядра на какой-то раздел на SD-карте и файловой системе, которые не могут быть смонтированы только для чтения или чтения-записи или что-то еще. Я пытался исправить это с помощью fsck, что несколько раз подсказывало мне, что делать с inodes, но как только я понял, что, вероятно, будет спрашивать меня об этом для каждого inode в разделе, я запустил fsck -y /dev/mmcblk1p3. Это пробежало, может быть, несколько сотен inodes до остановки. Я не могу вспомнить сообщение об ошибке.

в надежде сохранить данные для будущего восстановления, я резервное копирование /dev/mmcblk1p3 к файловой системе FAT32 на USB-накопителе с помощью dd. Поскольку FAT32 не может содержать файлы размером более 4 гигабайт, я решил разбить его на сегменты, используя некоторый код оболочки и петли.

пропустив несколько вещей, я понял, что dd быстрее в начале процесса (я использовал bs установите для большего кратного 512 чтобы сделать это быстрее), поэтому первый сегмент 64 MiB будет записан в файловую систему USB за 3 секунды, и он будет становиться все медленнее с каждой итерацией. Я узнал, что это потому, что дисковый кэш заполняется.

я искал способ очистить кэш для dd и наткнулся на этот пост на веб-сайте Unix Stack Exchange. Верхний ответ говорит делать sync; echo 3 > /proc/sys/vm/drop_caches. Комментарий к этому ответу отмечает, что эта настройка не является липкой, и ссылка в этом комментарии мне пришла в голову идея сделать echo 3 > /proc/sys/vm/drop_caches перед каждой итерацией dd. Я пробовал это и dd все еще упал в скорости копирования.

второе решение, упомянутое в ответе на первый пост, состояло в том, чтобы запустить dd С iflag=direct как способ обхода кэша. Я сделал это, но я также использовал oflag=direct поскольку я полагал, что кэш будет применяться как к копированию с SD-карты, так и к записи на USB. этой комментарии заявил, что nocache вместо direct, так что я пробовал. Оба метода испытали одинаковое падение с ~17 Мб / с до ~1-3 МБ / с.

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

27
задан Melab
19.05.2023 7:08 Количество просмотров материала 2646
Распечатать страницу

1 ответ

пока размер блока (bs) с dd достаточно большой, он действительно ограничен только аппаратной скоростью. Подозреваю, вам придется подождать.

теперь мне нужен калькулятор... не могу найти, просто bc. Таким образом, вы используете bs= 2 к силе 25... Итак, около 33 миллионов, это достаточно большой (fyi, используя маленький bs Как 1 или 512 обычно замедляет DD до обхода).

возможно, даже вероятно, что sd-карта и / или USB-накопитель просто не будут читать и писать быстрее. Начальная" быстрая " запись, вероятно, просто заполняет кэш записи, а реальная запись всегда имеет одинаковую медленную скорость. Сначала очистка кэша просто создаст иллюзию более быстрой записи на некоторое время.

таким образом, ваша установленная арка на SD-карте полностью повреждена, а файловая система серьезно повреждена, и вы уже несколько раз запускали fsck на ней... Я предполагаю, что восстановление установки почти безнадежно сейчас, и новая установка будет в 1000 раз быстрее & облегчающий.

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

FYI, вы также можете сжать dd изображение прежде чем писать его, GZ трубы красиво и сэкономит много места if там много нулей в свободном пространстве, но это делает монтаж изображения позже сложнее. Файл может образ весь диск тоже для монтируемого доступа только для чтения позже.

[С таким же успехом можно поместить это в "ответ"]

0
отвечен Xen2050 2023-05-20 14:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх