Обратитесь к Руководству по форматированию дисков на сервере www.FreeBSD.org.
Самый лучший способ заключается в переустановке ОС на новый диск и последующем переносе данных пользователей. Это очень рекомендуется делать, если вы следовали ветке -stable в течение более одного релиза или обновляли релиз, а не устанавливали новый. Вы можете установить программу booteasy на оба диска с помощью команды boot0cfg(8) и выполнять загрузку с любого из них до тех пор, пока не будете удовлетворены новой конфигурацией системы. Пропустите следующий абзац, чтобы перейти к вопросу переноса данных после этой операции.
Если вы решили не делать новой установки, то вам нужно разбить на разделы и разметить новый диск с помощью /stand/sysinstall или fdisk(8) и disklabel(8). Вы также должны установить на оба диска программу booteasy с помощью boot0cfg(8), чтобы иметь возможность выполнять загрузку как старой, так и новой системы после выполнения копирования. Обратитесь к руководству по форматированию носителей за подробным описанием этого процесса.
Итак, после подготовки диска вы можете переносить данные. К сожалению, вы не можете просто скопировать данные. Такие вещи, как файлы устройств (в каталоге /dev), флаги и ссылки будут этому мешать. Вам нужно использовать инструменты, которые работают с такими случаями, а именно dump(8). Хотя рекомендуется выполнять перенос данных в однопользовательском режиме, это не обязательное условие.
Вы не должны использовать ничего, кроме dump(8) и restore(8) для переноса корневой файловой системы. Команда tar(1) может сработать, а может и не сработать. Также вы должны использовать dump(8) и restore(8) при переносе одного раздела в другой пустой раздел. Последовательность шагов при использовании программы dump для переноса данных раздела в новый раздел такова:
выполните команду newfs над новым разделом.
смонтируйте его во временный каталог.
перейдите в этот каталог.
Выполните команду dump над старым разделом, направив вывод в новый раздел.
Например, если вы собираетесь перенести корневую файловую систему на устройство /dev/ad1s1a с использованием каталога /mnt в качестве временной точки монтирования, то это делается так:
# newfs /dev/ad1s1a # mount /dev/ad1s1a /mnt # cd /mnt # dump 0af - / | restore xf -
Переразбиение разделов с использованием dump требует несколько больше усилий. Для объединения раздела типа /var с его вышестоящим разделом, создайте новый раздел, достаточно большой для размещенияих их обоих, переместите вышестоящий раздел так, как это описано выше, а затем переместите нижестоящий раздел в пустой каталог, созданный при первом перемещении:
# newfs /dev/ad1s1a # mount /dev/ad1s1a /mnt # cd /mnt # dump 0af - / | restore xf - # cd var # dump 0af - /var | restore xf -
Для отделения каталога от вышестоящего, скажем, для размещения /var в собственном разделе, которого не было, создайте оба раздела, затем смонтируйте нижестоящий раздел в подходящий каталог во временную точку монтирования, а затем переместите старый единый раздел:
# newfs /dev/ad1s1a # newfs /dev/ad1s1d # mount /dev/ad1s1a /mnt # mkdir /mnt/var # mount /dev/ad1s1d /mnt/var # cd /mnt # dump 0af - / | restore xf -
Вы можете использовать cpio(1), pax(1), tar(1) вместо dump(8) для данных пользователей. На момент написания этого документа было известно, что они теряют информацию о флагах файлов, так что используйте их с осторожностью.
В процессе установки вы можете выбрать два различных метода разбиения вашего диска. По умолчанию это делается в режиме совместимости с другими операционными системами на этой же машине с использованием записей в таблице разделов fdisk (то, что называется "слайсом" во FreeBSD), со слайсом (разделом), выделенным FreeBSD. Опционально, вы можете выбрать установку менеджера загрузки для переключения между операционными системами. Либо вы можете выделить диск полностью под FreeBSD, не заботясь о совместимости с другими операционными системами.
Почему же этот режим называется "dangerous"? Дело в том, что диск в этом режиме не будет содержать того, что обычные утилиты для ПК распознают как таблицу разделов. В зависимости от того, насколько хорошо они написаны, они могут сообщить вам об этом, как только обнаружат такой диск, или, что гораздо хуже, могут запортить загрузчик BSD, даже не спрашивая и не сообщая об этом. К тому же известно, что разметка диска в режиме "dangerously dedicated" вводит в заблуждение BIOS многих производителей, включая AWARD (которые используются в компьютерах HP Netserver, Micronics и многих других) и Symbios/NCR (производителя популярных SCSI-контроллеров серии 53C8xx). И это не полный список, есть ещё другие производители. Симптомами подобных проблем является сообщение ``read error'', выводимое загрузчиком FreeBSD, когда он не может найти сам себя, а также зависания системы при загрузке.
Тогда зачем вообще нужен этот режим? Он экономит всего лишь несколько килобайт дискового пространства и может вызвать серьёзные проблемы при новой инсталляции. Причиной появления этого режима является желание избежать появления одной из самых распространённых проблем, с которой сталкиваются новички - соответствие параметров BIOS и реальных параметров диска.
"Параметры" диска являются устаревшей концепцией, но она лежит в основе работы BIOS с диском. Когда программа установки FreeBSD создаёт слайсы, она записывает их расположение в соответствии с тем, как с ними будет работать BIOS. Если это делается неправильно, вы не сможете выполнить загрузку системы.
Режим "dangerously dedicated" пытается обойти это, упрощая решение данной проблемы. Иногда он делает это правильно. Однако это значит, что его нужно использовать только как последнюю альтернативу - есть способы получше, решающие проблему в 99 случаях из 100.
Итак, как избежать использования режима "DD" во время установки? Сначала запишите параметры диска, которые сообщает BIOS. Вы можете выяснить это, заставив ядро вывести эти параметры при загрузке, указав -v в приглашении boot:, или используя boot -v в загрузчике. Перед тем, как запустится программа установки, ядро выведет параметры, используемые BIOS. Не волнуйтесь - подождите запуска программы установки, а затем воспользуйтесь скроллингом, чтобы посмотреть значения этих параметров. Как правило, BIOS нумерует диски в том же порядке, что и FreeBSD, сначала IDE, затем SCSI.
Когда вы разбиваете диск на слайсы, проверьте, что параметры диска, выводимые в окне программы FDISK, корректны (то есть они соответствуют параметрам BIOS); если это не так, воспользуйтесь командой g, чтобы их исправить. Вы можете это сделать, если на диске нет абсолютно ничего или если этот диск был перенесён с другой системы. Заметьте, что это касается только загрузочного диска; FreeBSD прекрасно разберётся с остальными дисками, которые могут у вас быть.
Как только вы добились соответствия параметров диска в BIOS и FreeBSD, скорее всего, проблем у вас больше не будет, и использовать режим "DD" не потребуется. Если, однако, страшной сообщение ``read error'' продолжает появляться при загрузке, самое время перекреститься и попробовать этот режим - терять вам больше нечего.
Чтобы вернуть диск из режима "dangerously dedicated" к нормальному режиму использования, есть два способа. Первый заключается в том, что вы записываете достаточное количество байтов NULL поверх MBR, чтобы любой инсталлятор думал, что это чистый диск. Это можно сделать, например, командой
# dd if=/dev/zero of=/dev/rda0 count=15
Другой способ - недокументированной командой DOS
C:\> fdisk /mbr
проинсталлировать новую MBR, удалив загрузчик BSD.
9.4. На каких разделах можно без опаски использовать систему softupdates? Я слышал, что мягкие обновления на / могут приводить к проблемам.
Краткий ответ: обычно вы можете использовать мягкие обновления без опаски на всех разделах.
Подробный ответ: Были несколько аргументов против использования мягких обновлений на корневом разделе. Мягкие обновления имеют две характеристики, которые этому способствуют. Во-первых, раздел с мягкими обновлениями имеет мало шансов потери данных по время аварийного остановва системы. (Раздел не будет попорчен; просто будут потеряны данные.) также мягкие обновления могут приводить к временной нехватке пространства.
При использовании мягких обновлений ядро может задерживать до тридцати секунд реальную запись изменений на физический диск. Если вы удаляете большой файл, он остается на диске, пока ядро не выполнит удаления на самом деле. Это может привести к очень простой проблеме. Предположим, что вы удалили один большой файл и тут же создали другой большой файл. Первый большой файл еще не удален реально с физического диска, так что на диске может не оказаться достаточного пространства для второго большого файла. Вы получите ошибку, говорящую о том, что на разделе нет достаточного пространства, хотя вы точно знаете, что только что освободили его большой объем! Если вы попробуете еще раз выполнить операцию секундами позже, создание файла сработает так, как это и ожидалось. Это не раз заставляло пользователей почесать голову и дважды проверить свое психическое здоровье, файловую систему FreeBSD и оба этих объекта.
Если система может аварийно остановиться после того, как ядро примет набор данных для записи на диск, но перед тем, как данные реально запишутся, то данные могут потеряться или оказаться испорченными. Такой риск весьма мал, но в общем-то, управляем. Использование кэширование записи на IDE очень сильно увеличивает этот риск; настоятельно рекомендуется выключить кэширование записи для IDE при использовании мягких обновлений.
Эти проблемы влияют на все разделы, использующие мягкие обновления. Итак, что это означает для корневого раздела?
Жизненно важная информация на корневом разделе меняется очень редко. Файлы, такие, как /kernel и содержимое /etc меняется только при обслуживании системы, или когда пользователи меняют свои пароли. Если в системе произойдет сбой в период тридцатисекундного окна после выполнения такого изменения, возможно, что данные окажутся потерянными. Этот риск незначителен для большинства применений, но вы должны иметь в виду, что он есть. Если ваша система не может принять такой риск, не используйте мягкие обновления с корневой файловой системой!
/ традиционно является одним из самых маленьких разделов. По умолчанию FreeBSD размещает каталог /tmp в /. Если у вас забит /tmp, вы можете встретиться с возникающими время от времени проблемами с исковым пространством. Создание символической ссылки /tmp, указывающей на /var/tmp, решит эту проблему.
Симптом выглядит так:
# ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
Это сообщение обычно выдаётся, когда вы пытаетесь объединить разделы c, по умолчанию имеющие тип unused. Драйвер ccd требует, чтобы используемые разделы имели тип FS_BSDFFS. Отредактируйте метки тех дисков, которые вы хотите использовать, сменив типы разделов на 4.2BSD.
Симптом выглядит так:
# disklabel ccd0 (здесь выводится информация о диске, пробуем отредактировать метку) # disklabel -e ccd0 (редактирование, сохранение, выход) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label
Это происходит из-за того, что метка диска, возвращаемая ccd, на самом деле "ненастоящая", не соответствующая реально располагающейся на диске. Вы можете решить эту проблему, явно записав эту метку обратно следующим образом:
# disklabel ccd0 > /tmp/disklabel.tmp # disklabel -Rr ccd0 /tmp/disklabel.tmp # disklabel -e ccd0 (теперь это будет работать)
Компакт-диски с файловой системой UFS могут быть замонтированы без всяких проблем. Монтирование файловых систем Digital UNIX или других систем, поддерживающих UFS, может быть более сложным, в зависимости от особенностей разбиения диска конкретной операционной системой.
Начиная с версии 2.2 FreeBSD имеет поддержку разделов ext2fs. За дополнительной информацией обратитесь к странице справочника mount_ext2fs(8).
Существует драйвер, позволяющий под FreeBSD получить доступ к NTFS в режиме "только для чтения". Посмотрите учебник от Марка Овенса (Mark Ovens) по адресу http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html.
Нас интересует любая дополнительная информация по этому вопросу.
Вторичные разделы DOS находятся после ВСЕХ первичных разделов. Например, если раздел "E" является вторым разделом DOS на втором диске SCSI, вам нужно создать специальные файлы для пятого "слайса" в каталоге /dev, затем смонтировать /dev/da1s5:
# cd /dev # sh MAKEDEV da1s5 # mount -t msdos /dev/da1s5 /dos/e
Да; посмотрите порт security/cfs.
Эта процедура выглядит по разному для версий FreeBSD 2.2.x и 3.x (с трёхступенчатым процессом загрузки системы).
Идея заключается в копировании первого сектора корневого раздела FreeBSD в файл, находящийся в разделе DOS/NT. Предположим, что вы назвали этот файл c:\bootsect.bsd (по аналогии с c:\bootsect.dos), после чего можете отредактировать файл c:\boot.ini, чтобы он выглядел примерно так:
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT" C:\BOOTSECT.BSD="FreeBSD" C:\="DOS"
Для систем 2.2.x предполагается, что DOS, NT, FreeBSD или другая операционная система были установлены в их соответствующие разделы fdisk на одном и том же диске. Этот пример тестировался с системой, в которой DOS и NT находились на первом разделе fdisk, а FreeBSD на втором. Кроме того, FreeBSD была настроена на загрузку с её раздела, а не из MBR.
Смонтируйте дискету в формате DOS (если вы используете NTFS) или раздел FAT, скажем, в каталог /mnt.
# dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1
Перезапустите DOS или NT. Пользователи NTFS должны скопировать файл bootsect.bsd и/или bootsect.lnx с дискеты на диск C:\. Измените атрибуты (права) на файл boot.ini следующим образом:
C:\> attrib -s -r c:\boot.ini
Отредактируйте этот файл, добавив соответствующие строки из примерного boot.ini выше, и восстановите атрибуты:
C:\> attrib +s +r c:\boot.ini
Если FreeBSD загружается из MBR, восстановите его командой DOS fdisk после того, как переконфигурировали их для загрузки с их "родных" разделов.
Для систем FreeBSD 3.x эта процедура выглядит несколько проще.
Если FreeBSD установлена на тот же самый диск, что и загрузочный раздел NT, просто скопируйте /boot/boot1 в C:\BOOTSECT.BSD. Однако, если FreeBSD установлена на другой диск, то /boot/boot1 работать не будет, нужно копировать /boot/boot0.
WarningНЕ КОПИРУЙТЕ ПРОСТО /boot/boot0 ВМЕСТО /boot/boot1, ЭТИМ ВЫ ПЕРЕЗАПИШЕТЕ ТАБЛИЦУ РАЗДЕЛОВ ВИНЧЕСТЕРА И ВАШ КОМПЬЮТЕР ПЕРЕСТАНЕТ ЗАГРУЖАТЬСЯ!
При запуске менеджер загрузки FreeBSD задаёт ОС, которая загружалась последний раз, устанавливая для этой операционной системы признак активизации в таблице разделов, а затем записывает 512 байт самого себя обратно в MBR, так что если вы просто скопируете /boot/boot0 в C:\BOOTSECT.BSD, то в MBR будет записана пустая таблица разделов с флагом активности в некотором месте.
Если у вас установлены FreeBSD и Linux на одном и том же диске, следуйте указаниям по установке LILO о загрузке не-Linux операционных систем. Они сводятся к следующему:
Загрузите Linux, и добавьте следующие строки в файл /etc/lilo.conf:
other=/dev/hda2 table=/dev/hda label=FreeBSD
(здесь мы предполагаем, что слайс с FreeBSD известен Linux как /dev/hda2; измените эту строку в соответствии с вашей конфигурацией). Затем достаточно будет запустить lilo, войдя в систему как администратор.
Если FreeBSD располагается на другом диске, вам нужно добавить строчку loader=/boot/chain.b в конфигурационный файл LILO. Например:
other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD
В некоторых случаях для успешной загрузки со второго диска вам может потребоваться указать номер диска BIOS загрузчику FreeBSD. Например, если диск SCSI с FreeBSD определяется BIOS как диск 1, в приглашении загрузчика FreeBSD нужно указать:
Boot: 1:da(0,a)/kernel
Во FreeBSD 2.2.5 и выше вы можете настроить boot(8) на автоматическое принятие таких параметров во время загрузки.
В документе Linux+FreeBSD mini-HOWTO содержится много информации, касающейся взаимодействия FreeBSD и Linux.
Установите LILO в начало загрузочного раздела Linux, а не в Master Boot Record. После этого можно запустить LILO из BootEasy.
Это рекомендуется сделать в любом случае при одновременном использовании Windows-95 и Linux, чтобы упростить восстановление работоспособности Linux после переинсталляции Windows95 (которая является Недоброжелательной Операционной Системой и не терпит присутствия других операционных систем в Master Boot Record).
Каким бы ни было это устройство, типа ZIP, EZ (или даже обычным дисководом, если вы хотите его использовать) или каким-то другим, как только оно будет установлено и распознано системой, и вы вставите в него картридж/дискету/что-там-ещё, всё будет выглядеть примерно одинаково.
(этот раздел опирается на FAQ по устройствам ZIP Марка Мэйо (Mark Mayo))
Если это устройство ZIP или обычный дисковод, и у вас уже есть файловая система DOS на дискетах, то вы можете использовать команду типа:
# mount -t msdos /dev/fd0c /floppy
для обычных дискет, или
# mount -t msdos /dev/da2s4 /zip
для дискет ZIP со стандартной конфигурацией.
Для других дисков посмотрите их параметры с помощью команды fdisk(8) или sysinstall(8).
Остальные примеры даны для привода ZIP на da2, третьем диске SCSI.
Если это дискета или сменный диск, который будет использоваться для обмена информацией с другими людьми, хорошей идеей будет помещение туда файловой системы BSD. Вы получите поддержку длинных имён файлов, увеличение производительности по крайней мере в два раза и гораздо большую надёжность. Первым делом вам снова будет нужно выполнить разбиение диска на разделы/файловые системы. Вы можете воспользоваться утилитой fdisk(8) либо sysinstall(8), а в случае небольшого диска, на котором не нужно располагать несколько операционных систем, просто сотрите таблицу разделов (слайсов) FAT и используйте разбиение на разделы BSD.
# dd if=/dev/zero of=/dev/rda2 count=2 # disklabel -Brw da2 auto
Вы можете использовать disklabel(8) или sysinstall(8) для создания нескольких разделов BSD. Вам наверняка придётся это сделать, если вы станете добавлять место для раздела подкачки на винчестере, хотя это не имеет отношения к устройствам типа ZIP.
В итоге вы должны создать новую файловую систему (в этом примере она занимает весь наш диск ZIP):
# newfs /dev/rda2c
и смонтировать её:
# mount /dev/da2c /zip
Хорошо ещё добавить строку типа следующей в файл /etc/fstab (прочтите справку по fstab(5)), чтобы в будущем можно было просто давать команду mount /zip:
/dev/da2c /zip ffs rw,noauto 0 0
Это описано в разделе Руководства о копировании CD с данными. Более полную информацию о работе с компакт-дисками можно найти в разделе о создании компакт-дисков главы об устройствах хранения данных Руководства.
9.15. Как разрешить обычным пользователям монтировать дискеты, компакт-диски и другие сменные носители?
Обычным пользователям можно позволить монтировать устройства. Вот как это делается:
Как пользователь root, установите системную переменную vfs.usermount в значение 1.
# sysctl -w vfs.usermount=1
Работая пользователем root, назначьте соответствующие права на устройства с поблочным доступом, которые соответствуют сменным носителям.
Например, чтобы позволить пользователям монтировать дискеты в первом дисководе, воспользуйтесь командой
# chmod 666 /dev/fd0
Чтобы разрешить пользователям из группы operator монтировать компакт-диски, сделайте так:
# chgrp operator /dev/cd0c # chmod 640 /dev/cd0c
Наконец, добавьте строчку vfs.usermount=1 в файл /etc/sysctl.conf, чтобы она срабатывала во время загрузки системы.
Теперь все пользователи могут монтировать дискету /dev/fd0 в собственные каталоги:
% mkdir ~/my-mount-point % mount -t msdos /dev/fd0 ~/my-mount-point
Пользователи из группы operator теперь могут монтировать компакт-диск /dev/cd0c в собственные каталоги:
% mkdir ~/my-mount-point % mount -t msdos /dev/cd0c ~/my-mount-point
Размонтировка устройства осуществляется просто:
% umount ~/my-mount-point
Использование vfs.usermount, однако, имеет некоторые негативные стороны, связанные с вопросами безопасности. Более правильным способом работы с носителями в формате MSDOS является использование пакета mtools из коллекции портов.
Вам нужно разобраться, что на самом деле делают команды du и df. du проходит по дереву каталогов, замеряя, насколько большой объем занимает каждый файл, и выдает общий объем. df просто запрашивает файловую систему об оставшемся объеме. Это выглядит как одно и то же, однако файл без записи в каталоге затронет df, но не повлияет на du.
Когда программа использует файл, а вы его удалили, файл на самом деле не удаляется из файловой системы, пока программа не прекратит его использовать. Однако файл тут же удаляется из списка каталога. Вы можете легко это видеть при помощи такой программы, как more. Предположим, что у вас имеется файл, настолько большой, что его присутствие влияет на вывод команд du и df. (Так как в настоящее время диски могут быть настолько большими, это может быть очень большой файл!) Если вы удалите этот файл в процессе работы more над ним, на команду more это не повлияет и она не сообщит, что не может просматривать файл. Запись о файле просто удалена из каталога, так что другие программы или пользователи не смогут к нему обратиться. du покажет, что файл исчез -- она просматривает дерево каталогов, а файла там не будет. df показывает, что он все еще здесь, так как файловая система знает, что more все еще использует это пространство. Как только вы закончите работу с more, команды du и df придут в соответствие.
Заметьте, что подсистема мягких обновлений (softupdates) может задерживать освобождение дискового пространства; вам может потребоваться подождать до 30 секунд, прежде, чем изменения будут заметны!
Такая ситуация часта на веб-серверах. Многие устанавливают веб-сервер на FreeBSD и забывают обновлять файлы протоколов. Журнал доступа заполняет /var. Новый администратор удаляет файл, но система все еще сообщает о том, что раздел заполнен. Остановка и перезапуск программы веб-сервера освободит файл, позволяя системе освободить дисковое пространство. Для предотвращения этого настройте newsyslog(8).
В главе Руководства о конфигурации и тонкой настройке вы найдёте раздел, в котором описывается, как это сделать.