4

Я внезапно начал получать ошибки при копировании файлов на мой внешний жесткий диск. Существует много свободного места: 1,64 ТБ свободного места, 3,63 ТБ. Я смог завершить копирование файла, выполнив одно из двух действий:

  1. Сначала удалите несколько больших файлов с внешнего жесткого диска
  2. ИЛИ поместив жесткий диск в другой корпус USB

Кроме того, средство проверки ошибок Windows 8 завершается с ошибкой, если не используется другой USB-корпус (в этом случае удаление больших файлов не помогает). Средство командной строки CHKDSK всегда работает и не сообщает об ошибках на диске.

Как я могу подтвердить, что проблема была в корпусе жесткого диска USB? (Я хотел бы подтвердить, что проблема не была с моим жестким диском, и это безопасно продолжать использовать.) И как определить емкость, поддерживаемую корпусом жесткого диска USB?


подробная информация:

Ошибка при копировании большого файла:

  • Код 0x80070057 представляется довольно общим кодом.
  • Сразу после получения этой ошибки я успешно скопировал файл размером 2 ГБ. Я попытался скопировать тот же файл снова (всего 4 ТБ) и получить ту же ошибку.
  • В журналах системных событий это, по-видимому, регистрируется каждый раз при сбое копирования: «Теневые копии тома D: были прерваны из-за сбоя ввода-вывода на томе D:».

Ошибка средства проверки Windows 8:

  • После сбоя открывается окно просмотра событий Windows с ошибкой, связанной с теневой копией тома. (Забыл записать подробности об этом)

Оборудование:

  • Корпус жесткого диска Enermax Jazz 3.5 USB (этот вызывает ошибки; это довольно старая модель.)
  • Док-станция для жесткого диска Leto DATACLONE3.0 USB (в этом, похоже, нет ошибок; гораздо более свежая модель.)
  • Western Digital 4TB ЗЕЛЕНЫЙ жесткий диск WD40EZRX

Файловая система:

  • GPT (диск MBR 2 ТБ был клонирован на диск 4 ТБ, затем таблица разделов преобразована в GPT)
  • NTFS

система:

  • Windows 8
  • Lenovo X1 Carbon ноутбук

обновление: Больше подробностей из зарегистрированного события "Теневые копии тома D: были прерваны ...":

System 
  - Provider 
   [ Name]  volsnap 
  - EventID 14 
   [ Qualifiers]  49158 
   Level 2 
   Task 0 
   Keywords 0x80000000000000 
  - TimeCreated 
   [ SystemTime]  2015-01-24T21:23:54.296013300Z 
   EventRecordID 1063256374 
   Channel System 
   Computer X1-Carbon 
   Security 
- EventData 
   \Device\HarddiskVolumeShadowCopy6 
   D: 
   D: 
   0000000003003000000000000E0006C00A0000000D0000C002000000000000000000000000000000 

обновление 2:

Ошибка монтирования диска 4 ТБ в Ubuntu с док-станцией, работающей из Windows:

Error mounting /dev/sdc1 at /media/daniel/DeskStar: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sdc1" "/media/daniel/DeskStar"' exited with non-zero exit status 13: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Failed to read NTFS $Bitmap: Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.

Диск не указан в fdisk -l , поэтому не могу попробовать dd ... Я попытался подключиться к Windows: нет проблем; Средство проверки ошибок свойств диска Windows не сообщает об ошибках.

Также:

Пробовал использовать dd на (проблема?) корпус с другим жестким диском на 2 ТБ:

  • Нет ошибок чтения skip=0
  • Нет ошибок чтения skip=SOMEWHERE_NEAR_MIDDLE_OF_DRIVE
  • Ошибки чтения секторов в конце или в конце диска:
daniel@computer:~$ sudo dd bs=512 if=/dev/sdb1 of=test skip=3907026942 count=1
dd: ‘/dev/sdb1’: cannot skip: Invalid argument
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000210598 s, 0.0 kB/s

4 ответа4

4

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

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

На диске FAT32 вы можете попытаться заполнить диск небольшими файлами, каждый размером 8 КБ, до тех пор, пока "доступная" область не будет заполнена и диск не станет перезаписываемым. Но диск NTFS, и, тем не менее, метод не очень точный или определенный.

Если это вообще возможно, я бы смонтировал диск в дистрибутиве Linux. В этот момент вы можете попробовать прочитать диск по одному сектору за раз:

fdisk -l

скажет вам, сколько 512-байтовых блоков есть на внешнем диске. затем

