понедельник, 1 июня 2015 г.

Как переформатировать внешний винчестер для использования с FreeBSD

Предыстория

Решил я прикупить, для резервного копирования исходников [цифровых фотографий] внешний жесткий диск, подключающийся через USB. Выбор пал на STDR1000200. Это Seagate'овский "винт" на терабайт, который сам переключается между версиями USB 2 и 3.

Проблема

Такие "винты" на заводе форматируют или в FAT или в NTFS. Мне достался NTFS. Типа, для "подоконников" счастье: воткнул и радуйся. Для "маков", вроде как, драйвер загружен на диск. Однако, ни Windows, ни Mac я дома не держу. Флешки с NTFS монтирую с помощью ntfs-3g или mount_msdosfs, если данные записывать не надо.

В принципе, может показаться, что все нормально: драйвер есть, автоматическое монтирование настроено, совместимость, таким образом, обеспечивается. Но, не тут-то было: скорость копирования исключительно невысока [20 NEFок (20 Meg каждая) - минут 10] из за большого количества сбоев [примерно 5 на те же 20 файлов], вызывающих ожидание таймаутов. Короче, нервотрепка.

Что, говорите? Надо было искать информацию в сети, докапываться до причин, обновить ntfs-3g (не катит, обновлял)?.. Надо было, пытался искать, даже находил некоторые идеи о том как частично закостылировать это дело. Не успел: NTFS слетела. Вот реально: пустой диск (хотя данные-то я заливал туда, гигов 5), запись делать не позволяет; потом и подключаться перестал ( я даже не чинил ;). Психанул я и решил отформатировать в "родную" файловую систему.

Результат

Вы знаете, подсоединение к рабочей станции FreeBSD внешнего винчестера, отформатированного в 165-ю систему (совместима с FreeBSD, NetBSD, 386BSD) процесс приятный: подключается самостоятельно, без костылей и сообщений о том, что том слишком большой. Примерно так же как NTFS-ный внешний винт к Windows. Копирование выполняется быстро [два с половиной гигабайта - примерно за три минуты] и без ошибок. В общем, родной формат, тут ничего не скажешь.

Только вот к компьютерам с Windows крайне не рекомендую такие диски подключать, особенно во время загрузки, так как "форточка" может принять диск с UFS2 за диск с битой NTFS и начнет его "восстанавливать" (без предупреждения!), у нее не получится, но данные профакапятся. Я уже попадался. Не допускайте, чтобы Windows проверяла тома с UFS2! Она все-равно не сможет прочитать данные с этих дисков. Я вообще не буду свой никуда кроме фряхи втыкать :)

Как отформатировать

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

1. Разметка

Я провожу в интерактивном режиме, так как так безопаснее.
Команда (от суперпользователя):
# fdisk -i /dev/da1
где da1 - файл форматируемого диска (можно подсмотреть на первой консоли при подключении устройства), не ошибитесь здесь, пожалуйста (если что, я - не виноват, серьезно).
Далее я привожу мой диалог с fdisk. Ключевой момент [он один: изменение системы первого раздела с 0x07 (NTFS) на 0xa5 (UFS)] выделен синим, важное подчеркнуто, нестандартные ответы - красные.
******* Working on device /dev/da1 *******
parameters extracted from in-core disklabel are:
cylinders=121601 heads=255 sectors/track=63 (16065 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=121601 heads=255 sectors/track=63 (16065 blks/cyl)

Do you want to change our idea of what BIOS thinks ? [n] 
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 7 (0x07),(NTFS, OS/2 HPFS, QNX-2 (16 bit) or Advanced UNIX)
    start 2048, size 1953519616 (953867 Meg), flag 0
    beg: cyl 0/ head 32/ sector 33;
    end: cyl 1023/ head 254/ sector 63
Do you want to change it? [n] y

The static data for the slice 1 has been reinitialized to:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 1953520002 (953867 Meg), flag 80 (active)
    beg: cyl 0/ head 1/ sector 1;
    end: cyl 768/ head 254/ sector 63
Supply a decimal value for "sysid (165=FreeBSD)" [165]
Supply a decimal value for "start" [63]
Supply a decimal value for "size" [1953520002]
Explicitly specify beg/end address ? [n]
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 1953520002 (953867 Meg), flag 80 (active)
    beg: cyl 0/ head 1/ sector 1;
    end: cyl 768/ head 254/ sector 63
Are we happy with this entry? [n] y

The data for partition 2 is:
<UNUSED>
Do you want to change it? [n]
The data for partition 3 is:
<UNUSED>
Do you want to change it? [n]
The data for partition 4 is:
<UNUSED>
Do you want to change it? [n]
Partition 1 is marked active
Do you want to change the active partition? [n]

We haven't changed the partition table yet.  This is your last chance.
parameters extracted from in-core disklabel are:
cylinders=121601 heads=255 sectors/track=63 (16065 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=121601 heads=255 sectors/track=63 (16065 blks/cyl)

Information from DOS bootblock is:
1: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 1953520002 (953867 Meg), flag 80 (active)
    beg: cyl 0/ head 1/ sector 1;
    end: cyl 768/ head 254/ sector 63
2: <UNUSED>
3: <UNUSED>
4: <UNUSED>
Should we write new partition table? [n] y

2. Создание системы

Одна команда. У меня была такая:
# newfs -L photo -U -o time /dev/da1s1
где -L photo - метка системы,
-U - включение soft updates
-o time - оптимизация скорости
/dev/da1s1 - файл форматируемого раздела; я, для простоты, использовал конфигурацию на единственном разделе, таким образом, получилось отформатировать как на заводе, но только не в NTFS, а в UFS2, которая предана FreeBSD и не портит нервы при работе с ней.

Всё!

Комментариев нет:

Отправить комментарий