Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Подготовка к экзамену LPI 101: Устройства, файловые системы Linux и стандарт Filesystem Hierarchy Standard

Младший уровень администрирования (LPIC-1). Тема 104.

Ян Шилдс , Старший программист, EMC
No bio.

Описание:  В данном руководстве Иэн Шилдз продолжает готовить вас к сдаче экзамена 101 на администратора младшего уровня (LPIC-1) Linux Professional Institute. В этом четвертом из пяти руководств Иэн знакомит вас с устройствами, файловыми системами Linux и стандартом Filesystem Hierarchy Standard. По окончании изучения этого руководства вы будете уметь создавать и форматировать разделы в различных файловых системах Linux, управлять ими и обслуживать их

Больше статей из этой серии

Дата:  16.04.2006 (Опубликовано: 24.01.2007)
Уровень сложности:  средний

Активность:  9731 просмотров
Комментарии:  

Раздел 3. Целостность файловых систем

Этот раздел охватывает материалы темы 1.104.2 для экзамена 101 на младший уровень администрирования. Тема имеет третий уровень значимости.

Из этой темы вы узнаете, как:

  • контролировать свободное пространство и inodes
  • проверять целостность файловых систем
  • решать несложные проблемы, возникающие в файловых системах

Рассмотрены как стандартные, так и журналируемые файловые системы. Акцент сделан на системах ext2 и ext3, но также затронуты средства других файловых систем. Большая часть представленного материала относится как к ядру 2.4, так и к 2.6. Примеры, приведенные в этом разделе, в основном используют систему Ubuntu 5.10 “Breezy Badger” (версия, основанная на Debian), с ядром 2.6.12, которая была установлена на файловые системы, созданные в предыдущем разделе. Результаты, полученные при использовании других систем, могут отличаться от представленных.

Контроль свободного пространства

Сначала - краткий обзор. Из руководства к теме 103, "Подготовка к экзамену LPI 101: команды GNU и UNIX", вы узнали, что файл или каталог размещаются в группе блоков, а информация о файле или каталоге содержится в inode.

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

df

Команда df выводит информацию о монтированных файловых системах. (Подробнее о монтировании файловых систем – в следующем разделе Монтирование и размонтирование файловых систем). Если добавить опцию -T, к выводу будет добавлен тип файловой системы. Результат выполнения команды df в системе Ubuntu, установленной на файловые системы, созданные в предыдущем разделе, показан в листинге 17.


Листинг 17. Вывод информации об использовании файловых систем
                    
ian@pinguino:~$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/hda6 reiserfs    20008280   1573976  18434304   8% /
tmpfs        tmpfs     1034188         0   1034188   0% /dev/shm
tmpfs        tmpfs     1034188     12588   1021600   2% /
lib/modules/2.6.12-10-386/volatile
/dev/hda2     ext3      101105     19173     76711  20% /boot
/dev/hda8     vfat     2004156         8   2004148   1% /dos
/dev/hda7      xfs     9998208      3544   9994664   1% /home
/dev/hda1     ntfs    20967416   9594424  11372992  46% /media/hda1

Заметьте, что вывод содержит общее число блоков, а также число используемых и свободных блоков. Также указывается файловая система, например, /dev/hda7, и ее точка монтирования: /home для /dev/hda7. Две записи tmpfs относятся к файловым системам в виртуальной памяти. Они существуют только в оперативной памяти или пространстве подкачки и создаются в момент монтирования без использования команды mkfs. Подробнее о команде tmpfs – в части «Общие курсы: расширенное руководство по реализации файловых систем, Часть 3» (см. ссылку в разделе Ресурсы).

Если необходимо вывести данные об использовании inode, применяется команда df c опцией -i. Можно исключить вывод данных по определенной файловой системе, используя опцию -x, или ограничить информацию определенными типами файловых систем, использую опцию -t. При необходимости их можно использовать несколько раз. Примеры представлены в листинге 18.


Листинг 18. Просмотр inode
                    
ian@pinguino:~$ df -i -x tmpfs
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hda6                  0       0       0    -  /
/dev/hda2              26208      34   26174    1% /boot
/dev/hda8                  0       0       0    -  /dos
/dev/hda7            10008448     176 10008272    1% /home
/dev/hda1              37532   36313    1219   97% /media/hda1
ian@pinguino:~$ df -iT -t vfat -t ext3
Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/hda2     ext3     26208      34   26174    1% /boot
/dev/hda8     vfat         0       0       0    -  /dos

Возможно, вас не удивит то, что для системы FAT32 не отображаются inodes, но неожиданностью может стать то, что и для ReiserFS их тоже нет в выводе. ReiserFS содержит метаданные о файлах и каталогах в объектах stat items. Вследствие того, что в ReiserFS используется сбалансированная древовидная структура, в ней нет заранее определенного числа inodes, в отличие, например, от файловых систем ext2, ext3 или xfs.

