Файловая система. Монтирование. chroot. Инструменты для работы с ФС.

Будем рассматривать инструментарий как среду и смотреть, что именно с помощью этой среды можно делать. В прошлом семестре делали тоже самое - не начинали с ядраЮ а смотрели что можно делать. Оставимпока за бортом пользовательские приложения, но восновном подход будет тем же самым.

Сейчас будем вспоминать, что у нас былов прошлом семестре на аналогичные темы. С тз пользователя ос представляется в виде файлов и процессов. И, фактически, больше ничего другого. Вся работа пользователя с ос состоит в манипуляции файлами при помощи процессов. Сами файлы и процессы могут быть специфические. Тем не менее, за рамки этого дела редко когда выходит, если манипулировать ос. Есть ещё третья часть -- использование аппаратуры, но это задача тоже прикладная.

Файлы и процессы -- разной степени прозрачности понятия. Процессов пользователь сначала даже, как бы и не видит. Видимый объект -- файлы. Отголоском неравномерной прозрачности 2 терминов является сложность на экзамене в вопросе про права доступа "кого к кому доступ". отвечают пользователей к файлам, а на самом деле, конечно, процессов к файлам.

В позикс системах принято описывать все содержимое файлового пространства и понятия файловой системы. С точки зрения линукса фс -- это единое дерево с единым корнем. В этом корне есть подкаталоги.

FHS рассказывает, что где должно лежать. Про это уже много говорилось. Вспомним кое что из требований этого стандарта. Все бинарные файлы лежат в каталогах числом от 2 до 4.

/bin
/sbin
/usr/bin
/usr/sbin
опционально /usr/local/bin итд

/lib -- билиотеки.

/var -- информация размер которой не специфицирован. Логи, журналы, корни сайтов.

/share с подкаталогами, изначально для расшаривания по сети между компьютерами с разной архитектурой. Сейчас эта идея не очень нужна, но мы знаем, что там лежат вещи архитектурно независимые.

петя новодворский прислал неожиданно письмо. он нашел в недрах переписки откуда на самом деле появился /usr. Сначала у людей был маленький винчестер, а потом им внезапно купили большой. На который они и стали складывать большие программы, и вообще. /usr можно смело монтировать ро. В последенее время появились активные наезды на существование /usr, например, со стороны редхата и федоры. Всё полжим в один каталог и вместо 4 их будет 1. Но стандарт пока не поменяли.

Довольно важной частью стандарта является кактлог /etc.

Ещё одним важным каталогом является каталог /home.

Это опять всё материалы предыдущих семестров. Хоум -- один из немногих каталогов, куда обычный пользователь может что-то писать.

Следование это йиерархи имеет довольно далеко идущие последствия. Например, произвести модификацию системы с правами пользователя невозможно. кроме хоума нигде нагадить нельзя.

Единая система каталогов довольно ддолго давала в руки администратору ещё один инструмент. Разные каталоги было принчто помещать на разныеразделы. Например есть 2 жйстких диска, и по н им надо всё распихать. Скорее всего пользователм под хойм вы выедлите отдельный раздел. Файловую систему, можно, например, смонтировать без сетуид, это позволяет использовать разнос каталогов по разделам в целях безопасности.

/var тоже хорошо бы размещать на отдельном разделе.

тмп для быстроты и вовсе принято размещать в памяти.

Иерархизированная фс в линуксе позволяет вам планировать саму иерархию файлов-каталогов сообразно их назначению.

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

mount что куда

Но, заметим, тут мвы не указали файловую систему( в смысле способа организации файлов на диске). самая популярная в линусах нынче ехт3. Когда линус начала писать ядро, он смотрел на ядро миникс. И он сразу понял, что её надо переписывать. Семйество продолжало развиваться, появилось ехт2. Добавили журналирование, стало ехт3. Добавили ещё плюшек ехт4. ехт 3 можно смонтировать как ехт2, ехт4 уже нет. Линукс поддерживает кучу фс. Можно почитать ман по комманде маунт. И это будет ещё не всё, потому что маунт устроен так хитро, что части к нему можно дописывать.

Из известных фс -- btrfs, vfat, ntfs, iso9960.

тут имеются ввиду фс на носителях.

Итак, у маунта есть ещё параметр -- тип фс. Он необязателен, потому что у маунта есть встроенный мозг, которым оно пытается по сигнатурам опрделеить, что это за фс. Но иногда может и не сработать.

Кроме того, есть параметры монтирования. В мане описано безумно количество опций. Например, рид онли. Можно отключить суид. отключить опцию создания устройств -- нельзя будет создавать устройства, сокеты, итд.

Над нами висит один соблазн и одно требоване. И они совпадают.

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

Есть две виртуальный фс, которые организуют вамдоступ к некоторой информации как к файлам.

Самая известная /proc . Каждому процессу по каталогу, в каждом каталоге содержится уйма информации -- команданя строка. из которой было запущено, занимаемая память, статистика. Команда пс 15-20 лет назад работала ровно так -- он скомпилирована под конкретную версию ядра, знает где лежат его таблицы, и пряо туда лезет через специальный каталог в /dev -- /kmem . и обычный пользовательский процесс там на чтение имеля право прям таки копаться. Понятное дело, что это было давно и сделано чтобы просто быстро. С введением дополнительного слоя в виде проца этого стало моэно избежать. из прока можно извлечь больше информации, чем через пс, например можно помотреть дескрипторы файлов, с которыми он работает.

