Головна Інтернет Софт Hardware Мобіленд Вебмайстру Адміну Coding Hackzone Форум

Админу:

Использование дисков и других носителей информации (part 2)


  

Файловые системы

Что такое файловые системы?

Файловая система - это метод и структура данных, которые используются операционной системой для сохранения информации о файлах на диске или разделе диску. То есть, другими словами, - это метод организации сохранения файлов на диске. Срок часто также употребляется как синоним к словам ``диск`` или ``дисковий роздил``, когда речь идет о файлах расположенных на данном диске или разделе. Следовательно, если Вы услышите ``Я имею две файловые системи``, знайте, что при этом имеется в виду, два подразделы, которые служат для записи файлов, или в случае с Линаксом - это два подразделы с файловыми системами типа ext2 (``розширена файловая система``, как ее называют в Линакси). Отличия между диском или 30fd разделом на диске и файловой системой, которая на нем создана существенные. Лишь некоторые программы (включая сюда те, которые создают файловые системы) могут работать непосредственно с секторами 72 на диске или его разделе. Если на этом диске или разделе уже существует файловая система, она может такими программами быть уничтоженная или серьезно поврежденная. Большинство программ работают, в отличие от упомянутых нескольких, с файловыми системами и, следовательно, не смогут работать из разделами, которые не имеют файловой системы на них (или, что приблизительно то же, - имеют файловую систему не того типу, что нужный).

Перед тем, как использовать диск или раздел как файловая систему, его нужно инициализировать. При этом на диск записывается некоторая информация для 30fd поддержка файловой системы в относительном порядке. Этот процесс известен как создание файловой системы .

Большинство файловых систем Юниксов имеют очень похожую общую структуру, но все-таки расходятся в подробностях. Основные понятия включают суперблок <а name="tex2html78">73 inode <а href="node5.html#dict:inode">[*] блок данных <а name="tex2html79">74 блок директории <а name="tex2html80">75 и блок ссилок <а href="node5.html#dict:indirection">%quot%. Суперблок содержит информацию о файловой системе в целом, такую, например, как ее размер (детальная информация, которая здесь имела бы находится зависит от конкретного типа файловой системы). В inode сохраняется вся информация об отдельном файле, кроме его названия 76 . Название файла записывается в директории вместе с номером inode`у. inode хранит номера нескольких блоков, в которых записан сам файл. Но в inode`і достаточно места только для несколько блоков данных, однако, если нужно будет больше, для ссилок на следующие блоки динамически выделяется больше места. Эти блоки, которые выделяются динамически, являются непрямыми блоками. То есть, само их название указывает на то, что прежде, чем прочитать данные из блока, нужно найти, где 30fd находится сам блок, пользуясь ссилкой на него.

