Вопрос или проблема
Я пытаюсь сделать резервное копирование данных (230 ГБ, 160 000 файлов) по USB 3.0 на новый внешний жесткий диск Seagate Expansion Portable объёмом 4 ТБ, отформатированный в NTFS. Я использую Ubuntu 18.04.3 LTS.
Сначала я попробовал использовать простую команду cp в терминале, но после копирования всего лишь нескольких процентов процесс копирования начал заикаться и замедлился. Спустя некоторое время диск стал неотвечать. Повторная установка диска не сработала. Я попытался подключить диск к другому компьютеру, но сначала не смог его смонтировать, а затем после нескольких попыток он смонтировался, но чтение и запись были очень медленными.
Когда cp начинает давать сбой, я получаю следующие ошибки в dmesg (все эти сообщения повторяются несколько раз, но с разными номерами):
[67598.098118] sd 4:0:0:0: [sdb] tag#18 uas_zap_pending 0 uas-tag 19 inflight: CMD
[67598.098122] sd 4:0:0:0: [sdb] tag#18 CDB: Write(16) 8a 00 00 00 00 01 1c 75 24 18 00 00 04 00 00 00
[67598.225621] usb 1-9: reset high-speed USB device number 5 using xhci_hcd
[67598.378202] scsi host4: uas_eh_device_reset_handler success
[67598.378466] sd 4:0:0:0: [sdb] tag#14 FAILED Result: hostbyte=DID_RESET driverbyte=DRIVER_OK
[67598.378468] sd 4:0:0:0: [sdb] tag#14 CDB: Write(16) 8a 00 00 00 00 01 1c 74 d0 18 00 00 04 00 00 00
[67598.378470] blk_update_request: I/O error, dev sdb, sector 4772384792 op 0x1:(WRITE) flags 0x104000 phys_seg 128 prio class 0
[67598.378473] buffer_io_error: 246 callbacks suppressed
[67598.378474] Buffer I/O error on dev sdb2, logical block 596515075, lost async page write
[67635.212662] scsi host4: uas_eh_device_reset_handler start
[67635.213657] sd 4:0:0:0: [sdb] tag#28 uas_zap_pending 0 uas-tag 10 inflight: CMD
[67635.213658] sd 4:0:0:0: [sdb] tag#28 CDB: Write(16) 8a 00 00 00 00 01 1c 75 e8 18 00 00 04 00 00 00
[67635.340988] usb 1-9: reset high-speed USB device number 5 using xhci_hcd
[67635.490335] scsi host4: uas_eh_device_reset_handler success
Я оставил диск на неделю, а затем выполнил SMART-сканирование с помощью средства Seagate Bootable Tool, которое не показало никаких проблем.
Таким образом, я снова попытался скопировать данные. Диск теперь правильно монтировался, и я мог читать и записывать без проблем, так что я запустил команду rsync. Сначала я выполнил
rsync -avh source dest
Это работало, хоть и медленно, для около 20% данных, затем начались заикания, и я остановил передачу. Я перезапустил передачу, используя
rsync -avhW source dest --inplace
, чтобы попытаться ускорить её. Она шла отлично, намного быстрее, чем в первой попытке, но через несколько минут я получил ошибки:
rsync: recv_generator: failed to stat "..." : Input/output error (5)
rsync: write failed on "...": Input/output error (5)
rsync error: error in file IO (code 11) at receiver.c(393) [receiver=3.1.2]
В dmesg я вижу следующее:
[ 6772.890553] buffer_io_error: 1092735 callbacks suppressed
[ 6772.890556] Buffer I/O error on dev sdb2, logical block 874428, async page read
Как только это произошло, диск стал неотвечать. Спустя несколько минут я смог смонтировать его снова, и проверив папку, в которую я копировал данные, она оказалась совершенно пустой, включая файлы, которые были правильно скопированы во время моей первой попытки rsync. Я не пытался восстановить какие-либо данные, чтобы проверить, остались ли данные нетронутыми, я предполагаю, что повреждена только таблица файлов.
Файлы, которые копировались в момент сбоя, были типа .mat.gz, порядка 1 МБ каждый.
Как побочный комментарий, старый внешний жесткий диск Seagate недавно сломался, когда я копировал небольшие объёмы данных с него на этот компьютер (знаменитый клик смерти…), который также был моим первым жестким диском, который сломался.
Я не знаю, что с этим делать, проблема ли в том, как я копирую данные (может ли копирование данных повредить диски?), проблема ли в аппаратном обеспечении (компьютер, HDD, USB-SATA конвертер …) или это связано с Ubuntu… Обычно я использую Manjaro и никогда не сталкивался с такими проблемами.
Спасибо за всю вашу помощь.
Теперь я решил проблему. Я форматировал диск в ext4, а затем использовал команду
rsync -avhW source dest --inplace --exclude=".*/"
, где
-a — для архивирования, что сохраняет права собственности, разрешения и т.д.
-v — для подробного вывода, чтобы видеть, что происходит
-h — для человеко-читаемого формата, чтобы скорость передачи и размеры файлов было легче читать
-W — для копирования только целых файлов, без алгоритма delta-xfer, который должен снизить нагрузку на ЦП
--inplace говорит rsync не создавать временную копию файла, который должен быть передан, а немедленно копировать на место назначения. Это должно ускорить процесс.
--exclude=".*/" предназначено для исключения всех скрытых папок
Средняя скорость передачи для 392 ГБ составила 81.3 МБ/с, что намного быстрее, чем я добился до форматирования диска.
dmesg на этот раз был без ошибок.
Обратите внимание, что я не пытался создать новый раздел NTFS на диске, чтобы проверить, является ли проблема связанной с конкретным NTFS-разделом с завода, или же именно NTFS вызывает проблемы. Это, к сожалению, означает, что у меня нет полного ответа на то, в чём заключалась проблема. Я также не пытался увеличить пороги времени ожидания, но учитывая гораздо более высокую скорость передачи данных на этот раз, я бы сказал, что увеличение порогов времени ожидания в лучшем случае было бы обходным решением, а не исправлением.
Не совсем ответ, а скорее предположение: это может быть связано с индексаторами файлов.
Это случалось со мной с различными файловыми системами (exFAT, NTFS, ext4), разными типами внешних дисков разных брендов (WD HDD, Seagate HDD, SanDisk SSD) и ОС (Ubuntu, Kubuntu, MacOS). Даже если я отформатирую внешний диск и начну всё заново, то всё равно происходит то же самое. Однако я заметил, что проблема волшебным образом исчезает, когда индексаторы файлов выключены. Для Kubuntu это Baloo, а для MacOS это MDS.
Ответ или решение
Проблемы с копированием файлов на внешний жесткий диск: ошибки ввода-вывода и потеря данных
При переносе данных на внешний жесткий диск, такие как Seagate Expansion Portable Drive, часто возникают проблемы с ошибками ввода-вывода и потере данных. Давайте разберем основные аспекты, которые могут привести к таким проблемам, и предложим способы их решения.
1. Аппаратные проблемы
Одной из наиболее распространенных причин возникновения ошибок при копировании данных является проблема с аппаратным обеспечением. Поскольку вы используете новый внешний жесткий диск, важно убедиться в его исправности.
- Проверка SMART: Вы уже проводили SMART-тест с использованием инструмента Seagate. Чтобы получить полную картину состояния диска, можно использовать утилиты, такие как
smartmontools
илиGSmartControl
, которые предлагают более детальную диагностику. - Проблемы с USB-портами и кабелем: Проверьте, не повреждён ли USB-кабель, и попробуйте подключить диск к другому порту. USB 3.0 может иногда иметь несовместимость с устройствами, поэтому использование USB 2.0 может быть полезным.
- Проблемы с источником питания: Убедитесь, что ваш внешний диск получает достаточное питание. Некоторые диски требуют дополнительного питания, источником которого может выступать USB-порт.
2. Файловая система
Файловая система также может существенно влиять на производительность и стабильность копирования данных.
- NTFS: Если диск отформатирован в NTFS, возможно, возникли проблемы с совместимостью. Linux предоставляет доступ к NTFS через
ntfs-3g
, но иногда может произойти конфликт, особенно при большом количестве операций записи. Отказ от использования NTFS и форматирование в Ext4, как вы уже сделали, может улучшить стабильность. - Фрагментация файловой системы: Файлы в нескольких каталогах могут быть фрагментированы, что замедляет процесс копирования. Регулярное дефрагментация может помочь в улучшении производительности.
3. Совместимость программного обеспечения и процессов
Некоторые проблемы могут возникнуть из-за конфликта программного обеспечения или работы процесса, который параллельно использует диск.
- Индексаторы файлов: Вы упомянули про влияние индексаторов, таких как Baloo в Kubuntu и MDS в MacOS. Эти фоновые процессы могут блокировать доступ к файлам в момент их копирования, особенно если это происходит в реальном времени. Отключение индексаторов во время копирования может действительно помочь.
- Параллельные процессы: Убедитесь, что на компьютере не запущены другие крупные процессы, использующие диск. Мониторинг системы через
htop
илиiotop
даст представление об активности ввода-вывода.
4. Программные инструменты для копирования
Вы уже попробовали различные команды для копирования, такие как cp
и rsync
. Важно учитывать, как эти команды работают.
- Использование
rsync
: Ваша последняя команда с параметрами была эффективной. Однако стоит помнить, что--inplace
может привести к повреждению данных, если диск с ошибками. Рекомендуется использовать эту опцию только тогда, когда убедитесь в стабильности диска.
Пример команды с текущими оценками:
rsync -avhW --exclude=".*" source destination
5. Резервное копирование
Резервное копирование данных является важной частью управления данными. Всегда имейте резервный вариант копируемых файлов на другом носителе, чтобы избежать потери информации.
Заключение
Проблемы с копированием файлов на внешний жесткий диск могут возникать по множеству причин, включая аппаратные, файловые системы и программное обеспечение. Ваш случай показывает, что переработка и тестирование различных аспектов вполне может привести к решению проблемы. Важно следовать рекомендациям по диагностике и проверке, а также учитывать опыт других пользователей для повышения надежности ваших резервных копий.
Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за профессиональной помощью.