Обзор файловых систем
Файловая система Linux состоит из файлов, которые размещаются на диске или другом блочном устройстве хранения в каталогах. Также как во многих других системах, каталоги в Linux могут содержать другие каталоги, которые называют подкаталогами. В отличие от такой системы как Microsoft® Windows® с концепцией отдельных файловых систем для каждой буквы диска (A:, C: и так далее.), файловая система Linux является одним деревом с каталогом / в качестве корневого каталога (root).
Вы можете удивиться почему же схема жесткого диска важна, если файловая система это одно большое дерево?! Дело в том, что каждое блочное устройство, такое как раздел жесткого диска, CD-ROM или дискета на самом деле уже имеют свою файловую систему. Вы создаете отдельную ветку файловой системы путем монтирования (mounting) файловых систем других устройств в точку дерева, называемой точкой монтирования (mount point).
Обычно вы начинаете процесс монтирования монтированием файловой системы одного из разделов жесткого диска как /. Вы можете смонтировать другие разделы жесткого диска как /boot, /tmp или /home. Например, вы можете монтировать файловую систему дискеты (floppy-диска) как /mnt/floppy, и файловую систему CD-ROM как /media/cdrom1. Вы можете также монтировать файлы других компьютеров, используя сетевые файловые системы, такие как NFS. Существуют и другие варианты монтирования файловых систем, но уже перечисленных достаточно, чтобы понять идею этого процесса. Для описания процесса монтирования файловой системы некоторого устройства обычно просто говорят: “монтируется устройство”, что следует понимать как “монтирование файловой системы устройства”.
Итак, предположим вы только что смонтировали корневую файловую систему (/) и хотите смонтировать IDE CD-ROM, /dev/hdd, в точку монтирования /media/cdrom. Точка монтирования должна существовать до того, как вы смонтируете в нее CD-ROM. Когда вы монтируете CD-ROM, файлы и подкаталоги CD-ROM становятся файлами и подкаталогами внутри /media/cdrom. Любые файлы и подкаталоги, что уже имелись в /media/cdrom становятся не видны, хотя они все еще существуют на блочном устройстве, содержащем точку монтирования /media/cdrom. Как только CD-ROM будет размонтирован, все оригинальные файлы и каталоги вновь станут видны. Вам следует избегать проблем, связанных с размещением других файлов в каталоге, который собираетесь использовать в качестве точки монтирования.
В Таблице 1 показаны каталоги, которые должны быть в / согласно Filesystem Hierarchy Standard [Стандарту иерархии файловых систем]
Каталог | Описание |
---|---|
bin | Бинарные файлы важных программ |
dev | Файлы устройств |
lib | Важные общие библиотеки и модули ядра |
mnt | Точка монтирования для временного монтирования файловых систем |
sbin | Важные бинарные файлы системы |
tmp | Временные файлы |
var | Часто изменяемые данные |
|
Разделы
Первый учебник этой серии, “Учебник для экзамена LPI 101: Аппаратное обеспечение и архитектура” слегка затронул разделы жестких дисков, и теперь мы собираемся разобраться в них более детально.
Первый жесткий диск IDE в системе Linux это /dev/hda, а первый SCSI диск это /dev/sda. Жесткий диск разбит на сектора по 512 байт. Все сектора на пластине жесткого диска, которые могут быть прочитаны без перемещения головки, называются трэками [Прим.пер.: в русскоязычной литературе также встречается термин "дорожка"]. Диски обычно имеют более одной пластины. Набор дорожек разных пластин, которые могут быть прочитаны без перемещения головок называется цилиндром. Геометрия жесткого диска выражается в цилиндрах, дорожках (или головках) на цилиндр и секторах на дорожке.
Ограничения на возможные значения каждой из этих величин, использовавшиеся операционной системой, привели к тому, что указанные в BIOS параметры геометрии диска пришлось преобразовывать, чтобы появилась возможность работы с большими дисками. В конце концов и этих методов стало не достаточно. Большинство последних разрабатываемых технологий жестких дисков могут использоваться только с логической адресации блоков (LBA — logical block addressing) , так что физические единицы геометрии CHS все менее важны и отображаемая геометрия может быть не совсем верна или вообще не иметь связи со структурой современных дисков. Диски больших размеров, которые используются сегодня, работают с расширением LBA, известным как LBA48 и отличающимся тем что на нумерацию секторов резервируется до 48 бит.
Пространство жесткого диска разбито (или разделено) на разделы (partition). Разделы не могут перекрываться; пространство не входящее ни в один раздел называется свободным пространством (free space). Разделы имеют имена /dev/hda1, /dev/hda2, /dev/hda3, /dev/sda1 и тому подобные. IDE диски имеют ограничение в 63 раздела, а SCSI диски до 15. Разделы обычно содержат целое число цилиндров (что связано с возможностью ошибочной ссылки на цилиндр).
Если две различные программы для разбиения по разному понимают номинальную геометрию диска, то одна из программ может сообщать об ошибке или иметь проблемы с разделами, созданными другой программой для разбиения. Вы также можете встретить проблемы такого рода если диск был перемещен из одной системы в другую, особенно если возможности BIOS различны. В Linux вы можете узнать номинальную геометрию, просмотрев соответствующий файл в файловой системе /proc, например, /proc/ide/hda/geometry. Эта геометрия используется такими инструментами разбиения диска как fdisk и parted. Листинг 1 показывает использование команды cat для отображения /proc/ide/hda/geometry, а следом идет информационное сообщение, полученное при использовании инструмента разбиения parted.
Листинг 1. Геометрия жесткого диска
[root@lyrebird root]# cat /proc/ide/hda/geometry
physical 19457/255/63
logical 19457/255/63
[root@lyrebird root]# parted /dev/hda
GNU Parted 1.6.3
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
Using /dev/hda
Information: The operating system thinks the geometry on /dev/hda is
19457/255/63. Therefore, cylinder 1024 ends at 8032.499M.
(parted)
Заметьте, что в Листинге 1, parted вычислила номинальную позицию конца 1024 цилиндра. Цилиндр 1024 очень важен для тех систем, где BIOS может загружаться только с раздела, который размещается в первых 1024 цилиндрах диска. Наиболее вероятно, что это произойдет с BIOS, не имеющей поддержки LBA. На современных машинах это уже не проблема, хотя вам следует быть осторожными, поскольку это ограничение может существовать.
Существует три вида разделов: primary (основной), logical (логический), и extended (расширенный). The partition table (Таблица разделов) расположена в главной загрузочной записи (master boot record — MBR) диска. MBR это первый сектор диска, так что таблица разделов не очень большая его часть. Это ограничивает количество основных разделов числом 4. Когда требуется более четырех разделов, а это бывает часто, один из основных разделов должен быть определен как расширенный. Диск может содержать только один расширенный раздел.
Расширенный раздел это не более чем контейнер для логических разделов. Эта схема разбиения изначально использовалась в MS DOS и PC DOS, и позволяет использовать диски ПК в DOS, Windows или Linux системах.
В Linux может быть от 1 до 4 основных и расширенных разделов, то есть dev hda может иметь четыре основных раздела: /dev/hda1, /dev/hda2, /dev/hda3 и /dev/hda4. Или оно может иметь один основной раздел /dev/hda1 и один расширенный /dev/hda2. Если определены логические разделы, то их нумерация начинается с 5, то есть первый логический раздел на /dev/hda будет нумероваться /dev/hda5, даже если на диске основного раздела нет, а есть только расширенный (/dev/hda1).
На Листинге 2 приведен вывод команды parted с ключом p, отображающий информацию о разделах для того же диска, что и в Листинге 1. Заметьте, что эта система содержит несколько различных файловых систем Windows и Linux.
Листинг 2. Отображение таблицы разделов при помощи parted
(parted) p
Disk geometry for /dev/hda: 0.000-152627.835 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 16300.327 primary ntfs boot
2 16300.327 25846.765 primary fat32 lba
3 25846.765 26842.983 primary ext3
4 26842.983 152625.344 extended lba
5 26843.014 28898.173 logical linux-swap
6 28898.205 48900.981 logical ext3
7 48901.012 59655.432 logical ext3
8 59655.463 75657.678 logical ext3
9 75657.709 95001.569 logical ext3 boot
10 95001.601 122997.656 logical reiserfs
11 122997.687 152625.344 logical ext3
Распределение места на диске
Как указывалось ранее, файловая система Linux имеет единственное большое дерево с корнем /. Из этого очевидно почему данные на дискете или CD-ROM должны быть смонтированы, но возможно из этого не совсем ясно зачем создавать различные разделы на жестком диске. Некоторыми вескими причинами разделения файловых систем могут являться:
- Файлы загрузки. Некоторые файлы должны быть доступны для BIOS или загрузчика во время загрузки.
- Несколько жестких дисков. Обычно каждый жесткий диск может быть разбит на один или несколько разделов, каждый со своей файловой системой, которая должна быть смонтирована куда-нибудь в дереве файловой системы.
- Файлы совместного доступа. Некоторые системы могут подразумевать совместное использование статических файлов, таких как исполняемые файлы программ. Динамические файлы, такие как домашний каталог пользователя или файлы почтовой очереди также могут использоваться совместно, чтобы пользователи могли осуществлять вход на любой машине из нескольких, находящихся в сети и работать со своим домашним каталогом и почтовой системой.
- Возможность переполнения. Если заполненность файловой системы приближается к 100 процентам, то обычно хорошей мыслью будет хранить файлы, необходимых системе для функционирования на отдельном разделе.
- Квоты. Квоты, ограничивающие доступное пространство в файловой системе для пользователя или группы.
- Монтирование только для чтения. До изобретения журналируемых файловых систем восстановление файловых систем после системного сбоя часто занимало много времени. Поэтому редко изменяющиеся файловые системы (такие как каталоги исполняемых программ) могут быть смонтированы в режиме только для чтения, чтобы не тратить много времени на их проверку после системного сбоя.
В добавок к используемым файловым системам вы также должны выделить место на диске для раздела подкачки (swap раздела). В системе Linux под него отводится обычно один или, возможно, несколько разделов.
Определение параметров
Предположим, вы настраиваете систему, в которой есть по крайней мере один жесткий диск, и вы хотите грузиться с этого жесткого диска. (В этом учебнике не рассматривается настройка бездисковой рабочей станции, которая загружается по сети, а также не принимается во внимание использование Linux LiveCD или DVD). Несмотря на то, что размер раздела можно изменить позднее, это обычно требует некоторых усилий, поэтому важно сделать правильный выбор в начале. Итак, начнем.
Во первых вы должны быть уверены, что система будет загружаться. Некоторые старые компьютеры имеют ограничение при котором BIOS может осуществить загрузку только с раздела, который полностью расположен в первых 1024 цилиндрах диска. Если у вас подобная машина, то вы должны создать раздел, который затем будет монтироваться как /boot и хранить ключевые файлы, необходимые для загрузки системы. После загрузки, система Linux возьмет работу с диском на себя и ограничение в 1024 цилиндра больше не будет влиять на работу системы. Если вам необходимо создать раздел /boot, то обычно достаточно около 100МБ.
Следующее с чем вы должны определиться это размер swap-раздела. При сегодняшних параметрах оперативной памяти, swap представляет собой вторичную более медленную память. Общепринято было создавать swap раздел соразмерным имеющейся оперативной памяти. В настоящее время вы можете выделить под него 500МБ для рабочей станции и около 1ГБ для сервера. Если особые обстоятельства требуют этого, то вы можете увеличить его размер, однако если вы сделает это, то ваша система может потерять в производительности, так что лучше следует увеличить реальную оперативную память. Можно использовать и файл подкачки, однако выделение отдельного раздела предпочтительнее.
Теперь мы подошли к критической точке. Требования для персональной рабочей станции менее предсказуемы, чем для сервера. Я рекомендую всем (и в особенности новичкам) размещать большинство стандартных каталогов (/usr, /opt, /var, /etc) на одном большом разделе. Это особенно полезно для пользователей, впервые устанавливающих Linux и не имеющих ясного представления, что будет получено в конечном итоге. Рабочая станция с графическим рабочим столом и разумным набором средств разработки может потребовать от 2 до 3 гигабайт плюс место, необходимое пользователю. Но некоторые более массивные инструменты разработки могут потребовать несколько гигабайт каждый. Я обычно выделяю где-то от 10 до 20 ГБ на одну операционную систему, а остальное оставляю свободным для загрузки другого дистрибутива.
Рабочая нагрузка сервера более стабильна, но и нехватка места на файловой системе может привести к большим неприятностям. Так что для них я советую создавать несколько разделов, распределённых по нескольким дискам с использованием аппаратного или программный RAID или же группы логических томов.
Вам также может потребоваться определить загрузку каждой файловой системы и будет ли файловая система доступна для нескольких операционных систем или будет использоваться только одной. Вы можете использовать ваш опыт, инструменты планирования размера, а также предположения о перспективах роста, чтобы определить наилучшее распределение дискового пространства для вашей системы.
Вне зависимости от того, что вы настраиваете — рабочую станцию или сервер — у вас будут некоторые файлы, уникальные для каждой операционной системы, расположенной на локальном диске. Обычно это /etc для системных параметров, /boot для файлов, необходимых во время загрузки, /sbin для файлов, необходимых для загрузки или восстановления системы, /root для домашнего каталога суперпользователя, /var/lock для lock файлов, /var/run для информации работающей системы и /var/log для файлов журналов (log-файлов) этой системы. Другие файловые системы, такие как /home для домашних каталогов пользователей, /usr, /opt, /var/mail, /var/spool/news могут располагаться на отдельных разделах или смонтированы по сети в соответствии с вашими нуждами и предпочтениями.
One Trackback
[...] обсуждалось в предыдущем параграфе