Как обычно файловые системы Юниксов позволяют иметь файлы из ``дірками`` (это делается с помощью команды lseek  , лучше узнать о которой можно из страницы подсказки). Дыра в файле значит, что файловая система просто делает вид, якобы какое-то определено место в файле имеет размер нуль байтов, но ни одного дискового пространства при этом не резервируется на это в самом файле (то есть файл в действительности будет использовать немного меньше дискового пространства). Это случается особенно часто для небольших двоичных файлов библиотек для общего пользования в Линакси, некоторых баз данных и некоторых специальных случаев. (Дыры создаются записыванием определенной специальной величины в блоке ссилок или 30fd в inode`і. Этот специальный адрес значит, что для блока данных не отводится пространству на диске, то есть в файле - дыра.)

Дыры достаточно полезны. На системе автора простое измерение показало, что дыры хранят около 4   Мбайт с 200   Мбайт диску. Правда система имеет относительно мало программ и не имеет баз данных. Средство для измерения дыр описано в дополнению.

Галоп по файловым системам

Линакс поддерживает несколько файловых систем, среди которых важнейшими является:

minix

Самая старая из всех и считается наиболее заслуживающей на доверие. В то же время, она достаточно ограниченная за возможностями (отсутствуют некоторые часовые отпечатки 78, длина названия файла ограничена 30-ма 30fd буквами, может иметь максимум 64   Мбайти на файловую систему).

xia

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

ext2

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

ext

Более старая версия - предшественница ext2, 30fd какая была спроектированная без мыслей о расширении. Ее практически уже нет в новых системах, и те кто имел ее в старых уже заменили ее новой версией.

Дополнительно к этому, существует поддержка для некоторых ``іноземних`` файловых систем, что делает проще обмен файлами с другими системами. Все эти иностранные системы работают практически так сам, как и родные файловые системы Линакса, но возможно они не имеют тех или других возможностей, которые присутствуют в Юниксах, или имеют некоторые смешные ограничения или еще что.

msdos

Совместимость из DOS (а также из OS/2 и Windows NT) - файловые системы FAT.

umsdos

Расширение файловой системы msdos для Линакса - для употребления длинных названий файлов, с возможностью присвоение 30fd владельцев файлам разрешений, ссилок и файлов устройств. Это расширение позволяет пользоваться обычной файловой системой msdos, так как якобы это - файловая система Линакс, и таким образом отпадает необходимость пользоваться специальной системой для Линакса при наличию компьютера с установленным DOS`ом.

iso9660

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

nfs

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

hpfs 30fd

Файловая система OS/2.

sysv

Файловые системы SystemV/386, Coherent и Xenix.

<а name="tex2html85">80

Выбор файловой системы зависит от ситуации. Если Вы хотите иметь доступ к одним и тем же файлам из Линакса и из какой-то другой операционной системы (установленной на этом же компьютере), то должна использоваться файловая система именно этой операционной системы. Если же Вы имеете свободный выбор тогда наилучшим выбором будет файловая система ext2, поскольку она имеет все необходимы функции и достаточно скорая.

Кроме упомянутых выше файловых систем в Линакси также файловая система proc, смонтированная в директории proc <а name="3393">  , какая в действительности нет 30fd файловой системой, хотя и очень на нее похожая. Файловая система proc облегчает доступ структур данных внутри ядра и процессов (откуда и название). Она подает пользователю эти структуры в виде файловой системы, и к данных в таком виде можно применять обычные средства для работы с файлами. Например, для того, чтобы получить список всех процессов в системе можно воспользоваться командой

$ ls -l /proc
total 0
dr-xr-xr-x 4 root root 0 Jan 31 20:37 1
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94
dr-xr-xr-x 4 liw users 30fd 0 Jan 31 20:37 95
dr-xr-xr-x 4 root users 0 Jan 31 20:37 98
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99
-r--r--r-- 1 root root 0 Jan 31 20:37 devices
-r--r--r-- 1 root root 0 Jan 31 20:37 dma
-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems
-r--r--r-- 1 root root 0 Jan 31 20:37 interrupts
-r-------- 1 root root 8654848 Jan 31 20:37 kcore
-r--r--r-- 1 root root 0 Jan 31 11:50 kmsg
-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms
-r--r--r-- 1 root root 30fd 0 Jan 31 11:51 loadavg
-r--r--r-- 1 root root 0 Jan 31 20:37 meminfo
-r--r--r-- 1 root root 0 Jan 31 20:37 modules
dr-xr-xr-x 2 root root 0 Jan 31 20:37 net
dr-xr-xr-x 4 root root 0 Jan 31 20:37 self
-r--r--r-- 1 root root 0 Jan 31 20:37 stat
-r--r--r-- 1 root root 0 Jan 31 20:37 uptime
-r--r--r-- 1 root root 0 Jan 31 20:37 version
$

(Кроме приведенных здесь будет еще несколько дополнительных файлов, которые не имеют соответствующих процессов. Пример, приведенный здесь, немного 30fd сокращенный сравнительно с реальной ситуацией.)

Хотя /proc и называется файловой системой, ни одна ее часть даже и не касается диску. Она вся существует только в воображении ядра. Когда кто-либо пытается обратиться к любой из частей файловой системы proc, ядро подает ее так будто бы она действительно существует где-то. Следовательно, даже если Вы собственными глазами видите здесь багато-мегабайтний файл /proc/kcore  , он не занимает ни одного байту памяти ни на диске, ни в памяти (к того времени, пока Вы не начнете его копировать куда-либо).  

Какой файловой системой пользоваться?

В большинстве случаев нет ни одного смысла в пользовании многими файловыми системами одновременно. В настоящий момент наиболее популярной является ext2fs, и, наверно 30fd потому, лучше всего пользоваться ею. В зависимости от конкретных требований к структуры, скорости, надежности, совместимости, и тому подобное, следует розлядати также те или другие системы поза ext2fs. Но конечное конкретное решение всегда зависит от конкретных условий.
 

Создание файловой системы

Файловые системы створюются (или ``ініціалізуються``) за помощью команды mkfs   . На самом же деле, для каждой файловой системы существует своя собственная команда. Команда mkfs   всего-навсего фасад к целой группе команд, и для создания той или другой файловой системы, применяется соответствующая ей команда. Тип файловой системы, которую нужно создать, задается за помощью параметру -t тип_файлової_системи 30fd команде mkfs <а name="3401">   . Программы, которые вызываются командой mkfs <а name="3403">  , имеют разные параметры. Общие (и наиболее важные) параметры приведены ниже, но более конкретные данные можно всегда отыскать в странице подсказки по конкретной команде.

-t тип_файлової_системи

Выберите тип файловой системы.

-c

Искать сбойные блоки и обновить их список.

-l назва_файлу

Прочитать предыдущий список сбойных блоков из файла назва_файлу .

, Чтобы создать на дискете файловую систему типа ext2, нужно 30fd выполнить такие команды:
$ fdformat -n /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
$ badblocks /dev/fd0H1440 1440
> bad-blocks
$ mkfs -t ext2 -l bad-blocks /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 30fd blocks per group, 8192 fragments per group
360 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$

Сначала дискета форматируется (параметр -n запрещает проверку дискеты на сбойные блоки). После этого сбойные блоки ищутся командой badblocks <а name="3405">  , результаты работы которой отправляются в файл. И, наконец, создается файловая система, и при этом используется список сбойных блоков созданный командой badblocks <а name="3407">   .

Вместо команды 30fd badblocks <а name="3409">   можно воспользоваться параметром -c , при этом отпадает необходимость в дополнительном файле. Такое использование команды показано в следующем примере.

$ mkfs -t ext2 -c /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group 30fd

Checking for bad blocks (read-only test): done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
Параметром -c удобнее пользоваться, чем командой badblocks <а name="3411">   и додактковим файлом, но для проверки файловой системы после ее создания лучше все-таки употреблять badblocks <а name="3413">   . Процесс создания файловой системы на жестком диске отличается от процесса для дискет только тем, что при отпадает шаг форматирования.
 

Монтирование и розмонтування

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

Например, рисунок   [*] показывает три отдельные файловые системы, каждая со своим собственным корнем (корневой директорией). После того, как две последних файловых системы смонтированные в точках /home <а name="3416">   но /usr <а name="3418">   первой файловой системы, образуется единственное 30fd дерево директорий показано на рисунку   <а href="node52.html#fig:hd-mount-all">[*].


<а name="fig:hd-mount-root">   <а name="2610">  

Рисунок: Три отдельных файловых системы.
includegraphics{disks/hd-mount-separate.ps}


<а name="fig:hd-mount-all">   <а name="2862">  

30fd Рисунок: /home <а name="3420">   но /usr <а name="3422">   смонтировано.
includegraphics{disks/hd-mount-mounted.ps}

Операции монтирования выполняются следующими командами:

$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
$
$

Команде mount <а name="3424">   нужно давать два аргумента. Первый из них - это специальный файл устройства, которое 30fd отвечает диску или подразделу с файловой системой. Второй - директория, в которой нужно змонтвуати данную файловую систему. После того, как выполнены эти две команды, все, что находится в смонтированных фалових системах, будет выглядеть как состав директорий /home <а name="3426">   но /usr <а name="3428">   . Говорят, что `` /dev/hda2 <а name="3430">   смонтировано на /home <а name="3433">   ``, и, аналогично для /usr <а name="3435">   . Чтобы посмотреть, что находится в той, другой ли файловой системе (после ее монтирования), следует смотреть, что находится в той директории, на которой эта файловая система смонтированная, так, как 30fd будто-то это - обычная директория. Отметьте разницу между специальным файлом устройства ( /dev/hda2 <а name="3437">   но директорией, на которую он смонтирован ( /home <а name="3439">   . Первый из них дает доступ к ``сирого`` диску (или разделу), в то время, как вторая - описывает доступ к ``готової`` директории на диске. Директорию, в которой проводится монтирование файловой системы, называют точкой монтирования .

Линаксом, как уже отмечалось, поддерживаются файловые системы многих типов. Команда mount <а name="3442">   пытается угадать тип файловой системы какую она монтирует. Но кроме этого можно также пользоваться параметром -t 30fd тип_файлової_системи , чтобы явно указать тип. Иногда это необходимо, потому что бывает, что путь догадок подводит. Например, чтобы смонтировать файловую систему DOS на дискете, нужно выполнить команду:

$ mount -t msdos /dev/fd0 /floppy
$

От директории, на вершини которой монтируется файловая система, не требуется, чтобы она была пустой, но необходимо, чтобы она существовала. Однако, все файлы, которые существовали в этой директории к монтирования будут недоступными после того, как файловая система смонтированная. (Будь какие файлы, открытые на время монтирования будут оставаться доступными, так же, как и файлы в данной директории, которые имеют жесткие ссилки на себя 30fd из других частей файловой системы, могут быть доступными с использованием этих других имен.) Этим не наносится ни один вред, и иногда такой эффект можно использовать на пользу. Например, представим себе, что /tmp <а name="3444">   но /var/tmp <а name="3446">   является синонимами, и /tmp <а name="3448">   есть символической ссилкой на /var/tmp <а name="3450">   . Во время старта системы когда файловая система /var <а name="3452">   еще не смонтированная, для временных файлов используется директория /var/tmp <а name="3454">  , какая находится на корневой файловой системе. После того, как 30fd /var <а name="3456">   смонтированная, директория /var/tmp <а name="3458">   в корневой директории делается недоступной, и вместо нее используется смонтированная на ее вершини файловая система. Если бы директория /var/tmp <а name="3460">   не существовала, то было бы невозможно пользоваться временными файлами до того, как смонтированная /var <а name="3462">   .

Если Вы не собираетесь записывать ничего в файловую систему, которую монтируете, Вы можете воспользоваться параметром -r для того, чтобы смонтировать эту файловую систему в режиме только чтение <а name="tex2html88">81. Получив этот параметр 30fd ядро остановит любую попытку записать що-небуть в файловую систему и ядро не будет изменять время доступа 82 к inode`ів файлам в данной файловой системе. Монтирование в режиме ``тільки читання`` необходимо для носителей, на которых запись невозможный, таких, например, как компакт-диски83.

Внимательный читатель по-видимому уже отметил одну головоломку, а именно: как же монтируется ``сама перша`` файловая система - и, которая называется корневой файловой системой <а name="tex2html91">84, потому что она содержит корневую директорию. Конечно же из понятных причин, эту файловую систему нельзя смонтировать на вершини другой. Ответ в этом случае очень простой - это конечно же фокус. 8586 . Корневая файловая 30fd система волшебным способом оказывается смонтированной при запуске системы и можно всегда рассчитывать на то, что она смонтирована, - если невозможно смонтировать корневую файловую систему, система просто не загрузится. Название той файловой системы, которая магически монтируется как корневая, или компилируется непосредственно в именно ядро, или устанавливается с помощью LILO или rdev <а name="3512">   <а name="tex2html94">87.

При старте системы корневая система всегда монтируется сначала в режиме ``тільки читання``. Позже из стартовых скриптов запускается fsck <а name="3530">   для проверки целостности файловой системы, и потом файловая система перемотовуеться <а 30fd name="tex2html95">88 в режиме разрешения записи. В целом команда fsck <а name="3538">   не должна выполняться на смонтированных файловых системах, поскольку любые изменения к файловой системы, над которой она выполняется вызовут большие проблемы. Но, поскольку корневая система в данном случаю смонтированная с доступом только на чтение fsck <а name="3540">   может корректировать нужные участки без проблем, и операция перемонтування запишет все нужны изменения из памяти на диск.

Во многих системах при старте нужно монтировать также другие файловые системы (кроме корневой и своп). Все они описываются в файле /etc/fstab <а name="3542">   <а 30fd name="tex2html96">89. Подробности о формате файла есть в странице подсказки fstab <а name="3561">   . То, как конкретно дополнительные файловые системы монтируются зависит от многих факторов, и это может конфигурировать каждый отдельный системный администратор так, как это нужно. Когда раздел о процессе старта системы будет закончено, в нем можно будет это прочитать.

Если файловая система больше не нужна, ее можно розмонтувати командой umount <а name="3563">   <а name="tex2html97">90. Для umount <а name="3567">   нужен один параметр - или точка монтирования файловой системы, или ее специальный файл. Например, чтобы 30fd разматывать директории, смонтированные в предыдущем примере, нужно выполнить команды:

$ umount /dev/hda2
$ umount /usr
$ $

Последующие сведения о команде смотрите в странице подсказки по ей. Не забудьте, что всегда нужно розмонтовувати смонтированную дискету. Не вытягивайте просто так дискету из дисководу! Через кэширование диску в памяти, данные могут действительно записываться на диск много позже и не обязательно записанные на диск, если его еще не розмонтовано 91 . Следовательно, если Вы вытянете дискету рановато - получите мусор вместо данных. Если Вы только читали из дискеты, то возможно ничего 30fd страшного не случится, но, если записали что-то (даже случайно), результатом может быть катастрофа.

Для монтирования и розмонтовування файловых систем нужно иметь привилегии супер-користувача, то есть только пользователь root <а name="3574">   может это делать. Причиной этого является то, что, если кто-либо может монтировать или розмонтовувати, скажем дискету на любой директории, то, в этом случае было бы очень просто создать, например, Троянского коня замаскированного под /bin/sh <а name="3576">  , или другую часто употребимую программу. Однако обычным пользователям иногда нужно монтировать дискеты, и для этого существует несколько способов:

  • Дати пользователю пароль root <а name= 30fd "3578">   `а. Конечно же это наихудшее решение с точки зрения безопасности, но и проще всего. Оно срабатывает в тех случаях, когда нет необходимости беспокоиться о безопасности, то есть годится на многих персональных системах не подключенных к сети.
  • Воспользоваться программой типа sudo <а name="3580">   чтобы позволить пользователям пользования программой mount <а name="3582">   . Это все еще не идеальное решение с точки зрения безопасности, но все-таки не дает пользователям непосредственного доступа к паролю root <а name="3584">   `а92.
  • Рекомендовать пользователям употреблять 30fd пакет программ mtools <а name="3586">  , для операции файлами DOS без монтирование файловых систем. Этот пакет - очень удобная штука если все, что нужно, это копировать файлы из DOSівських дискет и назад, но ужасно неудобный во всех других случаях.
  • Перечислити устройства дисководов вместе с соответствующими параметрами для монтирования в файле /etc/fstab <а name="3588">   .
Для реализации последнего варианта нужно прибавить к /etc/fstab <а name="3590">   приблизительно такая строка:
/dev/fd0 /floppy msdos user,noauto 0 0

Столбики в строке такие: устройство, которое нужно смонтировать 30fd директория, в которой нужно монтировать файловую систему, тип файловой системы, параметры, частота создания резервных копий (используется командой dump <а name="3592">   ), но номер прохода для fsck <а name="3594">   (Этот параметр служит для того, чтобы установить порядок, в котором команда fsck <а name="3596">   должна проверять файловые ситеми при старте системы. 0 значит, что проверка не нужная).

Параметр noauto предотвращает монтирование данной файловой системы при старте системы (то есть команда mount -я <а name="3598">   не смонтирует эту файловую систему). Параметр user позволяет монтировать 30fd эту файловую систему любому пользователю, и, (из рассуждений безопасности) запрещает выполнение любых программ (как нормальных, так и с установленным setuid) и использование любых специальных файлов устройств из смонтированной таким чином файловой системы. 93 Если такая строка включена в файл /etc/fstab <а name="3623">  , то любой пользователь может смонтировать дискету выполнив команду:

$ mount /floppy
$
Дискету можно (и, конечно же, нужно) розмонтовувати соответствующей командой umount <а name="3625">   .

94 Если Вам нужно обеспечить возможность 30fd монтирование нескольких типов дискет, Вы должны обеспечить также и соответствующие точки монтирование для всех них и соответствующие строки для каждого типу в /etc/fstab <а name="3691">   . Параметры могут быть разными для них всех. Например, чтобы дать доступ до обеих файловых систем - MS-DOS и ext2 на дискетах, Вам нужно иметь такие строки в /etc/fstab <а name="3693">   :

/dev/fd0    /dosfloppy    msdos   user,noauto  0  0















/dev/fd0 /ext2floppy ext2 user,noauto 0 0
30fd














Для файловых систем MS-DOS (не только дискеты, а вообще - все из них), было бы желательно обмежети доступ использованием uid ли gid но параметром umask <а name="3695">  , какие в подробностях описанные в странице подсказки mount <а name="3697">   . Если Вы не слишком безопасные, то монтирование файловой системы MS-DOS дает (как минимум) доступ на чтение для кого-либо, что вообще-то не желательно.
 

30fd Проверка целостности файловых систем за помощью fsck

Файловые системы - очень сложные создания, и потому, в некотором смысле, они склонны к ошибкам. Целостность файловой системы или наличие в ней ошибок можно проверить с помощью команды fsck <а name="3701">   . Команде можно указать, что она должна исправлять все незначительные ошибки, которые она отыщет, и предупреждать пользователя, если случаются такие из них, которые нельзя исправить. К счастью, библиотеки употребимые для файловых систем уже видлагоджени достаточно хорошо, и проблемы с ними случаются достаточно редко (или их вообще не бывает). Сбои в файловых системах чаще всего случаются через перебои в электроснабжении, сбое в ``залізі`` или через ошибки 30fd операторов, как, например, не выключенная за правилами система.

Большинство систем выполняют fsck <а name="3703">   автоматино при старте системы, так, что большинство ошибок находятся (и, дай боже исправляются) до того, как система начинает использоваться. Использование испорченной файловой системы приводит до того, что плохое становится еще хуже: если структуры данных файловой системы испорченные, использование этих структур может только сделать их еще хуже, что приведет к еще большим потерь данных. Но, с другой стороны, полная проверка файловой системы на больших файловых системах за помощью fsck <а name="3705">   может занимать достаточно долгое время. И, из-за того, что ошибки практически никогда не 30fd случаются при корректному выключении системы, для того, чтобы не затягивать время старта системы, в Линакси прибегают к некоторым хитростям. Первый трюк: если существует файл /etc/fastboot <а name="3707">  , то проверка файловых систем не делается. Второй трюк: файловая система ext2 имеет специальный маркер, который указывает на то, была ли эта файловая система видмонтована верно при предыдущем монтировании. Зная, что файловая система была розмонтована ``чистою`` (если флажок указывает на это) e2fsck <а name="3709">   (версия fsck <а name="3711">   специализированная для проверки файловой системы ext2), может не проверять эту файловую систему. При этом, конечно, делается 30fd предположение, что чистое розмонтування не приносит системе проблем. Работает ли первый из трюков (с файлом /etc/fastboot <а name="3713">   ) на Вашей системе зависит от стартовых скриптов системы, но трюк с флажком монтирование ext2 срабатывает каждый раз, когда Вы пользуетесь e2fsck <а name="3715">   . Чтобы вынудить команду игнорировать этот флажок, это нужно явно указать при допомого параметре. (Детали смотрите в странице подсказки e2fsck <а name="3717">   ).

Автоматическая проверка срабатывает только для тех систем, которые монтируются автоматически при старте системы. Для проверки других файловых систем, как, например, дискет, пользуйтесь fsck <а name= 30fd "3719">  , запуская ее вручную. <а name="tex2html102">95

Если fsck <а name="3745">   при проверке наталкивается на файловую систему какую она не может отремонтировать, тр Вас может спасти только одно из двух: или глубокие познания о строении файловых систем вообще и данного типа конкретно, или красивая резервная копия. Второе - сделать просто, а первого Вы можете достичь за помощью друзей, подписной группы новостей и подписного листа по Линаксу или задопомогой других средств нахождения информации. Я хотел бы рассказать об этом больше, но белые пятна в образовании и опыте не дают мне этого сделать. Программа Теодора Цо <а name="tex2html103">96 debugfs <а name= 30fd "3752">   может Вам помочь при этому.

Пользуйтесь fsck <а name="3754">   только на розмонтованих файловых системах, никогда на смонтированных (за исключением корневой файловой системы при старте, какая монтуется при этом только на чтение). Из-за того, что fsck <а name="3756">   работает из ``сирими`` разделами диску, она может изменять файловые системы так, что система об этом даже не догадается. А если операционную систему дурить, то неприятности случатся .
 

Проверка испорченных блоков за помощью badblocks

Проверку сбойных блоков стоит выполнять периодически. Это можно 30fd делать командой badblocks <а name="3760">   . Она выдает список найденных сбойных блоков. Этот список потом можно передать fsck <а name="3762">  , чтобы она записала эти данные в структуры данные файловой системы из тем, чтобы операционная система могла ими потом воспользоваться чтобы обходить сбойные блоки при записи данных. Следующий пример показывает как это сделать.

$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ fsck -t ext2 -l bad-blocks /dev/fd0H1440
Parallelizing fsck version 0.5a (5-Apr-94)
e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
30fd Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Check reference counts.
Pass 5: Checking group summary information.

/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****
/dev/fd0H1440: 11/360 files, 63/1440 blocks
$
Если badblocks <а name="3764">   сообщает об испорченном блоке, который уже использовано под файл e2fsck <а name="3766">   попробует переместить этот блок в другое место. Если блок был поврежден серьезно 30fd может оказаться, что файл, испорчено также.
 

Борьба с фрагментацией

Не всегда возможно записать файл на диск как непрерывная последовательность блоков. О файле, который записан с разрывами ("не неразрывная" последовательность блоков) говорят, что он фрагментируемый . На прочтение фрагментируемого файла нужно больше времени поскольку читаюча/записуюча головка должна сделать для этого больше перемещений. Потому лучше было бы лишиться фрагментации, хотя в системах, которые имеют добрый буфер из ``читанням наперед`` это и небольшая проблема.

Файловая система ext2 пытается удерживать фрагментацию на минимуме, располагая все блоки файла вместе, даже если их нельзя записать в последовательных 30fd секторах. Ext2 эффективно располагает свободные блоки, которые находятся по соседству с другими блоками файла. То есть для ext2 редко когда бывает необходимым беспокоиться о фрагментации. Существует программа для дефрагментации ext2, смотрите   <а href="node119.html#ext2-defrag"> Linux filesystem defragmenter.

Существуют много программ дефрагментации для MS-DOS, которые переписывают блоки туда-сюда, чтобы лишиться фрагментации файлов. Для других систем дефрагментации можно достичь переписав файловую систему циляком на резервные носители и возобновив ее опять. Создание резервной копии перед дефрагментацией вообще непагана идея для любой такой программы, поскольку много чего может случиться во время работы программы.
30fd
 

Другие программы для всех файловых систем

Существуют другие средства пригодные на что-то полезное при работе из файловыми системами. df <а name="3769">   показывает сколько свободного дискового пространства осталось на файловой системе (системах). du <а name="3771">   подсчитывает сколько мест на диске занимает но другая ли директория и все ее файлы. Обе программы можно использовать в охоте за местом на диске.

sync <а name="3773">   записывает все не записаны до сих пор блоки, которые находятся в буфере кэшу, на диск (см. раздел   [*] ). Очень редко случаются ситуации, когда это нужно делать вручную - процесс-демон 30fd update <а name="3775">   выполняет это автоматически. Это может понадобиться в катастрофических ситуациях, когда update <а name="3777">   или его процесс-помощник bdflush <а name="3779">   умирает, или Вам нужно вимнути напряжение, и нет времени ожидать, пока update <а name="3781">   сделает свою дело.
 

Другие средства для файловой системы ext2

Дополнительно к программам, которые создают ( mke2fs <а name="3783">   ) и проверяют целостность ( e2fsck <а name="3785">   ) файловой системы, и которыми можно пользоваться или непосредственно, или же через их 30fd независимую от типа файловой системы ``фасадну`` программу, существуют некоторые другие додакткови средства для ext2.

tune2fs <а name="3787">   служит для подгонки параметров файловой системы. Некоторые из наиболее интересных параметров такие:

  • Найбільша допустимое количество монтирований. Если файловая система была смонтирована и розмонтована без проверки многократно e2fsck <а name="3789">   насильственно проверяет файловую систему, даже если она была розмонтована чисто. Для систем, которые используются для разработки или для испытание, полезным советом было бы этот номер уменьшить.
  • Максимальное время 30fd между проверками. e2fsck <а name="3791">   также может принудительно проверять файловую систему, если время между проверками достигнуто, даже если флажок чистоты установлено, и система монтируется не очень часто. Однако, этот параметр можно отменить.
  • Количество блоков зарезервированных для root `а. Ext2 резервирует определенную часть блоков для использования root `ом. Таким образом даже, если файловая система переполняется, для системного администратора доступно некоторое пространство, и еще можно кое-что сделать не стирая файлов. Как привычно такое резервное пространство устанавливается на уровне 30fd 5% что для большинства дисков является допустимой величиной. Для дискет, однако, не имеет никакого смысла резервирования ни одного блока.
Страница подсказки по tune2fs <а name="3793">   предоставит Вам больше информации по программе.

dumpe2fs <а name="3795">   показывает информацию о файловой системе ext2, в основному информацию из супер-блока. Образец того, которое выдает эта программа показано на рис.   [*] . Некоторые данные, что выдаются достаточно техническими и требуют понимания того, как работает файловая система (см. дополнение   [*], но большинство понятно даже системным администраторам.


<а name= 30fd "fig:dumpe2fs-output">   <а name="2872">  

Рисунок: Образец работы dumpe2fs <а name="3797">  
begin{figure}
  
 begin{center}
  
 small 
  
 begin{tex2html_preform}begin{verbatim}dum... 
  
 ... Free inodes: 35-360end{verbatim}end{tex2html_preform}end{center}end{figure}

debugfs <а name="3799">   является отладчиком файловой системы. Он позволяет прямой доступ к структурам данным, которые записываются на диск, то есть его можно использовать для возобновления тех дисков, которые испорченные настолько, что 30fd fsck <а name="3801">   возобновить их уже не может. Об этой программе также просачивались данные, что debugfs <а name="3803">   можно использовать также для возобновления стертых файлов. Однако, работа с этой программой требует очень глубоких знаний того, что Вы хотите сделать. Недостаточные знания могут уничтожить все Ваши данные.

dump <а name="3805">   но restore <а name="3807">   служат для создания резервных копий файловой системы ext2. Они принадлежат к традиционным средств Юникса по созданию резерних копий, но является специфическими для файловой системы ext2. Более детальная информация об этом есть в разделе   <а href= %quot% 30fd node102.html#chap:backups">[*].
 

<а name="SECTION00690000000000000000"> Диски без файловых систем

Не все диски или подразделы используются в качестве файловые системы. Подраздел, который содержит пространство для свопинга например, не имеет файловой системы. Большинство дискет используются подобно лентам, так, что tar <а name="3809">   другие ли подобные программы записывают данные непосредственно на диск без файловой системы. Загрузочни дискеты Линакса не имеют файловой системы, а содержат только ядро системы.

Отказ от создания файловой системы имеет те преимущества 30fd что дисковое пространство використовуеься более полно - без лишней потери его на учетные функции файловой системы. Кроме этого такие диски являются более совместимыми с другими системами. Например для всех систем формат tar <а name="3811">   является одним и тем же, не глядя на то, что файловые системы отличаются от одной системы к другой. Вы быстро привыкнете пользоваться дисками без файловых систем в случае необходимости. Загрузочни диски Линакса тоже часто не имеют файловой системы, хотя могут и иметь.

Еще одной причиной для пользования ``сирими`` дисками является необходимость сделать копии ``образу`` или изображения из них. Например, если на диске находится файловая система, которая только частично поврежденная, стоило бы сделать 30fd точную копию файловой системы, прежде, чем пытаться ее возобновить, поскольку в случае неудачи Вы всегда сможете начать сначала. Один из способов это сделать - с помощью команды dd <а name="3813">   :

$ dd if=/dev/fd0H1440 of=floppy-image
2880+0 records in
2880+0 records out
$ dd if=floppy-image of=/dev/fd0H1440
2880+0 records in
2880+0 records out
$$

Первая команда dd <а name="3815">   создает точный образ дискеты в файле floppy-image <а name= 30fd "3817">  , а вторая из них записывает это изображение на дискету (Надеемся, что пользователь догадается заменить дискету в дисководе между двумя этими командами. Иначе эта пара команд имеет малому смыслу).

Схемы раздела дисков

Очень нелегко разбить диск на разделы наилучшим образом. И что еще хуже - не существует никакого универсального совета как это делать. Слишком много факторов влияют на конечный результат.

Традиционно считается целесообразным создание (относительно) небольшой корневой файловой системы, на которой будут сохраняться /bin <а name="3819">  , /etc <а name="3821">  , /dev <а name="3823">  , /lib <а name= %quot% 30fd 3825">  , /tmp <а name="3827">   но другие необходимые для начала работы системы вещи. Таким образом корневая файловая система (на отдельном разделе, или же на своем собственному диску) - это все, что нужно для того, чтобы привести систему в рабочее состояние. Объяснение к этому может быть такое - если корневая файловая система небольшая и не очень активно используется, то она должна меньше шансов быть испорченной под время краха системы. То есть, ее легче можно возобновить после краху. После этого Вы можете создать отдельные разделы диску (ли отдельные диски) для дерева директорий, который идет под /usr <а name="3829">  , для домашних директорий пользователей (чаще всего под /home <а name= %quot% 30fd 3831">   ) но для пространства свопинга. Отделение домашних директорий пользователей в свой отдельный раздел имеет те преимущества, что создание резервных копий в этом случае становится проще поскольку не имеет смысла очень часто архивировать программы, что находятся под /usr <а name="3833">   <а name="tex2html105">97 Кроме того, если компьютеры объединены в сеть, можно также использовать одну и ту же директорию /usr <а name="3859">   из сервера совместно для многих компьютеров (например, пользуясь NFS). Таким образом уменьшается общее дисковое пространство необходимый для всей системы (экономия может составлять десятки или сотни мегабайт умноженные на число машин в 30fd сети).

Проблемы, которые возникают когда Вы имеете много разделов заключаются в основном в потому, что свободное пространство на диске оказывается разделенным на многие небольшие куски распределенных по всем разделам. В наше время, когда диски и операционные системы становятся (как мы на это надеемся) более надежными, многие отдадут преимущество одному единственному разделу, на котором сохраняются все файлы. С другой стороны создание резервной копии и возобновление небольшого раздела будет менее болезненным.

Для небольшого диску (если Вы не занимаетесь программированием ядра системы), лучше всего иметь один единственный раздел. Для больших дисков, возможно лучше иметь несколько больших разделов, на тот случай, если что-то будет не так, как хотелось бы. (Следует 30fd отметить, что мы употребляем `малые` и `большие` в очень относительном смысле - чем большие Вы имеете диски, тем большим будет `большим`).

Если Вы имеете несколько дисков, Вы возможно захотите создать корневую систему (вместе с /usr <а name="3861">   ) на одном диске, а домашние директории поместить на другом.

Будьте готовые к некоторому экспериментированию с разнообразными схемами деления дисков на разделы (со временем, не только под время установление системы). Это - добрый кусок работы, поскольку требует установления системы от самого начала несколько раз но, это единственный надежный способ удостовериться, что Вы делаете все вірно98.
 

30fd Требования к дисковому пространству

Документация к тем комплектам Линакса, какие Вы будете устанавливать, даст Вам некоторое понятие о том, сколько дискового пространства Вам необходимо для установления системы. Добавляйте к этому необходимое место на диске для программ, что их нужно устанавливать самостоятельно. Эти данные помогут Вам спланировать использование дисковой памяти, но кроме этого необходимо приготовиться к будущему расширению системы и зарезервировать пространство под него.

Конкретные данные зависят от того, что именно собираются делать Ваши пользователи. Конечно же большинство людей хотят иметь столько дисковых пространств, сколько это только возможно, но величина пространства, имея которую они смогут жить спокойно зависит от 30fd многих факторов. Некоторые люди занимаются печатанием текстов и могут легко обойтись несколькими мегабайтами, но другие занимаются обработкой огромных изображений и требуют для своей работы гигабайтов.

Кстати, сравнивая размеры дисков в килобайтах, мегабайтах и гигабайтах, считайтесь с тем, что эти величины могут быть разными. Некоторые производители дисков хотят считать, что килобайт - это 1000 байт и что мегабайт - 1000 килобайт, хотя весь компьютерный мир в обоих случаях пользуется множителем 1024. То есть, мой 345   МБ диск в действительности является 330   Мбайтним.99

О выделении места под свопинг читайте в разделе   <а href="node70.html#sec:swap-alloc">[*].
 

Некоторые образцы раздела дисков

Раньше я пользовался диском объемом 109   Мбайт, теперь я имею 330   Мбайтний. Я объясню, как я разделил эти диски на подразделы.

109   Мбайтний диск я разбивал тысячами способов тогда, когда мои потребности изменялись. Были два типичных сценария. Сначала я пользовался MS-DOS`ом вместе с Линаксом. Мне нужно было возле 20   Мбайт пространства на диске, чтобы иметь минимальный DOS компилятор Си, редактор, несколько других программок и немного свободного пространства, чтобы не чувствовать клаустрофобии. Для Линакса я имел 10   Мбайтний своп-подраздел и остальные (то есть 79   Мбайт) 30fd принадлежала всем Линаксивским файлам на одном разделе. Я экспериментировал с отдельными разделами для корня /usr <а name="3868">  , /home <а name="3870">  , но у меня не было некогда достаточно пространству одним куском настолько большим, чтобы меня это заинтересовало.

Когда я потерял потребность в DOS-і, я переформатировал диск так, что я имел 12   Мбайтний раздел под свопинг и опять же остальные шли на один раздел.

330   Мбайтний диск я разделил на несколько подразделов приблизительно так:

5 MBкоренева файловая система
10 MB подраздел для свопинга
180 MB файловая система /usr <а name= 30fd "3872">  
120 MBфайлова система /home <а name="3874">  
15 MBчорновий раздел
Черновой раздел використовувася для некоторых экспериментов из ризномнитними вещами, которые требуют собственного подраздела, то есть для разных версий Линакса или для сравнения скоростей файловых систем. Когда этот раздел не использовался ни под что, я делал из него пространство под свопинг (я люблю иметь много открытых окон).

Как прибавить новые диски к Линаксу

Придание нового дискового пространства к Линаксу - дело простое если вся аппаратура установлена и сконфигурирована (установление аппаратуры не рассматривается в этой 30fd книжке). Вы форматируете диски так, как Вам нужно, создаете подразделы и файловые системы так как это было описано раньше и добавляете соответствующие строки к /etc/fstab <а name="3876">  , чтобы подразделы монтировались автоматически.

Экономия дискового пространства

Наилучший совет - это не устанавливать ненужные программы. Большинство версий Линакса предложат при установке некоторые варианты для выбора тех пакетов, которые будут установленные. Проанализировав список, Вы можете прийти к выводу, что Вам не нужно большинство из этих пакетов. Это сохранит Вам море места. Даже, если Вам нужна какая-то определенная программа, возможно, что Вам не нужна она вся. Например некоторая документация может не понадобиться, так же, как могут 30fd быть ненужными некоторые Elisp файлы для GNU Emacs`а, некоторые шрифты для X11 или некоторые библиотеки для программирования.

Если нельзя стереть определенные пакеты, возможно их можно сжать. Программы сжимания файлов, такие, как gzip <а name="3878">   но zip <а name="3880">   сожмут (равно как и расширят) индивидуальные файлы или группы файлів100. gzexe <а name="3913">   может сжимать и расширять файлы незаметно для пользователя (программы, которые не используются, сжимаются и расширяются позже, тогда когда они понадобятся). Экспериментальная система DouBle <а name="3915">   сможет сжимать все файлы в 30fd файловой системе незаметно для программ, которые ими пользуются. Если Вы знакомые с такими продуктами, как Stacker для DOS 101, то принцип работы тот же.

 
 
 
 


 
 
 
 
 
 
 
 
 
 
 
 
 




Источник: http://www.vesna.org.ua
19.06.2007

Материалы по теме:
Использование дисков и других носителей информации (part 1)
Построение файловой системы
Использование дисков и других носителей информации (part 1)
Использование дисков и других носителей информации (part 1)
Преступления в сфере компьютерной информации: "Характеристика криминолога преступника"


Коментарии (7) | Оставить коментарий

Bert | 17.04.2011 19:10
That′s really thinking out of the box. Tahkns!

Alexavier | 25.07.2011 06:10
That′s more than senisble! That′s a great post!

cheap oem software | 12.02.2012 19:07
zICwYb Unbelievable. Class..!

oem software | 12.02.2012 19:43
3OAVUt However, the author created a cool thing..!

Buy Cheap OEM Software | 07.03.2012 22:23
LtOEku I am so grateful for your post.Much thanks again. Cool.

Buy Cheap OEM Software | 07.03.2012 22:24
WTieI1 Major thankies for the article.Much thanks again. Really Great.

wholesale men clothing | 21.03.2012 00:01
Really enjoyed this post. Awesome.

Добавить комментарий

Имя:
Код:
Комментарий:





ФОРУМ



КНИГИ, ЛИТЕРАТУРА

Макиавелли Никколо — «Государь» (аудиокнига MP3) Придбати на
AudioBooks.com.ua -
28,95 грн.
Макиавелли Никколо — «Государь» (аудиокнига MP3)
Бенаквиста Тонино — «Малавита» (аудиокнига MP3) Придбати на
AudioBooks.com.ua -
36,95 грн.
Бенаквиста Тонино — «Малавита» (аудиокнига MP3)

Партнеры