Файловая система Linux

Операционные системы хранят данные на диске при помощи файловых систем. Классическая файловая система представляет данные в виде вложенных друг в друга каталогов (их ещё называют папками), в которых содержатся файлы. Один из каталогов является «вершиной» файловой системы (а выражаясь технически — «корнем»), в нём содержатся (или, если угодно, из него растут) все остальные каталоги и файлы.

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

В Linux корневой каталог называется весьма лаконично — “/”. Полные имена (пути) всех остальных каталогов получаются из “/”, к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом “/” («слэш»). Например, запись /home обозначает каталог “home” в корневом каталоге (“/”), а /home/user — каталог “user” в каталоге “home” (который, в свою очередь, в корневом каталоге)(Весьма похожий способ записи полного пути используется в системах DOS и Windows, с той разницей, что корневой каталог обозначается литерой устройства с последующим двоеточием, а в качестве разделителя используется символ “\” («обратный слэш»)). Перечисленные таким образом каталоги, завершающиеся именем файла составляют полный путь к файлу.
Относительный путь строится точно так же, как и полный — перечислением через “/” всех названий каталогов, встретившихся при движении к искомому каталогу или файлу. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла или каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него. Linux различает полный и относительный пути очень просто: если имя объекта начинается на “/” — это полный путь, в любом другом случае — относительный.

Монтирование

Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое(Это отличается от технологии, применяемой в Windows или Amiga, где для каждого устройства, на котором есть файловая система, используется свой корневой каталог, обозначенный литерой, например “a”, “c”, “d” и т. д.). В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях (лазерных дисках, дискетах, флэш-картах), даже на других компьютерах (с доступом через сеть). Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.

Монтирование — это подключение в один из каталогов целой файловой системы, находящейся где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи специальной команды (mount) мы объявляем, что в данном каталоге (пока пустом) нужно отображать файловую систему, доступную на таком-то устройстве или же по сети. После этой операции в каталоге (точке монтирования) появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.

Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount), после чего тот каталог, куда она была смонтирована, снова окажется пустым.

Для Linux самой важной является корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит “/” (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется (в последнюю очередь).

Пользователю обычно не требуется выполнять монтирование и размонтирование вручную: при загрузке системы будут смонтированы все устройства, на которых хранятся части файловой системы, а при останове (перед выключением) системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.

Перед монтированием внимательно посмотрите вывод команды # fdisk -l
#- запуск с правами рута
иначе начнете монтировать не те разделы :)

Монтирование FAT

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

mount -t vfat -o codepage=866,iocharset=utf8,quiet,umask=000 /dev/hdd2 /mnt/win1

Мы использовали дополнительные опции iocharset, codepage, quiet и umask. Рассмотрим их внимательнее:
codepage - это кодовая страница используемая на монтируемой ФС. Так как мы из России,то нужно писать codepage=866. Эта опция нужна для перекодировки имен файлов.
iocharset - указывает какую кодировку использовать для ввода/вывода.Нужно указать свою системную локаль. Локаль можно узнать командой locale. (Здесь под вводом/выводом понимается ввод с и вывод на терминал. Иммено поэтому нужно указывать кодировку локали, т.е. кодировку которую используют программы запущенные в терминале.)
quiet - при копировании на файловую систему FAT программа попытается записать права доступа, владельца и т.д., но на FAT их сохранить нельзя и будет выведено сообщение об ошибке ( хотя файл скопируется ). Чтобы ошибки не появлялись мы просим смонтировать в "молчаливом" режиме
umask - в некоторых случаях у простого пользователя может не хватить прав на чтение или запись файлов из-за неправильно установленных прав на файлы и директории. Поскольку у файловой системы FAT нет прав доступа, они выставляются операционной системой ( в данном случае Linux ) на лету в соответствии с указанным значением umask.

Монтирование NTFS

Для монтирования NTFS разделов опции mount немного изменятся. Делаем это так:
mount -t ntfs -o nls=utf8,umask=0,ro /dev/hdd2 /mnt/win1
nls - указывает на вашу системную локаль. Отсутствие опций codepage и iocharset связано с тем,что NTFS разделы используют юникод для хранения имен файла.
umask - указывает на то что читать файлы с этого раздела могут все. А вот писать не разрешает опция ro. Мы рекомендуем ее поставить,так как функция записи на разделы NTFS еще не отлажена.

В случае если вы в качестве системной кодировки используете koi8-r, то опции mount должны быть следующими:
mount -t ntfs -o nls=koi8-r,umask=0,ro /dev/hdd2 /mnt/win1

Монтирование при загрузке компьютера

Создадим каталог /mnt/win (например), в который и будет монтироваться fat-раздел.
$ mkdir /mnt/win

отредактируем файл /etc/fstab и добавим в него такую строку:
/dev/hda1 /mnt/win vfat  auto,iocharset=utf8,codepage=866,rw,umask=000,showexec,quiet 0 0

Где:
/dev/hda1 - имя файла устройства (дискового раздела), несущего fat,
/mnt/win - точка монтирования(то есть каталог, куда попадет содержимое fat-раздела после монтирования),
iocharset=koi8-r - локаль вашей системы,
codepage=866 кодировка windows-раздела,
umask=000 - т.н. маска доступа, в приведенной форме делает fat- раздел доступным всем юзерам системы для чтения, записи и исполнения,
showexec - нужна, чтобы как исполняемые отображались только файлы с расширениями com, exe, bat; если её не указать, файлы будут отображаться в соответствие со значнеиями umask (в приведенном выше примере - все как исполняемые),
quiet - отмена сообщений о невозможности изменения атрибутов файлов при их копировании на fat-раздел (так как fat не хранит информацию о владельце файла и правах доступа, то при попытке записи такой информации будут выдаваться сообщения о невозможности её записать, что не несёт полезной информации, а только мешает).

/dev/hdb1 /mnt/win_f ntfs ro,auto,users,umask=022 0 2

Когда дела обстоят не совсем гладко

При использовании ntfs-fuse для записи вы можете создать до 10 файлов в одном каталоге. Если вы хотите использовать ntfs разделы для нормальной работы (т. е. создавать больше 10 файлов в одной директории) тогда найдите полный ntfs драйвер в форме ntfs-3g. Для этого установите пакеты содержащие ntfs-3g (apt-cache search ntfs-3g) и используйте:

/dev/hdb1 /mnt/win_f ntfs-3g auto,users,umask=022 0 2

о правильных umask
Controlling file permissions with umask

по материалам
http://heap.altlinux.ru/alt-docs/module … index.html

http://ru.gentoo-wiki.com/HOWTO_Разделы … _по-русски   

_http://ru.gentoo-wiki.com/HOWTO_Разделы_MS_Windows_по-русски
//убогий форум не асилил ссылку на вики))

http://citkit.ru/articles/147/   

http://ru.opensuse.org/NTFS

//нужна доработка но лень
//сообщаем о косяках - буду править

Отредактировано Lex_Work (2008-01-31 23:01:31)