Кроме того, существуют некоторые другие опции команды df, используемые для ограничения вывода локальными файловыми системами или для контроля формата вывода. Например, используйте опцию -H для вывода результатов в удобном для пользователя формате (например, 1K для 1024), или опцию -h (или - --si) для отражения размеров в десятичном представлении (1К=1000).

Если вы не знаете точно, какая файловая система используется для определенной части вашего дерева каталогов, можно применить команду df с указанием пути или даже имени файла в качестве параметра, как показано в листинге 19.


Листинг 19. Удобочитаемый формат вывода результатов df
                    
ian@pinguino:~$ df --si ~ian/index.html
Filesystem             Size   Used  Avail Use% Mounted on
/dev/hda7               11G   3.7M    11G   1% /home

du

Команда df выводит информацию только о файловой системе в целом. Иногда необходимо узнать, сколько места занимает каталог home, или какой размер раздела потребуется, чтобы разместить каталог /usr в отдельной файловой системе. Для решения этих задач используется команда du.

Команда du выводит информацию о файле (файлах), имена которых заданы в качестве параметров. Если задано имя каталога, то du определяет размер всех файлов и подкаталогов этого каталога на всех уровнях вложения. Результат работы команды может быть очень объемным. К счастью, существует опция -s для вывода сводной информации по каталогу. Если использовать du для получения информации о нескольких каталогах, можно добавить опцию -c для вывода суммарных данных. Также можно задавать формат вывода. Для этого применяются опции, аналогичные используемым в команде df (-h, -H, --si и т.п.). Листинг 20 показывает два варианта вывода для моего каталога home во вновь установленной системе Ubuntu.


Листинг 20. Использование du
                    
ian@pinguino:~$ du -hc *
0       Desktop
16K     index.html
16K     total
ian@pinguino:~$ du -hs .
3.0M    .

Причина различия между результатом команды du -c *, насчитавшей 16 КБ, и команды du -s, получившей объём 3 MБ, в том, что последняя включает файлы и каталоги, начинающиеся с точки, такие как .bashrc, которые не просматриваются первой.

Еще следует отметить, что для использования du вы должны иметь права чтения каталогов, к которым вы ее применяете.

Теперь применим du для просмотра общего объема, занимаемого каталогом /usr и всеми его подкаталогами первого уровня. Результат представлен в листинге 21. Чтобы с гарантией иметь соответствующие права доступа, используйте полномочия root.


Листинг 21. Использование du для каталога /usr
                    
root@pinguino:~# du -shc /usr/*
66M     /usr/bin
0       /usr/doc
1.3M    /usr/games
742K    /usr/include
0       /usr/info
497M    /usr/lib
0       /usr/local
7.3M    /usr/sbin
578M    /usr/share
0       /usr/src
14M     /usr/X11R6
1.2G    total


Проверка файловых систем

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

Основной инструмент для проверки файловых систем - команда fsck, которая, аналогично mkfs, является интерфейсом доступа к командам проверки различных типов файловых систем. Несколько примеров таких команд приведено в листинге 22.


Листинг 22. Примеры программ fsck.
                    
