Linux программирование в примерах - Арнольд Роббинс
Шрифт:
Интервал:
Закладка:
Не все из этих файловых систем поддерживаются командой mount; список поддерживаемых см. в mount(8).
Журналирование является методикой, впервые использованной в системах баз данных для увеличения производительности обновлений файлов таким образом, что восстановление файловой системы в случае аварии могло быть сделано быстро и правильно. В момент написания этого были доступны несколько различных журналируемых файловых систем, конкурирующих за продвижение в мире GNU/Linux. Одной из них является ext3; у нее преимущество обратной совместимости с существующими файловыми системами ext2, очень просто конвертировать файловые системы туда-сюда между этими двумя видами (См. tune2fs(8).) ReiserFS и XFS также имеют своих твердых сторонников.
Файловые системы fat, msdos, umsdos и vfat все разделяют общий исходный код. В общем, можно использовать vfat для монтирования разделов Windows FAT-32 (или другой FAT-xx), a umsdos, если нужно использовать раздел FAT в качестве корневой файловой системы для GNU/Linux.
Файловые системы Coherent, MINIX, первоначальной System V и Xenix все имеют сходные структуры на диске. Тип файловой системы sysv поддерживает все из них; четыре имени coherent, minix, sysv и xenix являются псевдонимами один для другого. Имена coherent и xenix в конечном счете будут удалены.
Быстрая файловая система BSD в течение нескольких лет успешно развилась. Файловая система ufs поддерживает операции чтения/записи для версий, начиная с 4.4 BSD, которая является основой для трех широко распространенных операционных систем BSD: FreeBSD, NetBSD и OpenBSD. Она поддерживает также операции чтения/записи для файловой системы Sun Solaris как для SPARC, так и для систем Intel x86. Первоначальный формат BSD и формат операционной системы NeXTStep поддерживаются в режиме только для чтения.
Обозначения «RO» для befs и ntfs означают, что файловые системы этих типов можно смонтировать и читать, но в них невозможно записать файлы или удалить из них файлы. (Со временем это может измениться; проверьте документацию своей системы.) Файловые системы cramfs, iso9660, romfs и udf отмечены «RO», поскольку лежащее в их основе средство по своей сути является устройством только для чтения.
Две файловые системы, которых больше не существует, это ext, которая была оригинальной расширенной файловой системой, и xiafs, которая расширяла оригинальную файловую систему MINIX для использования длинных имен и больших размеров файлов, xiafs и ext2 появились примерно в одно время, но ext2 в конечном счете стала доминирующей файловой системой.[80]
8.1.3. Монтирование файловых систем: mount
Команда mount монтирует файловые системы, соединяя их содержимое в системную иерархию файлов в их точках монтирования. Под GNU/Linux это иногда запутано, поскольку приходится иметь дело со всеми известными типами файловых систем и их опциями. Обычно запустить mount может лишь root, хотя в некоторых случаях можно сделать исключения, как в случае, обсуждаемом далее в главе.
Файловую систему вы указываете с помощью опции -t:
mount [опции] устройство точка_монтирования
Например (# является приглашением для root):
# mount -t iso9660 /dev/cdrom /mnt/cdrom /* Монтировать CD-ROM */
# mount -t vfat /dev/fd0 /mnt/floppy /* Монтировать гибкий диск MS-DOS */
# mount -t nfs files.example.com:/ /mnt/files /* Монтировать файловую систему NFS */
Можно использовать '-t auto', чтобы заставить mount угадать тип файловой системы. Это обычно работает, хотя если вы точно знаете, каков тип файловой системы, опция '-t' помогает указать тип и избежать вероятности ошибочного определения файловой системы, mount по умолчанию угадывает нужный тип, поэтому '-t auto' не является абсолютно необходимым.
Системы GNU/Linux предусматривают специальную разновидность монтирования посредством кольцевого (loopback) устройства. Таким способом образ файловой системы, содержащийся в обычном файле, может быть смонтирован, как если бы это было настоящее дисковое устройство. Эта возможность очень полезна, например, при использовании образов CD-ROM. Она позволяет создать образ и испытать его без необходимости прожига на болванке CD с последующим его монтированием. Следующий пример использует первый образ CD из дистрибутива GNU/Linux RedHat 9:
# ls -l shrike-i386-discl.iso /* Исследование файла образа CD */
-rw-r--r-- 1 arnold devel 668991488 Apr 11 05:13 shrike-i386-discl.iso
# mount -t iso9660 -o ro,loop shrike-i386-discl.iso /mnt/cdrom
/* Смонтировать его в /mnt/cdrom */
# cd /mnt/cdrom /* Перейти туда */
# ls /* Посмотреть файлы */
autorun README.it RELEASE-NOTES-fr.html
dosutils README.ja RELEASE-NOTES.html
EULA README.ko RELEASE-NOTES-it.html
GPL README.pt RELEASE-NOTES-ja.html
images README.pt_BR RELEASE-NOTES-ko.html
isolinux README.zh_CN RELEASE-NOTES-pt_BR.html
README README.zh_TW RELEASE-NOTES-pt.html
README-Accessibility RedHat RELEASE-NOTES-zh_CN.html
README.de RELEASE-NOTES RELEASE-NOTES-zh_TW.html
README.es RELEASE-NOTES-de.html RPM-GPG-KEY
README.fr RELEASE-NOTES-es.html TRANS.TBL
# cd /* Сменить */
# umount /mnt/cdrom /* Демонтировать */
Возможность монтирования таким способом образа ISO 9660 особенно полезна при тестировании сценариев, создающих образы CD. Вы можете создать образ в обычном файле, смонтировать его и проверить, что он подготовлен правильно. Затем, убедившись, что все в порядке, можно скопировать образ на записываемый CD («прожечь» CD). Возможность кольцевого устройства полезна также для монтирования образов гибких дисков
8.1.4. Демонтирование файловых систем: umount
Команда umount демонтирует файловую систему, удаляя ее содержимое из системной иерархии файлов. Использование следующее:
umount файл-или-устройство
Демонтируемая файловая система не должна быть занята. Это означает, что нет процессов с открытыми в файловой системе файлами и что ни у одного процесса текущий рабочий каталог не находится в этой файловой системе:
$ mount /* Показать, что смонтировано */
/dev/hda2 on / type ext3 (rw) /* / находится на настоящем устройстве */
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda5 on /d type ext3 (rw) /* To же c /d */
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
$ su /* Переключиться на суперпользователя */
Password: /* Пароль не отображается */
# cd /d /* Сделать /d текущим каталогом */
# umount /d /* Попытка демонтировать /d */
umount: /d: device is busy /* Doesn't work; it's still in use */
# cd / /* Сменить /d */
# umount /d /* Еще одна попытка демонтировать /d */
# /* Молчание золото: umount работает */
8.2. Файлы для администрирования файловой системы
Файл /etc/fstab[81] перечисляет файловые системы, которые могут быть смонтированы. Большинство из них монтируются автоматически, когда система загружается. Формат следующий:
устройство точка-монтирования тип-фс опции dump-freq fsck-pass
(dump-freq и fsck-pass являются административными особенностями, не относящимися к настоящему обсуждению). Например, на нашей системе файл выглядит следующим образом:
$ cat /etc/fstab
# device mount-point type options freq passno
/dev/hda3 / ext3 defaults 1 1 /* Корневая файловая система */
/dev/hda5 /d ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
# Windows partition:
/dev/hda1 /win vfat noauto,defaults,user,uid=2076,gid=10 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /* Монтируемый */
/dev/fd0 /mnt/floppy auto noauto,owner 0 0/* Гибкий диск, то же самое */
Разрешены комментарии, начинающиеся с #. Вскоре, в разделе 8.2 1 «Использование опций монтирования», будет обсуждение различных опций.
Тот же самый формат файла используется для /etc/mtab, куда mount записывает информацию о файловых системах, когда они смонтированы; umount удаляет информацию из этого файла, когда файловая система демонтирована:
$ cat /etc/mtab