19.6. Метки дисковых устройств
Пред. | Глава 19. GEOM: Модульная инфраструктура преобразования дисковых запросов | След.

## 19.6. Метки дисковых устройств

Перевод на русский язык Денис Пеплин.

Во время загрузки системы, ядро FreeBSD создает файлы для обнаруженных устройств. Этот метод обнаружения устройств создает некоторые проблемы, например если новое дисковое устройство подключается через USB. Может получиться так, что этому диску будет присвоено имя устройства `da0`, а устройство с прежним именем `da0` получит следующее имя, `da1`. Это приведет к проблемам монтирования файловых систем, записанных в `/etc/fstab`. На самом деле, это может даже помешать загрузке системы.

Одно из решений состоит в расположении SCSI устройств в таком порядке, чтобы новые устройства, добавляемые к SCSI контроллеру, занимали свободные номера устройств. Но что делать с USB устройствами, которые могут занять место основного SCSI диска? Это случается потому, что USB устройства обычно тестируются до SCSI контроллера. Решение может состоять в подключении этих устройств после загрузки системы. Другое решение - использование ATA диска и исключение SCSI устройств из `/etc/fstab`.

Есть и лучшее решение. С помощью утилиты `glabel`, администратор или пользователь могут пометить дисковые устройства и использовать эти метки в `/etc/fstab`. Поскольку `glabel` сохраняет метки в последнем секторе заданного устройства, они сохраняются и после перезагрузки. Используя эти метки вместо имени устройств, можно всегда смонтировать файловую систему независимо от назначенного имени устройства.

### Примечание:

Очевидно, что метки должны быть постоянными. Утилита `glabel` может использоваться для создания как временных, так и постоянных меток. Только постоянные метки сохраняются после перезагрузок. Прочтите glabel(8) для получения более подробной информации о различии между метками.

### 19.6.1. Типы меток и примеры

Существует два типа меток, основной (generic) тип и метки файловой системы. Метки могут быть постоянными или временными. Постоянные метки создаются командой tunefs(8) или newfs(8). В дальнейшем они будут автоматически создаваться в подкаталоге каталога `/dev`, имя которого определяется в соответствии с типом файловой системы. Например, метки файловых систем UFS2 будут расположены в каталоге `/dev/ufs`. Постоянные метки также можно создать при помощи команды `glabel label`. Эти метки не зависят от типа файловой системы, поэтому они будут перечисляться в каталоге `/dev/label`.

Временные метки не сохраняются после перезагрузки. Эти метки создаются в каталоге `/dev/label`, они хорошо подходят для экспериментов. Временную метку можно создать командой `glabel create`. За более детальной информацией обратитесь к странице справочника glabel(8).

Чтобы создать постоянную метку для файловой системы UFS2 не нарушая самих данных, выполните следующую команду:

`#` `tunefs -L `home` `/dev/da3``

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

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

Метка должна появиться в `/dev/ufs` и может быть добавлена в `/etc/fstab`:

/dev/ufs/home /home ufs rw 2 2

### Примечание:

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

Теперь файловую систему можно смонтировать как обычно:

`#` `mount /home`

Если модуль ядра `geom_label.ko` указан в `/boot/loader.conf` и загружается вместе с системой, или в ядре указана опция `GEOM_LABEL`, метку устройства можно изменять без какого-либо негативного для системы эффекта.

Файловая система может быть создана с меткой по умолчанию путем использования флага `-L` команды `newfs`. Обратитесь к странице справочника newfs(8) за более подробной информацией.

Для удаления метки можно использовать следующую команду:

`#` `glabel destroy home`

В следующем примере показано, как устанавливаются метки на разделы загрузочного диска.

Пример 19.1. Установка меток на разделы загрузочного диска

Установка и задействование постоянных меток на разделах загрузочного диска предоставит возможность операционной системе загружаться нормально в том случае, если диск был переключен на другой контроллер, или даже переставлен на другую машину. В этом примере был задействован один диск ATA, определяемый системой как `ad0`. Также в примере подразумевается, что система использует типичную для FreeBSD схему разделения дискового пространства на слайсы и размещения на них файловых систем `/`, `/var`, `/usr`, `/tmp` и раздела подкачки.

Перезагрузите систему, дождитесь меню загрузчика. Нажатием клавиши 4 выберите однопользовательский режим. Далее, введите следующие команды:

`#` `glabel label rootfs /dev/ad0s1a` GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs `#` `glabel label var /dev/ad0s1d` GEOM_LABEL: Label for provider /dev/ad0s1d is label/var `#` `glabel label usr /dev/ad0s1f` GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr `#` `glabel label tmp /dev/ad0s1e` GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp `#` `glabel label swap /dev/ad0s1b` GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap `#` `exit`

Система продолжит загрузку в многопользовательский режим. По завершении загрузки откройте файл `/etc/fstab` и замените в нём традиционные имена файлов устройств на соответствующие устройствам метки. Результат будет выглядеть подобно следующему:

# Device Mountpoint FStype Options Dump Pass# /dev/label/swap none swap sw 0 0 /dev/label/rootfs / ufs rw 1 1 /dev/label/tmp /tmp ufs rw 2 2 /dev/label/usr /usr ufs rw 2 2 /dev/label/var /var ufs rw 2 2

Перезагрузите еще раз систему. Если всё прошло успешно, система загрузится как обычно, а вывод команды `mount` отобразит следующее:

`#` `mount` /dev/label/rootfs on / (ufs, local) devfs on /dev (devfs, local) /dev/label/tmp on /tmp (ufs, local, soft-updates) /dev/label/usr on /usr (ufs, local, soft-updates) /dev/label/var on /var (ufs, local, soft-updates)

Начиная с FreeBSD 7.2, GEOM класс glabel(8) поддерживает новый тип меток для файловых систем UFS. Новый тип меток базируется на уникальных идентификаторах файловых систем, называемых `ufsid`. Во время загрузки системы они автоматически создаются и помещаются в каталог `/dev/ufsid`. Перечисление меток должным образом в файле `/etc/fstab` делает возможным монтирование разделов по значениям `ufsid`. Чтобы получить перечень файловых систем и соответствующих им меток `ufsid`, выполните команду `glabel status`:

`%` `glabel status` Name Status Components ufsid/486b6fc38d330916 N/A ad4s1d ufsid/486b6fc16926168e N/A ad4s1f

В данном примере `ad4s1d` содержит файловую систему `/var`, а `ad4s1f` соответствует файловой системе `/usr`. Эти файловые системы можно также монтировать, указав значения их `ufsid` в файле `/etc/fstab`:

/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2 /dev/ufsid/486b6fc16926168e /usr ufs rw 2 2

Таким способом могут быть смонтированы любые разделы с метками `ufsid`, что исключает необходимость создания постоянных меток вручную и в то же время позволяет воспользоваться преимуществами монтирования по меткам.

Пред. | Наверх | След.
19.5. Сетевые устройства GEOM Gate | Начало | 19.7. Журналирование UFS средствами GEOM

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

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