ian@pinguino:~$ ls /sbin/*fsck*
/sbin/dosfsck      /sbin/fsck.ext3   /sbin/fsck.reiser4   /sbin/jfs_fscklog
/sbin/e2fsck       /sbin/fsck.jfs    /sbin/fsck.reiserfs  /sbin/reiserfsck
/sbin/fsck         /sbin/fsck.minix  /sbin/fsck.vfat
/sbin/fsck.cramfs  /sbin/fsck.msdos  /sbin/fsck.xfs
/sbin/fsck.ext2    /sbin/fsck.nfs    /sbin/jfs_fsck

Процесс загрузки системы с помощью команды fsck проверяет корневую файловую систему и другие файловые системы, указанные в управляющем файле /etc/fstab. Если файловая система не была размонтирована корректно, проводится проверка целостности системы. Это определяется значением поля pass (или passno) (шестое поле записи /etc/fstab). Файловые системы со значением pass, установленным в ноль, не тестируются во время загрузки. Корневая файловая система имеет значение pass, равное 1, и тестируется первой. Другие файловые системы обычно имеют значение pass от двух и выше, которое указывает, в каком порядке их надо проверять. Несколько операций fsck могут выполняться параллельно, поэтому различные файловые системы могут иметь одинаковые значения pass, как в нашем примере системы /boot и /home.


Листинг 23. Тестирование системы при загрузке на основании данных fstab.
                    
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda6       /               reiserfs defaults       0       1
/dev/hda2       /boot           ext3    defaults        0       2
/dev/hda8       /dos            vfat    defaults        0       0
/dev/hda7       /home           xfs     defaults        0       2

Следует отметить, что некоторые журналируемые файловые системы, такие как ReiserFS и xfs, могут иметь значение pass, установленное в 0, поскольку проверку и восстановление файловой системы производит программа журналирования, а не fsck.


Восстановление файловых систем

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

Если вы заподозрили порчу данных или хотите запустить проверку вручную, большинство программ требуют сначала размонтировать файловую систему. Поскольку размонтировать корневую файловую систему работающей системы невозможно, максимум, что можно сделать - перейти в однопользовательский режим (используя telinit 1), а затем перемонтировать корневую файловую систему в режиме «только чтение»; после этого можно провести проверку согласованности. (Монтирование файловых систем описано в следующем разделе – Монтирование и размонтирование файловых систем.) Наилучший способ проверки файловых систем – загрузиться в резервную систему с CD-диска или USB- накопителя и провести проверку ваших файловых систем в размонтированном виде.

Преимущества журналирования

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

Эта проблема побудила к созданию журналируемых файловых систем. Такие файловые системы хранят недавние изменения в метаданных. После сбоя, чтобы определить, в каких частях файловой системы в результате сбоя могли возникнуть ошибки, драйвер файловой системы просматривает журнал. Это позволяет сократить время проверки целостности файловой системы до нескольких секунд, независимо от ее размера. Более того, драйвер файловой системы обычно проверяет файловую систему на этапе монтирования, поэтому дополнительная проверка с помощью fsck, как правило, не требуется. Фактически в файловой системе xfs команде fsck делать нечего!

Перед инициированием проверки файловой системы вручную следует уточнить параметры конкретной команды fsck по документации. В примерах, представленных в листинге 24, команда fsck запускается с рабочего компакт-диска Ubuntu.


Листинг 24. Ручной запуск fsck
                    
root@ubuntu:~# fsck -p /dev/hda6
fsck 1.38 (30-Jun-2005)
Reiserfs super block in block 16 on 0x306 of format 3.6 with standard journal
Blocks (total/free): 5002224/4608416 by 4096 bytes
Filesystem is clean
Replaying journal..
Reiserfs journal '/dev/hda6' in blocks [18..8211]: 0 transactions replayed
Checking internal tree..finished
root@ubuntu:~# fsck -p /dev/hda2
fsck 1.38 (30-Jun-2005)
BOOT: clean, 34/26208 files, 22488/104420 blocks
root@ubuntu:~# fsck -p /dev/hda7
fsck 1.38 (30-Jun-2005)
root@ubuntu:~# fsck -a /dev/hda8
fsck 1.38 (30-Jun-2005)
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
/dev/hda8: 1 files, 2/501039 clusters


«Продвинутые» инструменты

Также существуют более функциональные средства для проверки и восстановления файловых систем. Правила использования можно найти в документации man, а практические рекомендации – в Linux Documentation Project (см. Ресурсы). Почти все эти команды требуют, чтобы файловая система была размонтирована, хотя некоторые функции могут использоваться в файловых системах, смонтированных в режиме «только чтение». Некоторые из этих команд описаны далее.

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

Инструменты для файловых систем ext2 и ext3

tune2fs
Настраивает параметры файловых систем ext2 и ext3. Используется для добавления журнала к системе ext2, делая, таким образом, из нее ext3, а также выводит или устанавливает максимальное число монтирований, после которого необходима проверка. вы также можете задать метку и назначить или запретить выполнение дополнительных опций.
dumpe2fs
Выводит информацию о дескрипторах суперблоков и групп блоков в файловых системах ext2 и ext3.
debugfs
Команда для интерактивной отладки файловой системы. Используйте ее для проверки или изменения состояния файловых систем ext2 или ext3.

Инструменты для файловых систем ReiserFS

reiserfstune
Выводит и настраивает параметры файловой системы ReiserFS.
debugreiserfs
Выполняет функции, аналогичные dumple2fs и debugfs, для файловой системы ReiserFS.

Инструменты для файловой системы XFS

xfs_info
Выводит информацию о системе XFS.
xfs_growfs
Расширяет файловую систему XFS (если имеется дополнительный раздел).
xfs_admin
Изменяет параметры файловой системы XFS.
xfs_repair
Восстанавливает файловую систему XFS, когда проверок при монтировании установке недостаточно для восстановления системы.
xfs_db
Проверяет или отлаживает файловую систему XFS.

3 из 11 | предыдущая | следующая

Комментарии



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=191899
TutorialTitle=Подготовка к экзамену LPI 101: Устройства, файловые системы Linux и стандарт Filesystem Hierarchy Standard
publish-date=04162006
author1-email=ishields@us.ibm.com
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).