Руководство FreeBSD
Пред. | Глава 16. Устройства хранения | След.

# 16.12. Сетевые файловые системы, файловые системы в памяти и с отображением в файл

Реорганизацию и улучшения выполнил Marc Fonvieille.

Кроме дисков, которые вы физически устанавливаете в ваш компьютер; дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и другие типы дисков - виртуальные диски.

Сюда могут быть отнесены сетевые файловые системы, такие, как Network File System и Coda, а также файловые системы с организацией в памяти и создаваемые в файлах.

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

> Замечание: Пользователи FreeBSD 4.X для создания требуемых устройств должны использовать MAKEDEV(8). Во FreeBSD 5.0 и более поздних версиях для создания файлов устройств используется devfs(5), которая выполняет это прозрачно для пользователей.

## 16.12.1. Файловая система в файле во FreeBSD 4.X

Утилита 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

## 16.12.2. Файловые системы, отображаемые в файлы, во FreeBSD 5.X

Во 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) можно найти на страницах справочной системы.

## 16.12.3. Файловая система в памяти во FreeBSD 4.X

Драйвер 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).

## 16.12.4. Файловые системы с отображением в память во FreeBSD 5.X

При работе с файловыми системами, отображаемыми в файл или память, используются одни и те же утилиты: 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).

## 16.12.5. Отключение диска, отображаемого в память, от системы

Если файловые системы, отображаемые в память или файл, больше не используются, вам нужно высвободить все ресурсы для системы. Первым делом нужно размонтировать файловую систему, затем воспользоваться mdconfig(8) для отключения диска от системы и освободить ресурсы.

К примеру, чтобы отключить и освободить все ресурсы, используемые `/dev/md4`:

    # mdconfig -d -u 4

Для выдачи информации об отконфигурированных устройствах md(4) используется команда `mdconfig -l`.

Во FreeBSD 4.X для отключения устройства используется команда vnconfig(8). Например, для отключения и освобождения всех ресурсов, используемых `/dev/vn4`:

    # vnconfig -u vn4

Пред. | Начало | След.
Основы технологии резервного копирования | Уровень выше | Мгновенные копии файловых систем

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

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.