Использование неродных файловых систем


Для наших целей любой раздел или диск, который не является разделом FFS, есть неродная (foreign) файловая система. К счастью, во FreeBSD реализована серьезная поддержка неродных файловых систем. Отметим, что будут работать только те функции, которые поддерживаются в самой файловой системе. Например, файловая система FAT32 компании Microsoft не поддерживает права доступа, а файловые системы, используемые в операционной системе Linux, не поддерживают флаги файлов, характерные для BSD.

Каждая неродная файловая система должна иметь поддержку в ядре FreeBSD. К счастью, в случае необходимости программа mount(8) автоматически загружает соответствующий модуль ядра.

Для монтирования неродной файловой системы необходима та же информация, что и для монтирования FFS: имя устройства и точка монтирования. Также необходимо знать тип файловой системы и имя команды, которая монтирует файловые системы данного типа. Например, для монтирования CD-ROM в системе FreeBSD имеется точка монтирования /cdrom. Первое устройство IDE CD в системе имеет имя /dev/acd0. Для компакт-дисков используется файловая система ISO 9660, а команда FreeBSD, которая выполняет их монтирование, имеет вид: mount -t cd9660(8). Следующая команда выполняет монтирование компакт-диска в каталог /cdrom:

# mount -t cd9660 /dev/acd0 /cdrom

Теперь можно перейти в каталог /cdrom и ознакомиться с его содержимым. Просто, не правда ли?

При попытке монтировать диск командой, не поддерживаемой в данной файловой системе, будет выдано сообщение об ошибке. Например, у меня дома все дискеты содержат либо файловую систему FAT32, либо FFS. Накопителю на гибких магнитных дисках соответствует файл устройства /dev/fd0, а каталог /media является стандартной точкой монтирования дискет.

# mount /dev/fd0 /media
mount: /dev/fd0 on /media: incorrect super block
(Перевод: монтирование: /dev/fd0 в /media: некорректный суперблок)

Эта дискета содержит файловую систему FAT32. Если бы я запустил команду mount -t msdosfs, никаких ошибок не было бы.

Независимо от типа монтированной файловой системы ее можно размонтировать с помощью umount(8):

# umount /cdrom

Утилита umount(8) не делает никаких предположений о типе файловой системы. Она просто отключает раздел диска.

Поддерживаемые типы неродных файловых систем

