Глава 9. Диски, файловые системы и начальные загрузчики

9.1. Как добавить в систему новый диск?
9.2. Как перенести систему на большой новый диск?
9.3. Не угрожает ли режим «dangerously dedicated» моему здоровью?
9.4. На каких разделах можно без опаски использовать механизм Soft Updates? Я слышал, что использование Soft Updates на / могут приводить к проблемам.
9.5. Что не так с устройством ccd(4)?
9.6. Почему невозможно отредактировать метку диска ccd(4)?
9.7. Можно ли смонтировать другие файловые системы?
9.8. Как смонтировать вторичный раздел DOS?
9.9. Существует ли криптографическая файловая система для FreeBSD?
9.10. Как можно использовать загрузчик Windows NT® для запуска FreeBSD?
9.11. Как загрузить FreeBSD и Linux® с помощью LILO?
9.12. Как загрузить FreeBSD и Linux® с помощью GRUB?
9.13. Как загрузить FreeBSD и Linux® с помощью BootEasy?
9.14. Как сменить приглашение загрузчика с ??? на что-нибудь более значащее?
9.15. Как использовать устройство для чтения сменных дисков?
9.16. При монтировании компакт-диска, выдаётся сообщение Incorrect super block.
9.17. При монтировании компакт-диска выдаётся сообщение Device not configured.
9.18. Когда я монтирую CD-ROM, все неанглийские символы в именах файлов выводятся как «?».
9.19. Я записал CD во FreeBSD и теперь не могу считать его ни в какой другой операционной системой. Почему?
9.20. Как создать образ CD с данными?
9.21. Почему я не могу смонтировать (командой mount аудио CD?
9.22. Как выполнить mount для многосеансового CD?
9.23. Как разрешить обычным пользователям монтировать дискеты, компакт-диски и другие сменные носители?
9.24. Команды du и df показывают разный объем доступного дискового пространства. Что происходит?
9.25. Как добавить дополнительную виртуальную память?
9.26. Почему FreeBSD считает, что размер моего диска меньше, чем заявляет его производитель?
9.27. Почему возможно заполнение раздела больше чем на 100%?

9.1.

Как добавить в систему новый диск?

Обратитесь к разделу Добавление дисков Руководства FreeBSD.

9.2.

Как перенести систему на большой новый диск?

Самый лучший способ заключается в переустановке ОС на новый диск и последующем переносе данных пользователей. Это очень рекомендуется делать, если вы следовали ветке -STABLE в течение более одного релиза или обновляли релиз, а не устанавливали новый. Вы можете установить программу booteasy на оба диска с помощью команды boot0cfg(8) и выполнять загрузку с любого из них до тех пор, пока не будете удовлетворены новой конфигурацией системы. Пропустите следующий абзац, чтобы перейти к вопросу переноса данных после этой операции.

Если вы решили не делать новой установки, то вам нужно разбить на разделы и разметить новый диск с помощью sysinstall(8) или fdisk(8) и disklabel(8). Вы также должны установить на оба диска программу booteasy с помощью boot0cfg(8), чтобы иметь возможность выполнять загрузку как старой, так и новой системы после выполнения копирования.

Итак, после подготовки диска вы можете переносить данные. К сожалению, вы не можете просто скопировать данные. Такие вещи, как файлы устройств (в каталоге /dev), флаги и ссылки будут этому мешать. Вам нужно использовать инструменты, которые работают с такими случаями, а именно dump(8). Хотя рекомендуется выполнять перенос данных в однопользовательском режиме, это не обязательное условие.

Вы не должны использовать ничего, кроме dump(8) и restore(8) для переноса корневой файловой системы. Команда tar(1) может сработать, а может и не сработать. Также вы должны использовать dump(8) и restore(8) при переносе одного раздела в другой пустой раздел. Последовательность шагов при использовании программы dump для переноса данных раздела в новый раздел такова:

  1. выполните команду newfs над новым разделом.

  2. командой mount смонтируйте его во временный каталог.

  3. командой cd перейдите в этот каталог.

  4. выполните команду dump над старым разделом, направив вывод в новый раздел.

Например, если вы собираетесь перенести корневую файловую систему на устройство /dev/ad1s1a с использованием каталога /mnt в качестве временной точки монтирования, то это делается так:

# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -

Переразбиение разделов с использованием dump требует несколько больше усилий. Для объединения раздела типа /var с его вышестоящим разделом, создайте новый раздел, достаточно большой для размещения их обоих, переместите вышестоящий раздел так, как это описано выше, а затем переместите нижестоящий раздел в пустой каталог, созданный при первом перемещении:

# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -
# cd var
# dump 0af - /var | restore rf -

Для отделения каталога от вышестоящего, скажем, для размещения /var в собственном разделе, которого не было, создайте оба раздела, затем смонтируйте нижестоящий раздел в подходящий каталог во временную точку монтирования, а затем переместите старый единый раздел:

# newfs /dev/ad1s1a
# newfs /dev/ad1s1d
# mount /dev/ad1s1a /mnt
# mkdir /mnt/var
# mount /dev/ad1s1d /mnt/var
# cd /mnt
# dump 0af - / | restore rf -

Вы можете использовать cpio(1), pax(1), tar(1) вместо dump(8) для данных пользователей. На момент написания этого документа было известно, что они теряют информацию о флагах файлов, так что используйте их с осторожностью.

9.3.

Не угрожает ли режим «dangerously dedicated» моему здоровью?

В процессе установки вы можете выбрать два различных метода разбиения вашего диска (дисков). По умолчанию это делается в режиме совместимости с другими операционными системами на этой же машине с использованием записей в таблице разделов fdisk(8) (то, что называется «слайсом» во FreeBSD), со слайсом (разделом), выделенным FreeBSD. Опционально, вы можете выбрать установку менеджера загрузки для переключения между операционными системами. Либо вы можете выделить диск полностью под FreeBSD, не заботясь о совместимости с другими операционными системами.

Почему же этот режим называется «dangerous»? Дело в том, что диск в этом режиме не будет содержать того, что обычные утилиты для ПК распознают как таблицу разделов fdisk(8). В зависимости от того, насколько хорошо они написаны, они могут сообщить вам об этом, как только обнаружат такой диск, или, что гораздо хуже, могут запортить загрузчик 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.

На каких разделах можно без опаски использовать механизм Soft Updates? Я слышал, что использование Soft Updates на / могут приводить к проблемам.

Краткий ответ: обычно вы можете использовать Soft Updates без опаски на всех разделах.

Подробный ответ: Было несколько возражений против использования Soft Updates на корневом разделе. Soft Updates имеют две характеристики, которые этому способствуют. Во-первых, раздел с Soft Updates имеет мало шансов потери данных по время аварийного останова системы. (Раздел не будет попорчен; просто будут потеряны данные.) Кроме того, Soft Updates могут приводить к временной нехватке дискового пространства.

При использовании Soft Updates ядро может задерживать до тридцати секунд реальную запись изменений на физический диск. Если вы удаляете большой файл, он остается на диске, пока ядро не выполнит удаления на самом деле. Это может привести к очень простой проблеме. Предположим, что вы удалили один большой файл и тут же создали другой большой файл. Первый большой файл еще не удален реально с физического диска, так что на диске может не оказаться достаточного пространства для второго большого файла. Вы получите ошибку, говорящую о том, что на разделе нет достаточного пространства, хотя вы точно знаете, что только что освободили его большой объем! Если вы попробуете еще раз выполнить операцию секундами позже, создание файла сработает так, как это и ожидалось. Это не раз заставляло пользователей почесать голову и дважды проверить свое психическое здоровье, файловую систему FreeBSD или оба этих объекта.

Если система может аварийно остановиться после того, как ядро примет набор данных для записи на диск, но перед тем, как данные реально запишутся, то данные могут потеряться или оказаться испорченными. Такой риск весьма мал, но в общем-то, управляем. Использование кэширование записи на IDE очень сильно увеличивает этот риск; настоятельно рекомендуется выключить кэширование записи для IDE при использовании Soft Updates.

Эти проблемы влияют на все разделы, использующие Soft Updates. Итак, что это означает для корневого раздела?

Жизненно важная информация на корневом разделе меняется очень редко. Файлы, такие как /boot/kernel/kernel и содержимое /etc, меняются только при обслуживании системы, или когда пользователи меняют свои пароли. Если в системе произойдет сбой в период тридцатисекундного окна после выполнения такого изменения, возможно, что данные окажутся потерянными. Этот риск незначителен для большинства применений, но вы должны иметь в виду, что он есть. Если ваша система не может принять такой риск, не используйте Soft Updates с корневой файловой системой!

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

9.5.

Что не так с устройством ccd(4)?

Симптом выглядит так:

# ccdconfig -C
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format

Это сообщение обычно выдаётся, когда вы пытаетесь объединить разделы c, по умолчанию имеющие тип unused. Драйвер ccd(4) требует, чтобы используемые разделы имели тип FS_BSDFFS. Отредактируйте метки тех дисков, которые вы хотите использовать, сменив типы разделов на 4.2BSD.

9.6.

Почему невозможно отредактировать метку диска ccd(4)?

Симптом выглядит так:

# disklabel ccd0
(здесь выводится информация о диске, пробуем отредактировать метку)
# disklabel -e ccd0
(редактирование, сохранение, выход)
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -r" to install initial label

Это происходит из-за того, что метка диска, возвращаемая ccd(4), на самом деле «ненастоящая», не соответствующая реально располагающейся на диске. Вы можете решить эту проблему, явно записав эту метку обратно следующим образом:

# disklabel ccd0 > /tmp/disklabel.tmp
# disklabel -Rr ccd0 /tmp/disklabel.tmp
# disklabel -e ccd0
(теперь это будет работать)

9.7.

Можно ли смонтировать другие файловые системы?

FreeBSD поддерживает ряд других файловых систем.

UFS

Компакт-диски с файловой системой UFS могут быть смонтированы без всяких проблем. Монтирование файловых систем Digital UNIX или других систем, поддерживающих UFS, может быть более сложным, в зависимости от особенностей разбиения диска конкретной операционной системой.

ext2/ext3

FreeBSD поддерживает разделы ext2fs и ext3fs. За дополнительной информацией обратитесь к странице справочника mount_ext2fs(8).

NTFS

Во FreeBSD имеется драйвер доступа к NTFS в режиме только для чтения. Для получения более полной информации обратитесь к странице справочника mount_ntfs(8). Порт ntfs-3g также поддерживает операции записи на NTFS (смотрите sysutils/fusefs-ntfs).

FAT

Во FreeBSD имеется драйвер для работы с FAT в режиме чтения-записи. Для получения дополнительной информации обратитесь к странице справочника mount_msdosfs(8).

ReiserFS

Во FreeBSD имеется драйвер для работы с ReiserFS в режиме только для чтения. Для получения более полной информации обратитесь к странице справочника mount_reiserfs(8).

ZFS

На момент написания FreeBSD включает в себя порт драйвера для работы с Sun™ ZFS. В настоящее время рекомендуется использовать его только на платформе amd64 с достаточным объемом памяти. Для получения более полной информации обратитесь к странице справочника zfs(8).

FreeBSD также поддерживает такие сетевые файловые системы, как NFS (смотрите mount_nfs(8)), NetWare (смотрите mount_nwfs(8)) и файловые системы SMB в стиле Microsoft (обратитесь к mount_smbfs(8)). Вы также можете найти полезными порты, основанные на FUSE (sysutils/fusefs-kmod), для множества других файловых систем.

9.8.

Как смонтировать вторичный раздел DOS?

Вторичные разделы DOS находятся после всех первичных разделов. Например, если раздел «E» является вторым разделом DOS на втором диске SCSI, то здесь будет файл устройства для пятого «слайса» в каталоге /dev, так что просто смонтируйте его:

# mount -t msdosfs /dev/da1s5 /dos/e

9.9.

Существует ли криптографическая файловая система для FreeBSD?

Да. Вы можете использовать gbde(8) или geli(8). Смотрите раздел Шифрование дисковых разделов Руководства FreeBSD.

9.10.

Как можно использовать загрузчик Windows NT® для запуска FreeBSD?

Идея заключается в копировании первого сектора корневого раздела FreeBSD в файл, находящийся в разделе DOS/Windows 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"

Если FreeBSD установлена на тот же самый диск, что и загрузочный раздел Windows NT®, просто скопируйте /boot/boot1 в C:\BOOTSECT.BSD. Однако, если FreeBSD установлена на другой диск, то /boot/boot1 работать не будет, нужно копировать /boot/boot0.

/boot/boot0 нужно устанавливать с помощью sysinstall(8), выбрав менеджер загрузки FreeBSD в диалоговом окне при выборе менеджера загрузки. Это потому что в /boot/boot0 область таблицы разделов заполнена символами NULL, а sysinstall(8) копирует сюда таблицу разделов перед тем, как скопировать /boot/boot0 в область MBR.

Предупреждение:

Не копируйте просто /boot/boot0 вместо /boot/boot1, этим вы перезапишете таблицу разделов винчестера и ваш компьютер перестанет загружаться!

При запуске менеджер загрузки FreeBSD задаёт ОС, которая загружалась последний раз, устанавливая для этой операционной системы признак активизации в таблице разделов, а затем записывает 512 байт самого себя обратно в MBR, так что если вы просто скопируете /boot/boot0 в C:\BOOTSECT.BSD, то в MBR будет записана пустая таблица разделов с флагом активности в некотором месте.

9.11.

Как загрузить FreeBSD и Linux® с помощью LILO?

Если у вас установлены 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)/boot/kernel/kernel