Ещё /cpuinfo -- много информации о процессоре.

В /sys можно пойти, посмотреть все 8 регионов и где порт управления шестым.

Вопрос на экзамен -- как монтируется /dev(как?).

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

/squashfs -- мрачный способ упаковки файлов в один образ, чтение с которого будет производитс быстро, но при этом занимает мало места. Например ливцд, который на диске сквошем упакован в 600 метров, может развернуться в полуторагиговую фс.

/tmpfs. Она лежит в памяти, но если места не хватает, она откачивается в своп. Это свойство тмпфса отваливаться в своп, в купе с другой особенностью линукса использовать всю оперативку под кэши, породило миф, что линукс жрет много памяти. На самом деле, память занимается под кэши, которые выгружаются, если есть необходимость что-нибудь запустить или сделать.

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

Когда есть фс, то есть сами данные и их описатели. Сбрасывание кэшей обоих областей неплохо было бы синхронизировать. тмпфс по стандарту не обязан быть чем-то заполнен после ресета. Тмпфс кэширует всё в память, по возможности. операция изолированной сборки, например, в тмпфс происходит в 10 раз быстрее, чем в обычной фс.

cifs -- common internet file system. все четыре слова неверные. поддержка цифс на уровне фс со стороны линукс работает ничуть не хуже. чем поддержка нфс. Разница между ними стоит в след: нфс это хост бейзед система, которая прирмает решение о доступе на основе, анпример, ип, а цифс каждый раз проверяет логин и пароль.

В нынешние времена принято затачиваться под кластеры, изобретают специализированные файловые ситсемы, например lustre. Отдельной песнью идет нфсв4, которую никто особо не использует. gfs. afs.

Чтобы закончить про типы фс, надо упомянуть ещё фс в пространстве пользователя. Есть у вас например амигоос. Вы написали программу, которая умеет выковыривать из неё файлы. Вам говорят -- напиши драйвер фс. ,Но вы не хотите писать модуля ядра на си и отлаживать ядро. На такой случай есть filesystem userspace environment. Фактически это один модуль ядра который обеспечивает файловый интерфейс и монтирование, н о для просмотра запускает вашу программу. Главный недостаток -- скорость, из-за работы в юзерспейсе. Зато процедура разработки просто и недвусмысленна. нтфс имеет 2 реализации сейчас -- старый кернел-драйвер, который по умолчанию рмонтирует только на чтение, потому что после его записи виндоус начинате орать, что его взломали. И есть нтфс-3г, который старается поддерживтаь как можно больше фич настоящего нтфс, но работает он чере збюзерспейс. 4 - гиговый образ писался то ли 20, то ли 40 минут.

Собственно, закрываем тему маунта. Помимо доступа к фс на носителях есть mount -o loop которая позволяет монтировать фс, находящуюся в файле. Почему это не так просто -- потому что такой файл должен быть устройством, поэтому операция становится составной -- создать устройство, потом примонтировтаь.

-щO BIND -- способ прикрепить каталог к каталогу. Жесткие ссылки на каталоги запрещены, чтобы не было циклов. каталоги будут считаться частями разных файловых систем, поэтому файнд ходить туда не будет, если ему не сказать специально опцию фс траверсал. Замонтировть каталог сам в себя маунт не даст.

как применять всю эту ерунду?

У вас есть линукс система . Потом пришел кто-то, переставил поверх винду. Туда, где она стояла раньше. Винда убила бутлоадер. Имеем грузящийся виндоус, и кусок диска с негрузящимся линуксом. Что делать понятно -- поставить первичный и вторичный загрузчик. Вы загружаетесь с ливцд, или ливусб. у вас есть какие то фс, на них чтото дежит, а вам надо груб вписать на нужное место. Есть два пути -- долго читать ман, вычитать где лежит ядро, где карта размещения, поправь пути, и положи вот туда. Есть способ проще. системный вызов чрут, и не менее прекрасная утилита чрут. можно сказать chroot /mnt/sda1 у вас запускается биншелл оттуда, и все ваши программы будут считать, что это и есть корень. всё хорошо за исключением одного /mnt/sda1/dev пустой, /mnt/sdq1/sys пустой, /proc тоже пустой. Варианта два -- берём mount -a, пускай смонтирует с помощью процфс. это не проходит, потому что с ливцд вы загрузились с свосем другим ядром. Более-менее беспроблемный способ -- с помощью o bind примонтировать дев из обычного дева, и так далее.

В дистрибутивах альтлинукса есть специальный спастельный диск, в котором есть опция фикс мбр. вот она делает ровно это.

Не стоит забывать, что mv cp и тд никто не отменял. На экзамене будут об это спрашивтаь. ответ запускаем мц не принимается.

ещё несколько комманд на разбор дома -- dd, find, du, df

LecturesCMC/GnuLinuxArchitecture2012/Conspects/01 (последним исправлял пользователь lost 2012-05-02 22:25:39)