dd bs=512 if=/dev/sdc of=test skip=NNNNN count=1

запросит чтение сектора NNNNN (на основе одного :-)).

Если речь идет о пределе NNNNN, вы заметите, что:

N=1         it works
N=MAX_NUM   it fails
N=MAX_NUM/2 it fails

...

так что вы можете начать с классического алгоритма деления пополам и определить, где находится критический сектор "C" (любой сектор до C читабелен, любой после нет). Если такой сектор существует, у вас либо невероятно странное повреждение оборудования, либо доказательство того, что вы искали вину корпуса.

Обновление - поиск границы путем деления пополам: пример

Допустим, диск занимает 4 ТБ, то есть 8 000 000 000 секторов. Мы знаем, что сектор 1 читабелен, а сектор 8 миллиардов - нет. Пусть READABLE будет 1, пусть UNREADABLE будет 8. Тогда алгоритм выглядит так:

 let TESTING be (READABLE + UNREADABLE)/2
 if sector TESTING is readable then READABLE becomes equal to TESTING
 else, UNREADABLE becomes equal to TESTING.
 Lather, rinse, repeat with the new values of (UN)READABLE.
 When two consecutive values of TESTING are obtained, that's your boundary.

Давайте представим, что граница лежит в секторе 3,141,592,653 из-за какой-то странной ошибки в корпусе.

 first pass: testing = (1 + 8000000000)/2 = 4000000000.
 4,000,000,000 is unreadable, so replace 8,000,000,000 with 4,000,000,000
 second pass: testing (1 + 4M)/2 = 2M
 sector 2M is readable, so replace 1 with 2,000,000,000
 third pass: testing (2M + 4M)/2 = 3M
 sector 3,000,000,000 is readable
 fourth pass: testing (3M + 4M)/2 = 3,500,000,000 which is UNREADABLE
 fifth: (3 + 3.5) / 2 = 3,250,000,000 UNREADABLE
 ...

Таким образом, READABLE и READABLE преследуют неизвестную границу все ближе и ближе, с обеих сторон. Когда они достаточно близко, вы можете даже пойти и попробовать все секторы между ними.

Чтобы найти границу, нужно прочитать только log2(max - min) = log2(4TB - 0) = log2(4TB) = log2(2 40) = 40 (на самом деле я думаю, что, возможно, 42) секторов. Учитывая 30-дюймовую задержку сброса на корпусе, когда возникает ошибка чтения, это должно быть максимум 20 минут; вероятно, намного меньше.

Если у вас есть граница B, чтобы подтвердить, что она является границей, вы можете выполнить последовательное чтение больших кусков перед B (это не займет много времени), возможно, один мегабайт на каждый гигабайт или около того; и затем случайная выборка секторов за пределами B. Например, первые 4 * 63 сектора за границей, затем один сектор каждые 3905 (или каждый RAND (4000, 4100)), чтобы попытаться избежать удара всегда одним и тем же магнитным диском.

Но на самом деле, если вы обнаружите поведение, похожее на границу, и подтвердите, что в другом корпусе такой границы нет - ну, я бы объявил случай (en) закрытым.

1

ОК, думаю, я понял это:

  • Изучите журнал dmesg чтобы проверить адресную память, поддерживаемую устройством USB.
  • Linux, похоже, запрещает использование жесткого диска, если он превышает адресную память USB-устройства. (С несколькими ошибками).
  • Windows позволяет использовать жесткий диск, даже если он превышает адресную память USB-устройства. (Пока не будет достигнут предел адреса.) (Так что проблема была ... Окна?)

Один и тот же диск, разные корпуса дают две разные заявленные емкости:

  • 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
  • 3519069872 512-byte logical blocks:(1.80 TB/1.63 TiB)

Полная информация:

1. dmesg при подключении "современной" док-станции с накопителем 4TB:

