Исправляем ошибки форматирования диска

HDDБлагодаря преимуществам журналируемой файловой системы в Mac OS X, вероятность повреждения и потери данных довольно мала, но всё же бывают случаи, когда доступ к диску получить не удается. Обычно возможностей Дисковой утилиты вполне хватает, чтобы обнаружить и исправить ошибки диска, или, как крайнее средство, отформатировать его, но всё же иногда и этого оказывается недостаточно.

При появлении подобных проблем ваш диск может отображаться в Finder, но его содержимое будет недоступно, или же он может присутствовать только в окне Дисковой утилиты, а при попытке его подключить или взаимодействовать с ним иным образом возникают различные сообщения об ошибках, например, «ресурс занят» или «не удалось отключить диск».

К сожалению, во многих случаях такое поведение может означать, что диск неисправен и его необходимо заменить. Однако, если диск работал и продолжает работать бесшумно, и не проявляются иные признаки аппаратных неисправностей, можно предположить, что проблема заключается в ошибках форматирования. В этом случае можно воспользоваться другой операционной системой для форматирования диска. Для этого подойдет Windows, установленная на ваш Mac через Bootcamp, виртуальная машина, если вы пользуетесь Parallels Desktop или иными похожими программами, или же вы можете подключить диск как внешний к персональному компьютеру под управлением Windows.  Однако, не у всех под рукой есть устройство или виртуальная машина под управлением другой операционной системы.

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

Файлы устройств в OS X

Файлы устройств в OS X — это наборы драйверов для определенных устройств, которые хранятся в в скрытой папке «dev». С их помощью осуществляется взаимодействие с этими устройствами посредством наборов соответствующих команд (открытие, чтение, запись, закрытие и прочие). Это позволяет программам обращаться к устройствам без необходимости пользователю инициировать каждое действие вручную и дает возможность пользоваться более удобными инструментами (к примеру, файловыми менеджерами или Дисковой утилитой). Загрузочный диск в вашем устройстве всегда будет пронумерован в первую очередь, поэтому соответствующему ему файлу будет присвоено имя «disk0», а полный путь к нему будет выглядеть так: «/dev/disk0». Вы всегда можете посмотреть список накопителей подключенных к вашему компьютеру, введя в Терминале команду diskutil list А узнав имя файла интересующего вас диска вы можете запросить информацию о нем при помощи команды diskutil info /dev/disk1

diskutil list

В OS X, как и в остальных Unix системах, существуют специальные файлы, которые, вместо того чтобы предоставлять доступ к определенным устройствам, дают дополнительные возможности. Например, «/dev/null» удаляет все данные которые будут ему отправлены (часто используется при написании скриптов и программ), а «/dev/random» при обращении к нему выдает случайные данные. Вы можете посмотреть, как работает «/dev/random», введя в Терминале команду cat /dev/random Для отмены команды зажмите сочетание клавиш Control + C

devrandom

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

  1. Запустите Терминал из папки «Утилиты» и войдите в режим администратора при помощи команды sudo su
  2. Чтобы отобразился список доступных устройств и соответствующих им специальных файлов, введите команду diskutil list
  3. В полученной таблице найдите проблемный диск (например, ориентируясь по объему и названиям логических разделов) и определите соответствующий ему файл устройства
  4. Начните запись произвольных данных на проблемный диск при помощи команды cat /dev/random > /dev/disk1 заменив /dev/disk1 на файл проблемного устройства, полученный на предыдущем шаге.
  5. При успешном вводе команды курсор перейдет на новую строку, которая останется пустой. В это время система как раз и производит запись данных на диск. Через несколько минут прервите выполнение команды сочетанием клавиш Control + C.

Весьма вероятно, что после ввода последней команды возникнет ошибка с сообщением, что запрашиваемый ресурс уже используется. Часто это означает, что система успела подключиться к устройству и, вероятно, «застопорилась» в процессе его монтирования.

  1. При открытом окне Терминала нажмите на клавиатуре курсорную клавишу ↑ (Вверх), чтобы подготовить повторный ввод предыдущей команды
  2. Отсоедините диск от компьютера
  3. Повторно подключите диск и сразу же нажмите клавишу ⏎Enter для ввода команды.

Получиться может не с первого раза, поэтому стоит попробовать несколько раз, пока курсор не переместится на новую строку, которая останется пустой.

Вы можете попробовать отключить и подключить диск через Терминал, что может быть полезно, если проблема связана не с внешним, а с внутренним диском.

Для того чтобы отключить диск введите команду diskutil unmountDisk /dev/disk1 заменив /dev/disk1 на файл проблемного устройства

Подключить диск можно командой diskutil mountDisk /dev/disk1

Вы также можете объединить эти две команды и добавить команду на запись произвольных даных на диск diskutil unmountDisk /dev/disk1;diskutil mountDisk /dev/disk1;cat /dev/random > /dev/disk1

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

После этого подождите 2-3 минуты и нажмите сочетание клавиш Control + C, чтобы прервать выполнение команды. В результате, если проблема действительно заключалась в ошибках форматирования, проблемный диск должен отобразиться в Дисковой утилите как пустой, и вы сможете отформатировать его и при необходимости разбить на разделы, чтобы подготовить к дальнейшему использованию с Mac OS X.

За оригинальный материал, послуживший основой при написании данной статьи, в очередной раз благодарим Кристофера Кесслера.

О Дмитрий Архипов

Специалист технической поддержки пользователей.
Метки , , , , , , , . Закладка постоянная ссылка.