Вы можете настроить boot(8) на автоматическое принятие таких параметров во время загрузки.

В документе Linux®+FreeBSD mini-HOWTO содержится много информации, касающейся взаимодействия FreeBSD и Linux®.

9.12.

Как загрузить FreeBSD и Linux® с помощью GRUB?

Настройка загрузки FreeBSD, используя GRUB очень простой процесс. Всего лишь добавьте следующие строки в ваш конфигурационный файл /boot/grub/menu.lst (в некоторых системах /boot/grub/grub.conf, например, Red Hat Linux и производных системах).

title FreeBSD 6.1
root (hd0,a)
kernel /boot/loader

Где hd0,a указывает на ваш корневой раздел на первом диске. Если вам нужно указать номер слайса, который должен использоваться, напишите что-то вроде (hd0,2,a). По умолчанию, если номер слайса не указан, GRUB ищет первый слайс, содержащий в себе партицию a.

9.13.

Как загрузить FreeBSD и Linux® с помощью BootEasy?

Установите LILO в начало загрузочного раздела Linux®, а не в Master Boot Record. После этого можно запустить LILO из BootEasy.

Это рекомендуется сделать в любом случае при одновременном использовании Windows® и Linux®, чтобы упростить восстановление работоспособности Linux® после переустановки Windows® (которая является Ревнивой Операционной Системой и не терпит присутствия других операционных систем в Master Boot Record).

9.14.

Как сменить приглашение загрузчика с ??? на что-нибудь более значащее?

Вы не можете сделать это со стандартным менеджером загрузки, не переписав его. Среди портов из категории sysutils есть несколько других менеджеров загрузки, которые предоставляют такую функциональность.

9.15.

Как использовать устройство для чтения сменных дисков?

Каким бы ни было это устройство, типа Zip®, EZ (или даже обычным дисководом, если вы хотите его использовать) или каким-то другим, как только оно будет установлено и распознано системой, и вы вставите в него картридж/дискету/что-там-ещё, всё будет выглядеть примерно одинаково.

(этот раздел основан на материалах FAQ по устройствам ZIP Марка Мэйо (Mark Mayo))

Если это устройство ZIP или обычный дисковод, и у вас уже есть файловая система DOS на дискетах, то вы можете использовать команду типа:

# mount -t msdosfs /dev/fd0c /floppy

для обычных дискет, или

# mount -t msdosfs /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

9.16.

При монтировании компакт-диска, выдаётся сообщение Incorrect super block.

В параметрах команды mount(8) вам нужно указать тип устройства, который вы собираетесь смонтировать. Это описано в разделе Руководства об оптических носителях, а именно в разделе Использование CD с данными.

9.17.

При монтировании компакт-диска выдаётся сообщение Device not configured.

Обычно это означает, что в приводе CD-ROM нет компакт-диска либо устройство на шине не было увидено. Пожалуйста, посмотрите раздел об использовании CD с данными в Руководстве, где подробно обсуждается этот вопрос.

9.18.

Когда я монтирую CD-ROM, все неанглийские символы в именах файлов выводятся как «?».

Скорее всего, на вашем компакт-диске для хранения информации о файлах и каталогах используется расширение «Joliet». Это описано в главе Руководства о создании и использовании CD-ROM, а именно в разделе об использовании CD-ROM с данными.

9.19.

Я записал CD во FreeBSD и теперь не могу считать его ни в какой другой операционной системой. Почему?

Скорее всего, вы записали на CD непосредственно необработанный файл без создания файловой системы ISO 9660. Прочтите главу Руководства о создании CD-ROM, в частности, раздел о записи данных непосредственно на компакт-диски.

9.20.

Как создать образ CD с данными?

Это описано в разделе Руководства о копировании CD с данными. Более полную информацию о работе с компакт-дисками можно найти в разделе о создании компакт-дисков главы об устройствах хранения данных Руководства.

9.21.

Почему я не могу смонтировать (командой mount аудио CD?

Если вы попытаетесь смонтировать аудио CD, вы получите примерно такое сообщение об ошибке: cd9660: /dev/acd0c: Invalid argument. Причина этого заключается в том, что команда mount работает только с файловыми системами. На аудио CD файловых систем нет; они содержат только данные. Вам нужна программа, читающая аудио CD, например, порт audio/xmcd port.

9.22.

Как выполнить mount для многосеансового CD?

По умолчанию mount(8) будет пытаться смонтировать последнюю дорожку (сеанс) CD с данными. Если вы хотите загрузить более ранний сеанс, то должны воспользоваться опцией командной строки -s. Пожалуйста, обратитесь к справке по команде mount_cd9660(8) для получения конкретных примеров.

9.23.

Как разрешить обычным пользователям монтировать дискеты, компакт-диски и другие сменные носители?

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

  1. Как пользователь root, установите системную переменную vfs.usermount в значение 1.

    # sysctl -w vfs.usermount=1
  2. Работая пользователем root, назначьте соответствующие права на устройства с поблочным доступом, которые соответствуют сменным носителям.

    Например, чтобы позволить пользователям монтировать дискеты в первом дисководе, воспользуйтесь командой

    # chmod 666 /dev/fd0

    Чтобы разрешить пользователям из группы operator монтировать CD-ROM, сделайте так:

    # chgrp operator /dev/acd0c
    # chmod 640 /dev/acd0c
  3. Вам нужно внести изменения в файл /etc/devfs.conf, чтобы они сохранялись между перезагрузками.

    Как пользователь root, добавьте нужные строки в файл /etc/devfs.conf. К примеру, чтобы разрешить пользователям монтировать диски на первом приводе для гибких дисков, добавьте такую строчку:

    # Разрешить пользователям монтировать дискеты.
    own	/dev/fd0	root:operator
    perm	/dev/fd0	0666

    Чтобы разрешить пользователям группы operator монтировать диск в приводе CD-ROM, добавьте такую строку:

    # Разрешить членам группы operator монтировать CD-ROM.
    own	/dev/acd0	root:operator
    perm	/dev/acd0	0660
  4. Наконец, добавьте строчку vfs.usermount=1 в файл /etc/sysctl.conf, чтобы она срабатывала во время загрузки системы.

Теперь все пользователи могут монтировать дискету /dev/fd0 в собственные каталоги:

% mkdir ~/my-mount-point
% mount -t msdosfs /dev/fd0 ~/my-mount-point

Пользователи из группы operator теперь могут монтировать CD-ROM /dev/acd0c в собственные каталоги:

% mkdir ~/my-mount-point
% mount -t cd9660 /dev/acd0c ~/my-mount-point

Размонтирование устройства осуществляется просто:

% umount ~/my-mount-point

Использование vfs.usermount, однако, имеет некоторые негативные стороны, связанные с вопросами безопасности. Более правильным способом работы с носителями в формате MS-DOS® является использование пакета emulators/mtools из Коллекции Портов.

Примечание:

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

9.24.

Команды du и df показывают разный объем доступного дискового пространства. Что происходит?

Вам нужно разобраться, что на самом деле делают команды du и df. du проходит по дереву каталогов, замеряя, насколько большой объем занимает каждый файл, и выдает общий объем. df просто запрашивает файловую систему об оставшемся объеме. Это выглядит как одно и то же, однако файл без записи в каталоге затронет df, но не повлияет на du.

Когда программа использует файл, а вы его удалили, файл на самом деле не удаляется из файловой системы, пока программа не прекратит его использовать. Однако файл тут же удаляется из списка каталога. Вы можете легко это видеть при помощи такой программы, как more. Предположим, что у вас имеется файл, настолько большой, что его присутствие влияет на вывод команд du и df. (Так как в настоящее время диски могут быть настолько большими, это может быть очень большой файл!) Если вы удалите этот файл в процессе работы more над ним, на команду more это не повлияет и она не сообщит, что не может просматривать файл. Запись о файле просто удалена из каталога, так что другие программы или пользователи не смогут к нему обратиться. du покажет, что файл исчез — она просматривает дерево каталогов, а файла там не будет. df показывает, что он все еще здесь, так как файловая система знает, что more все еще использует это пространство. Как только вы закончите работу с more, команды du и df придут в соответствие.

Заметьте, что подсистема отложенных обновлений (Soft Updates) может задерживать освобождение дискового пространства; вам может потребоваться подождать до 30 секунд, прежде, чем изменения будут заметны!

Такая ситуация часта на Web-серверах. Многие устанавливают Web-сервер на FreeBSD и забывают обновлять файлы протоколов. Журнал доступа заполняет /var. Новый администратор удаляет файл, но система все еще сообщает о том, что раздел заполнен. Остановка и перезапуск программы Web-сервера освободит файл, позволяя системе освободить дисковое пространство. Для предотвращения этого настройте newsyslog(8).

9.25.

Как добавить дополнительную виртуальную память?

В главе Руководства о конфигурации и тонкой настройке вы найдёте раздел, в котором описывается, как это сделать.

9.26.

Почему FreeBSD считает, что размер моего диска меньше, чем заявляет его производитель?

Производители дисков считают гигабайт равным миллиарду байт, а FreeBSD приравнивает его к 1073741824 байт. Это объясняет, почему, к примеру, в сообщениях при загрузке FreeBSD указывается, что ёмкость диска, объём которого должен быть равным 80 Гбайт, составляет 76319 Мбайт.

Заметьте также, что FreeBSD будет (по умолчанию) резервировать 8% ёмкости диска.

9.27.

Почему возможно заполнение раздела больше чем на 100%?

Часть каждого раздела UFS (по умолчанию 8%) зарезервировано для использования операционной системой и пользователем root. Утилита df(1) не учитывает это при подсчёте значения в колонке Capacity, так что оно может превышать 100%. Также вы заметите, что колонка Blocks всегда больше, чем сумма значений в колонках Used и Avail, обычно на 8%.

Для получения более подробной информации обратитесь к описанию опции -m в справке по tunefs(8).

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.