Ниже приводится список наиболее распространенных неродных файловых систем с кратким описанием и соответствующими командами монтирования.

  • FAT (MS-DOS)
    Во FreeBSD реализована значительная поддержка файловой системы FAT (DOS/Windows 9x File Allocation Table), обычно используемой для сменных носителей и в случае одновременной установки на компьютер двух операционных систем. Данная поддержка охватывает такие разновидности FAT, как FAT12, FAT16 и FAT32. Впрочем, можно форматировать дискеты в FFS, поэтому не надо слепо полагать, что все дискеты имеют формат FAT. Поскольку дискеты чаще всего используются для переноса файлов с одного компьютера на другой, то обычно они форматируются в файловой системе FAT32. Тип монтируемой системы — msdosfs (mount -t msdosfs).
    Если вам приходится монтировать много устройств с файловой системой FAT32, ознакомьтесь как следует с каталогом /usr/’ports/tools/mtools. Здесь собраны программы для работы с файловой системой FAT, обладающие более высокой гибкостью, чем стандартные инструменты FreeBSD.
  • ISO 9660
    ISO-9660 — это стандартная файловая система для компакт-дисков. FreeBSD позволяет считывать данные с CD-ROM, а также записывать их при наличии записывающего привода. Чуть ли не каждый компакт-диск, с которым вы столкнетесь, будет иметь формат ISO 9660. Команда монтирования — mount -t cd9660.
    Пакет инструментальных средств cdrtools, который можно найти в /usr/ports/sysutils/cdrtools, содержит множество полезных инструментов для работы с образами компакт-дисков, включая средства создания ISO-образов из файлов на диске.
  • UDF
    Файловая система UDF (Universal Data Format — универсальный формат хранения данных) появилась как замена ISO 9660. Файловую систему UDF можно обнаружить на некоторых DVD-дисках и flash-устройствах с интерфейсом USB, емкость которых превышает 32 Гбайт — верхней границы, поддерживаемой файловой системой FAT32. С ростом емкости сменных носителей вам все чаще и чаще будет встречаться файловая система UDF. Команда монтирования: mount -t udf.
  • NTFS
    Стандартная файловая система Windows NT/2000/XP, NTFS, тесно интегрирована с ядром Microsoft. Чтобы записывать данные в раздел NTFS, необходимо глубоко понимать работу этой файловой системы. К сожалению, Microsoft не предоставляет такую информацию, поэтому FreeBSD может безопасно монтировать разделы NTFS в режиме «только для чтения», а функциональность режима чтения/записи имеет существенные ограничения. Команда монтирования — mount -t ntfs.
    Возможность монтирования разделов NTFS наиболее часто бывает необходима при переходе с систем Windows на систему FreeBSD — просто извлеките жесткий диск из Windows-машины, смонтируйте его в FreeBSD-машину и скопируйте необходимые данные. Кроме того, поддержка NTFS бывает необходима, когда на компьютере установлены сразу две операционные системы, и одна из них — Windows.
    Так как спецификации NTFS закрыты, а кодирование данных производится малоизвестным способом, поддержка NTFS в системе FreeBSD не гарантирует корректную работу.
  • ext2fs и ext3fs
    Стандартные файловые системы Linux — ext2fs и ext3fs — поддерживают многие функции файловой системы FreeBSD, позволяя безопасно читать и записывать данные. Подобно монтированию NTFS монтирование файловых систем Linux довольно полезно при чрезвычайных обстоятельствах или при наличии двух операционных систем на компьютере. Несмотря на различия в названиях, обе файловые системы монтируются одной и той же командой mount -t ext2fs.
    Пользователи файловых систем Linux могут найти полезные инструментальные средства в каталоге /usr/ports/sysutils/e2fsprogs. Кроме всего прочего эти инструменты позволят запускать команду fsck(8) и выполнять оценку повреждений файловых систем Linux.
  • ReiserFS
    Файловая система ReiserFS имеет не слишком много приверженцев среди пользователей Linux. FreeBSD поддерживает монтирование разделов ReiserFS исключительно в режиме «только для чтения». Поддержка реализована непосредственно в программе mount(8). Команда монтирования: mount -t reiserfs раздел точка_монтирования.
  • XFS
    Операционная система FreeBSD поддерживает возможность чтения разделов с файловой системой XFS, созданной компанией SGI, однако, к моменту написания этих строк, реализация операции записи находилась еще на экспериментальной стадии. Файловая система XFS — это самая старая журналируемая файловая система, с хорошо отлаженной реализацией. Однако XFS распространяется на основе лицензии GPL, что делает маловероятным включение этой файловой системы в базовую систему FreeBSD. Журналирование в FreeBSD поддерживается командой gjournal, рассматриваемой в главе 18.
    Программы форматирования, монтирования и управления разделами XFS можно найти в каталоге /usr/ports/sysutils/xfsprogs.
  • ZFS
    Начиная с версии 7.0, операционная система FreeBSD включает в себя экспериментальную поддержку файловой системы ZFS, перенесенной с платформы OpenSolaris. Хотя инсталлятор FreeBSD и не поддерживает ZFS, тем не менее в случае необходимости вы сможете использовать расширенные возможности ZFS. Порядок лицензирования этой файловой системы не позволяет сделать ее основной в системе FreeBSD, однако ее высокая производительность может оказаться востребованной для определенных применений в многотерабайтных файловых системах и в 64-битных системах. В 32-битных системах ZFS испытывает некоторые проблемы с памятью, но в 64-битных системах репутация ZFS безукоризненна.

Права доступа и неродные файловые системы

Метод, применяемый для монтирования файловой системы, и пользователь, который ее монтирует, определяют права доступа монтированной файловой системы. Например, XFS и ext3fs хранят права доступа в файловой системе, ставя их в соответствие идентификаторам пользователей (UIDs). Поскольку права доступа в них очень напоминают права доступа в FFS, а вся информация о правах доступа находится в самой файловой системе, FreeBSD соблюдает эти права доступа.

Файловая система NTFS имеет свою систему прав доступа. Поскольку NTFS лишь отдаленно похожа на UNIX-подобные системы, права доступа NTFS будут отброшены при монтировании этой файловой системы во FreeBSD. Она будет рассматриваться как аналог CD-ROM или дискеты.

По умолчанию монтировать файловые системы может только root. Он же владеет всеми неродными файловыми системами. Если это не соответствует вашим предпочтениям, то с помощью ключей -u и -g можно указать ID пользователя и группы при монтировании файловых систем FAT32, NTFS или ISO 9660. Например, следующая команда подойдет при монтировании устройства USB с файловой системой FAT32 для пользователя «cstrzelc», причем этот пользователь сможет редактировать содержимое дискеты:

# mount -t msdosfs -u cstrzelc -g cstrzelc /dev/da0 /mnt

Теперь пользователь cstrzelc является владельцем файлов этой дискеты.

Монтируя носители под пользователей, можно заработать мигрень, особенно если это приходится делать на нескольких десятках компьютеров. Чтобы разрешить пользователю монтировать файловые системы, присвойте параметру sysctl vfs.usermount значение 1 и убедитесь, что пользователь владеет точкой монтирования. В результате пользователь cstrzelc не сможет монтировать сменные носители в каталог /mnt, зато сможет монтировать их в каталог /home/cstrzelc/mnt.

Комментарии запрещены.