Реорганизацию и улучшения выполнил
Marc Fonvieille.
Кроме дисков, которые вы физически устанавливаете в ваш компьютер; дискеты,
компакт-диски, винчестеры и так далее, FreeBSD воспринимает и другие типы дисков - виртуальные диски.
Сюда могут быть отнесены сетевые файловые системы, такие, как Network File System и Coda, а также файловые системы с
организацией в памяти и создаваемые в файлах.
В зависимости от версии FreeBSD, которую вы используете, для создания и работы с
файловыми системами, отображаемыми в оперативную память или файлы, вам нужно будет
пользоваться разными инструментами.
Замечание: Пользователи FreeBSD 4.X для создания требуемых устройств
должны использовать MAKEDEV(8). Во
FreeBSD 5.0 и более поздних версиях для создания файлов устройств используется
devfs(5),
которая выполняет это прозрачно для пользователей.
Утилита vnconfig(8)
конфигурирует и позволяет использовать дисковые устройства на основе псевдо-устройств
vnode. vnode представляет собой файл и отвечает за работу с
файлом. Это означает, что vnconfig(8) использует
файлы для создания и работы с файловой системой. Одним из возможных способов
использования является монтирование образов дискет или образов компакт-дисков, сброшенных
в файлы.
Для использования vnconfig(8) в
конфигурационном файле ядра вам нужно включить поддержку vn(4):
pseudo-device vn
Чтобы смонтировать имеющийся образ файловой системы:
Пример 16-4. Использование vnconfig для монтирования имеющегося образа файловой
системы во FreeBSD 4.X
# vnconfig vn0 diskimage
# mount /dev/vn0c /mnt
Для создания нового образа файловой системы с помощью vnconfig(8):
Пример 16-5. Создание нового диска в файле с помощью vnconfig
# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# vnconfig -s labels -c vn0 newimage
# disklabel -r -w vn0 auto
# newfs vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
32
# mount /dev/vn0c /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/vn0c 4927 1 4532 0% /mnt
Во FreeBSD 5.X для конфигурации и подключения дисков md(4), отображаемых в
оперативную память, используется утилита mdconfig(8). Для
работы с mdconfig(8) вам нужно
подгрузить модуль md(4) или добавить
поддержку этих устройств в файл конфигурации ядра:
device md
Утилита mdconfig(8)
поддерживает три типа виртуальных дисков, отображаемых в память: диски в памяти, которая
выделяется запросами malloc(9) и диски в
памяти, использующие в качестве устройств хранения файлы или раздел подкачки. Одним из
возможных использований таких дисков является монтирование файлов с образами дискет или
CD.
Для монтирования образа существующей файловой системы:
Пример 16-6. Использование mdconfig для монтирования файла
с образом существующей файловой системы во FreeBSD 5.X
# mdconfig -a -t vnode -f diskimage -u 0
# mount /dev/md0 /mnt
Для создания образа новой файловой системы при помощи mdconfig(8):
Пример 16-7. Создание нового диска, отображаемого в файл, при помощи mdconfig
# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f newimage -u 0
# disklabel -r -w md0 auto
# newfs md0c
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
# mount /dev/md0c /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4846 2 4458 0% /mnt
Если в параметре -u вы не задали номер устройства, то mdconfig(8) для выбора
неиспользуемого устройства будет использовать функцию автоматическое выделения в md(4). Имя выделенного
устройства будет выдано на стандартное устройство выводы в виде, например, md4. Для получения более полной информации о mdconfig(8),
пожалуйста, обратитесь к соответствующей странице справочной системы.
Замечание: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла
утилита bsdlabel(8). У bsdlabel(8)
отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для
получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).
Утилита mdconfig(8) весьма
полезна, однако для создания файла с файловой системой требуется произвести много
действий. Вместе с FreeBSD 5.0 поставляется утилита под названием mdmfs(8), которая
создаёт диск md(4) при помощи mdconfig(8), размещает
на нём файловую систему UFS при помощи newfs(8) и монтирует
её командой mount(8). Например,
если вы хотите создать и смонтировать такой же образ файловой системе, как выше, просто
наберите такую команду:
Пример 16-8. Настройка и монтирование диска, отображаемого в файл, при помощи
команды mdmfs
# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdmfs -F newimage -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4846 2 4458 0% /mnt
Если вы используете параметр md без номера устройства, то mdmfs(8) будет
использовать автоматическую нумерацию md(4) для
автоматического выбора неиспользуемого устройства. Более полную информацию о mdmfs(8) можно найти
на страницах справочной системы.
Драйвер md(4) является простым
и эффективным способом создания файловых систем в памяти во FreeBSD 4.X. Для
выделения памяти используется malloc(9).
Просто возьмите файловую систему, которую вы приготовили при помощи, скажем, vnconfig(8) и:
Пример 16-9. Диск md в памяти во FreeBSD 4.X
# dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
# mount /dev/md0c /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4927 1 4532 0% /mnt
Для получения более полной информации, пожалуйста, обратитесь к страницам справочной
системы по md(4).
При работе с файловыми системами, отображаемыми в файл или память, используются одни и
те же утилиты: mdconfig(8) или mdmfs(8). Место для
хранения файловых систем в памяти выделяется через malloc(9).
Пример 16-10. Создание нового диска с отображением в память при помощи mdconfig
# mdconfig -a -t malloc -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
with soft updates
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4846 2 4458 0% /mnt
Пример 16-11. Создание нового диска с отображением в память при помощи mdmfs
# mdmfs -M -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mnt
Вместо того, чтобы использовать файловую систему, опирающуюся на malloc(9), возможно
использовать память раздела подкачки, для чего нужно просто заменить malloc на swap в командной строке при
вызове mdconfig(8). Утилита
mdmfs(8) по умолчанию
(без опции -M) создаёт диск в разделе подкачки. Для выяснения
всех подробностей, пожалуйста, обратитесь к страницам справочной системы по mdconfig(8) и mdmfs(8).
Если файловые системы, отображаемые в память или файл, больше не используются, вам
нужно высвободить все ресурсы для системы. Первым делом нужно размонтировать файловую
систему, затем воспользоваться mdconfig(8) для
отключения диска от системы и освободить ресурсы.
К примеру, чтобы отключить и освободить все ресурсы, используемые /dev/md4:
# mdconfig -d -u 4
Для выдачи информации об отконфигурированных устройствах md(4) используется
команда mdconfig -l.
Во FreeBSD 4.X для отключения устройства используется команда vnconfig(8). Например,
для отключения и освобождения всех ресурсов, используемых /dev/vn4:
# vnconfig -u vn4