[93507.922275] usb 1-1.2: new high-speed USB device number 17 using ehci-pci
[93508.087948] usb 1-1.2: New USB device found, idVendor=067b, idProduct=2773
[93508.087959] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[93508.087964] usb 1-1.2: Product: ATAPI-6 Bridge Controller
[93508.087969] usb 1-1.2: Manufacturer: Prolific Technology Inc.
[93508.087973] usb 1-1.2: SerialNumber: 0123456789000000110
[93508.088621] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[93508.089092] scsi24 : usb-storage 1-1.2:1.0
[93509.087318] scsi 24:0:0:0: Direct-Access     Prolific ATAPI-6 Bridge C MPAO PQ: 0 ANSI: 0
[93509.087836] sd 24:0:0:0: Attached scsi generic sg2 type 0
[93509.088684] sd 24:0:0:0: [sdb] Very big device. Trying to use READ CAPACITY(16).
[93509.089837] sd 24:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[93509.090945] sd 24:0:0:0: [sdb] Write Protect is off
[93509.090958] sd 24:0:0:0: [sdb] Mode Sense: 03 00 00 00
[93509.092819] sd 24:0:0:0: [sdb] No Caching mode page found
[93509.092832] sd 24:0:0:0: [sdb] Assuming drive cache: write through
[93509.094321] sd 24:0:0:0: [sdb] Very big device. Trying to use READ CAPACITY(16).
[93509.100539] sd 24:0:0:0: [sdb] No Caching mode page found
[93509.100545] sd 24:0:0:0: [sdb] Assuming drive cache: write through
[93509.170090]  sdb: sdb1
[93509.171931] sd 24:0:0:0: [sdb] Very big device. Trying to use READ CAPACITY(16).
[93509.176059] sd 24:0:0:0: [sdb] No Caching mode page found
[93509.176078] sd 24:0:0:0: [sdb] Assuming drive cache: write through
[93509.176086] sd 24:0:0:0: [sdb] Attached SCSI disk

2. dmesg при подключении старого корпуса с диском на 4 ТБ:

[89939.561869] usb 1-1.2: new high-speed USB device number 14 using ehci-pci
[89939.656581] usb 1-1.2: New USB device found, idVendor=152d, idProduct=2338
[89939.656592] usb 1-1.2: New USB device strings: Mfr=1, Product=2,SerialNumber=5
[89939.656598] usb 1-1.2: Product: USB to ATA/ATAPI Bridge
[89939.656602] usb 1-1.2: Manufacturer: JMicron
[89939.656606] usb 1-1.2: SerialNumber: 0613316A1498
[89939.658334] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[89939.658805] scsi20 : usb-storage 1-1.2:1.0
[89940.659147] scsi 20:0:0:0: Direct-Access     HGST HMS 5C4040ALE640   A580 PQ: 0 ANSI: 2 CCS
[89940.659959] sd 20:0:0:0: Attached scsi generic sg2 type 0
[89940.661373] sd 20:0:0:0: [sdb] 3519069872 512-byte logical blocks:(1.80 TB/1.63 TiB)
[89940.662410] sd 20:0:0:0: [sdb] Write Protect is off
[89940.662424] sd 20:0:0:0: [sdb] Mode Sense: 00 38 00 00
[89940.663438] sd 20:0:0:0: [sdb] Asking for cache data failed
[89940.663446] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[89940.667752] sd 20:0:0:0: [sdb] Asking for cache data failed
[89940.667761] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[89940.684862]  sdb: unknown partition table
[89940.687887] sd 20:0:0:0: [sdb] Asking for cache data failed
[89940.687893] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[89940.687897] sd 20:0:0:0: [sdb] Attached SCSI disk

0

Есть несколько способов проверить ваш жесткий диск. Загрузите программу под названием "HDTune". Это платная программа, но она имеет пробную версию, которая длится 30 дней с полной функциональностью. Вы можете использовать его для проверки поврежденных секторов, проверить состояние жесткого диска. В любом случае у вас были плохие сектора, вы можете попытаться исправить это с помощью регенераторов HDD, Hirens Download, которые я лично использую.

Убедитесь, что у вас нет вставленных жестких дисков, кроме тех, которые вы хотите протестировать. он загрузочный, вы можете записать его на CD или USB-накопитель.

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

-1

Странно, что выдает ошибку у файлов выше 4ГБ. Поскольку ФС является NTFS, ограничение исключено.

Я подозреваю, что это ошибка рассинхронизации буфера.

Попробуйте это: перейдите в regedit -> HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\System Создайте новое значение DWORD с именем CopyFileBufferedSynchronousIo . Измените его значение по умолчанию с 0 на 1.

Другие вещи для рассмотрения: у вас есть очень большие пути и имена файлов (например, более 255 символов)? Используете ли вы дополнительные языки в операционной системе или отличные от региональных по умолчанию / клавиатура или настройки формата времени / даты? (Как бы странно это ни звучало, они могут разбить достаточно вещей в окнах). С другой стороны, контроллер внешнего диска может быть не в состоянии адресовать более 2,0 ТБ. -edit- Можете ли вы опубликовать скриншот точно используемого места?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .