Тайны монтирования
ArticleCategory:
UNIXBasics
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido Socher
en to ru Pukhlyakov Kirill
AboutTheAuthor:[A small biography about the author]
Guido нравится Linux из-за сообщества. Это огромный проект,
в котором трудятся люди со всего мира, чтобы сделать Linux лучше
и делают они это каждый день.
К сожалению проект Linux сегодня настолько большой, что привлекает
людей, которые хотят только получить прибыль, ничего не дав взамен.
Осторожно! Они обычно появляются как "pro-linux", но они всего лишь
заинтересованы в собственной прибыли.
Abstract:
В заметке рассматриваются вопросы монтирования дисков. Она должна быть
интересна даже тем из вас кто знаком с ОС Linux.
ArticleIllustration:
ArticleBody:
Введение
Сначала я расскажу об основах монтирования файловых систем, а затем
рассмотрю более сложные возможности. Если вы чувствуете себя экспертом в
области Linux - читайте немного ниже.
Как это работает
В настоящее время пользователи windows знакомы со следующей проблемой:
добавление нового диска приводит к возникновению беспорядка в
существующей последовательности обозначений. Например то, что было диском
D: вдруг стало диском E:, вследствие чего и пользователи и программное
обеспечение пребывают в недоумении.
Используя Unix вы никогда не столкнетесь с подобной проблемой, потому что
все физические диски устанавливаются в дерево каталогов. Вы можете убедиться
в этом, набрав команду "mount" или "df":
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 9070728 4701180 3908768 55% /
/dev/hda3 24950428 683412 22999584 3% /home
none 257236 0 257236 0% /dev/shm
# mount
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda3 on /home type ext3 (rw)
|
Мы видим два раздела диска, один из которых содержит все кроме
"/home". Это раздел "/" и физически он
присоединен к hda1. hda1 - это первый раздел (1) первого ide диска
(hda). Третий раздел (hda3) этого диска подмонтирован к "/home"
Таким образом если вы обратитесь к "/home" вы получите
доступ к файлам раздела hda3. Вам никогда не придется беспокоиться
какая это буква - D:, E: или ???. Это всегда просто каталог и всегда
один и тот же.
Проблема занятости файловой системы
ОС Linux помещает операции файловой системы по чтению и записи в
буфер. Можно заметить это читая большой файл с usb (1.1) диска.
Первый раз чтение занимает достаточно много времени, но повторное чтение
того же самого файла происходит намного быстрее - лампочка на диске
даже не мерцает.
Следствием такой возможности использования дисков является то, что
вы не можете просто изъять используемый диск, необходимо его сначала
размонтировать. Для обычных жестких дисков это не проблема для
обсуждения, это касается cdrom приводов и USB дисков.
Предположим вы подмонтировали usb-stick в /mnt/usb и выполнили команду
"cd /mnt/usb" - bash уже использует эту файловую систему. Если вы попробуете
размонтировать это устройство из другого окна оболочки вы получите сообщение
"file system busy" и размонтирование не будет выполнено. Чтобы решить эту
проблему достаточно выполнить команду "cd" в /mnt/usb и тогда можно
размонтировать. Иногда проблема может быть в том, что вы забыли кто
использует эту файловую систему - открыто так много приложений, что это не
удивительно.
Спросите компьютер!
# fuser -m -u /mnt/usb
/mnt/usb: 1347c(root) 1348c(guido) 1349c(guido)
Команда выводит список процессов использующих файловую систему. Теперь командой
"ps auxw" можно узнать что это или просто остановить эти процессы. После этого
umount выполнит свою работу.
Но windows может это делать!?
Почему бы просто не вынуть usb-stick? Старые компьютеры с dos/win3.1
можно было просто отключить от питания. Не было никаких shutdown'ов.
В то время некоторые мои знакомые жаловались, что перед отключением
Linux от питания сначала надо было сделать shutdown. Затем появилась
win95 и все эти разговоры прекратились - ей также надо было сначало
выполнить shutdown и только потом выключать питание.
Linux тоже может это делать!
Для ОС Linux также есть решения позволяющие просто взять и вынуть диск
( например usb disk ). В дистрибутиве Mandrake это называется supermount -
воспользовавшись вы получите такой же результат ( или проблемы ) как в
windows. Не рекомендую вам пользоваться этим - возможны проблемы со
стабильностью работы и не исключена потеря файлов.
Намного лучше пользоваться набором утилит mtools (http://mtools.linux.lu/) -
это команды для доступа к дискетам, usb-stick'ам ... короче говоря любой
носитель с файловой системой FAT. Исспользуя этот набор утилит вам не надо
ничего монтировать.
Небольшой совет:
-
Отредактируйте /etc/mtools.conf добавив следующую строку
drive u: file="/dev/sda1" # or sda4; some usb-stick have partion
# 4 created as factory default.
- Теперь вам НЕ надо монтировать /dev/sda1. Просто наберите
mdir u:
чтобы узнать что на usb-stick'е.
mcopy * u:
копирование всех файлов текущего каталога на usb-stick.
mcopy u:\* .
копирование всех файлов с usb-stick'а в текущий каталог.
Этот набор утилит прост в использовании и очень удобен.
Как разрешить всем пользователям монтировать файловые системы
Чтобы подмонтировать файловую систему обычно надо обладать привилегиями
root'а. Но возможно для некоторых устройств ( например cdrom или usb-stick )
вы желаете позволить делать это любому пользователю. В этом случае все,
что вам необходимо сделать это добавить следующую строку в файл /etc/fstab:
# dev mount point fs type flags
/dev/sda1 /mnt/usb auto noauto,user 0 0
В этой строке содержится следующая информация: sda1 ( первый раздел
первого scsi диска, usb диски отображаются как scsi устройства ), не
может быть подмонтирован при запуске системы ( noauto ) и может быть
подмонтирован/размонтирован любым пользователем ( user ). Поле FS-type
также установлено в auto - можно монтировать usb-stick с файловой системой
vfat или ext2 и она будет определена автоматически.
Лэптопы и nfs
NFS полезна если вам необходим централизованный бэкап домашних каталогов
нескольких пользователей. Все что нужно - это подмонтировать домашние каталоги
с центрального сервера и у всех пользователей будут индивидуальные каталоги
доступные на всех компьютерах в сети. Одни и те же данные, установки и т.д.
везде. Это действительно удобно.
Но как быть в случае с мобильными пользователями?
Как только вы отключаетесь от сети - ваш каталог теряется. Одно из
возможных решений - всегда копировать данные ( rsync ), но это может
привести к нарушению целостности каталога если вы недостаточно дисциплинированны
или вам не всегда нужна полная копия домашнего каталога. Я нашел неплохое
решение этой проблемы - создать второй небольшой домашний каталог с данными
и установками необходимыми мне только во время поездок.
Когда вы монтируете файловую систему ( любая файловая система/диск с nfs )
на непустой каталог - содержимое этого каталога становится невидимым и вы видите
только подмонтированную файловую систему.
Вот мое решение: создаем точку монтирования для домашних каталогов
( /home ) и производим автомонтирование ( automount ) в нее различных домашних
каталогов когда компьютер в сети. Кроме того, перед монтированием создаем
softlink для пользователя, владельца лэптопа на off-line домашний каталог:
/home/guido -> ../home_nonet/guido
Когда пользователь guido в сети, он видит свой обычный домашний каталог. Когда он в пути
он видит /home_nonet/guido своим домашним каталогом ( /home/guido ).
Это решение мне очень нравится.
Вывод
Построение абстрактного уровня для устройств всегда было целью Unix. Подмонтирование/
размонтирование файловых систем/дисков одна из возможностей достичь этого.