Linux для системных администраторов Windows: Управление и мониторинг расширенной файловой системы

Используйте навыки работы с Windows для освоения самых популярных дисковых файловых систем Linux

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

Трейси Бост, консультант и преподаватель, Свободный писатель

Author photo - Tracy BostТрейси Бост - опытный разработчик программного обеспечения и проектировщик систем. Он специализируется на интеграции корпоративных приложений. Был сопредседателем рабочей группы по бизнес-правилам Организации по поддержке стандартов ипотечной отрасли (MISMO) и сопредседателем секции промышленных стандартов на симпозиуме RuleML2010. Работал в различных отраслях, в том числе в ипотеке, недвижимости и некоммерческом секторе.



05.02.2013

Об этой серии

Эта серия статей поможет вам улучшить навыки администрирования Linux-систем, исходя из уже имеющихся навыков работы с Windows. Чтобы извлечь наибольшую пользу из наших статей, необходимо иметь опыт работы с файловой системой NTFS в среде Windows, а также базовые знания о командной оболочке GNU/Linux®. Также вам пригодится работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды.

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

История расширенной файловой системы (ext) начинается с самых ранних дней Linux. В свое время эта файловая система позволила устранить ограничение на размер файла в 2 ГБ, но была чрезвычайно подвержена фрагментации. Поэтому вскоре после выпуска первой расширенной файловой системы была разработана ее вторая версия (ext2), устраняющая ряд дополнительных ограничений (например, максимальный размер файла был увеличен до 4 ТБ). Файловая система ext2 быстро стала общепринятым стандартом Linux, но продолжала развиваться вместе с развитием этой операционной системы. Таким образом, на сегодняшний день мы имеем еще две версии расширенной файловой системы – третью (ext3) и четвертую (ext4).

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

Дисковые файловые системы и расширенные файловые системы

По большей части в этой статье обсуждается работа с семейством расширенных файловых систем Linux (ext). Однако среди прочих файловых систем Linux поддерживает и множество дисковых файловых систем, например, XFS, ReiserFS, Btrfs (B-tree File System) и JFS (IBM Journaled File System). В зависимости от задач, выполняемых на вашем компьютере и в вашей рабочей среде, какие-то из этих файловых систем могут оказаться более подходящими, чем расширенная файловая система. Тем не менее знакомство с расширенной файловой системой является хорошей отправной точкой, поскольку в большинстве дистрибутивов Linux по умолчанию используется файловая система ext3 или ext4.

Файловая система ext3 является результатом дальнейшего развития более ранней файловой системы ext2 и широко используется в настоящее время. Одним из важных принципиальных отличий ext3 от ext2 является наличие журналирования. Файловая система ext3 обратно совместима с ext2, поэтому для перехода с ext2 на ext3 нет необходимости повторно разбивать диск на разделы. Обычно для этого достаточно запустить команду tune2fs –j с привилегиями пользователя root. Например, если файловая система ext2 используется на втором разделе первого жесткого диска, то для ее преобразования в ext3 достаточно запустить команду tune2fs -j /dev/sda2.

Помимо журналирования, в ext3 реализован и ряд других улучшений по сравнению с ext2, например, повышенная скорость и надежность. Не обладая возможностями журналирования, файловая система ext2 страдала из-за "грязных" перезагрузок операционной системы (например, в случае непредвиденного отключения электропитания или краха системы). Во время загрузки компьютера каждую файловую систему ext2 нужно было проверять перед ее монтированием. Учитывая современные объемы файловых систем, время проверки целостности в большинстве случаев оказывается неприемлемым, поскольку этот долгий процесс существенно снижает доступность системы. В журналируемых файловых системах (как, например, NTFS) данные записываются на диск и помечаются либо как целостные, либо как нецелостные. Поэтому при "грязной" перезагрузке проверяются только те файлы, помеченные как нецелостные, что устраняет необходимость проверки всей файловой системы. В ext3 предусмотрено три режима журналирования:

  • Journal. Полное журналирование данных. Записываются не только метаданные, но и сами данные. Это самый медленный режим.
  • Ordered. Формально записываются только метаданные, но этот способ может устранять повреждения, связанные с отложенной записью, поскольку сначала выполняется запись в блоки данных.
  • Writeback. Журналируются только метаданные, но не сами данные. Это самый быстрый режим.

Последней версией расширенной файловой системы на сегодняшней день является файловая система ext4, обратно совместимая с ext2 и ext3. По сравнению с ext3 в ext4 реализован ряд улучшений, в основном касающихся скорости и надежности. Файловая система ext4 имеется в Linux с версией ядра 2.6.28 и выше.

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

Таблица 1. Эволюция расширенной файловой системы
Файловая система
Extended file system(приблизительно с 1991 г.) Самая ранняя файловая система Linux. Недостатком этой файловой системы является чрезмерная фрагментация.
Ext2(приблизительно с 1993 г.) Эта файловая система обладает высокой надежностью, но в ней отсутствует журналирование. После внезапной перезагрузки или сбоя системы для всей файловой системы запускается команда fsck.
Ext3(приблизительно с 2001 г.) Эта файловая система может содержать 32 000 поддиректорий, поддерживает журналирование и обратно совместима с файловой системой ext2.
Ext4(приблизительно с 2008 г.) Эта файловая система может содержать 64 000 поддиректорий, позволяет полностью отключить журналирование (в отличие от ext3) и обратно совместима с файловыми системами ext2 и ext3.

Как хранятся данные

В файловой системе Linux хранятся два типа данных. Первый тип – это пользовательские данные (обычные файлы и директории, с которыми работают пользователи). Файлы также могут быть четырех типов: обычные файлы, ссылки, именованные каналы (FIFO) и сокеты.

Возможно, вы слышали выражение "В Linux все является файлами или процессами". Это выражение подразумевает тот факт, что в Linux отсутствует концепция системного реестра. Вместо этого все объекты хранятся в виде одного из четырех типов файлов. Другой тип данных, хранящихся в файловой системе – это метаданные, являющиеся индексными дескрипторами (index node) и обычно называемые inode. Индексные дескрипторы являются способом индексации атрибутов файлов в Linux. Каждый файл имеет свой inode, который обычно содержит следующую информацию:

Учетная запись обычного пользователя и команды с привилегиями пользователя root

Обратите внимание на то, что все команды в листингах этой статьи начинаются с символов $ или #, которые имеют в командном интерпретаторе Linux определенные значения. Символ $ в командной строке означает, что пользователь работает с обычными правами, тогда как символ # означает, что пользователь имеет привилегии учетной записи root (т. е. является администратором). Когда вы встречаете в листингах команду, начинающуюся с символа #, то для ее выполнения у вас должен быть доступ к команде sudo или к учетной записи пользователя root, позволяющей выполнить команду напрямую.

  • Размер файла.
  • Владельцы файла (пользователь и группа).
  • Файловые разрешения.
  • Количество жестких и мягких ссылок.
  • Время последнего доступа и изменения файла.
  • Информацию о списке контроля доступа (ACL).
  • Любые дополнительные атрибуты, определенные для файла (например, признак неизменяемости).

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

Листинг 1. Использование команды stat
$ stat /etc/services  
File: `/etc/services'
Size: 362031    	Blocks: 728        IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1638437     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-12-19 00:01:25.000000000 -0600
Modify: 2006-02-23 07:09:23.000000000 -0600
Change: 2011-09-18 17:29:37.000000000 -0500

В листинге 1 команда была выполнена для файла /etc/services. В результате ее выполнения мы получили в наглядном виде всю информацию индексного дескриптора и файловые атрибуты.

Директории

При работе в командной строке Linux вы будете видеть файловые папки, часто называемые директориями. Директории служат для тех же целей, что и папки Windows или папки графического интерфейса Linux. Но в действительности директории – это всего лишь пустые файлы для упорядочения других файлов или даже директорий.

Все директории упорядочены в иерархическую структуру, начинающуюся с корневой директории (/). В действительности это лишь логическое упорядочение, поскольку не все директории располагаются в одном разделе файловой системы. Фактически, если вы монтируете сетевую файловую систему (например, NFS), точка монтирования будет располагаться где-то в этой иерархической структуре ниже корневой директории. В этом заключается существенное отличие от Windows, где вы привыкли к тому, что диск C обычно содержит дисковую файловую систему, а последующие файловые системы (подключенные сетевые ресурсы, дисководы CD-ROM и USB-накопители) смонтированы в виде отдельных дисков - D, E, F и так далее.

Суперблок

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

В листинге 2 приведен пример, в котором мы получаем информацию о разделе, расположенном на устройстве /dev/sda1 (в нашем случае это раздел /boot). В конструкции grep -i superblock мы используем команду grep без учета регистра для вывода информации, содержащей строку superblock.

Листинг 2. Использование dumpe2fs для получения информации суперблока
# dumpe2fs  /dev/sda1 | grep -i superblock 
  Primary superblock at 1, Group descriptors at 2-2
  Backup superblock at 8193, Group descriptors at 8194-8194
  Backup superblock at 24577, Group descriptors at 24578-24578
  Backup superblock at 40961, Group descriptors at 40962-40962
  Backup superblock at 57345, Group descriptors at 57346-57346
  Backup superblock at 73729, Group descriptors at 73730-73730

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

Естественно, вам захочется настроить базовые параметры файловой системы, такие как распределение дискового пространства, контрольные точки безопасности и заданный уровень производительности. В арсенале GNU имеется множество инструментов для работы с файловой системой. Наиболее распространенные команды – это df, du, fsck и fdisk, а также iostat и sar (эти команды не столь популярны, но не менее полезны).

Команды du и df

Команды df и du используются для получения информации об использовании диска и свободном дисковом пространстве. Команда du -csh /var показывает размер файлов в директории /var. Если необходимо получить информацию о вложенных поддиректориях директории /var, то нужно выполнить команду du -h.

# du -csh  /var 
73M	/var
73M total

Команда df -h выводит информацию об использовании файловыми системами дискового пространства для всех точек монтирования в удобочитаемом (-h) формате:

# df -h 
 File System            Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup00-LogVol00    37G  3.2G   32G  10% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm

Команда fsck

Команда fsck используется для проверки файловой системы и при необходимости ее восстановления. Например, если вам необходимо проверить на наличие ошибок раздел, расположенный на устройстве /dev/sda2, то введите команду fsck /dev/sda:

# umount  /var
# fsck /var
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda3: clean, 702/192000 files, 52661/768000 blocks

Примечание. Эту команду следует запускать на несмонтированной файловой системе.

В вышеприведенных примерах все задачи выполнялись в однопользовательском режиме. Раздел /var, расположенный на устройстве /dev/sda3, сначала был демонтирован. Команда fsck не обнаружила каких-либо ошибок, в противном случае она попыталась бы исправить их.

Команда iostat

Команда iostat выводит статистику дисковых операций ввода/вывода.

$ iostat
Linux 2.6.18-164.el5 (DemoServer) 	12/19/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    1.74    1.26    2.89    0.00   93.86

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              10.69       351.52       227.60    1759192    1139038
sda1              0.06         0.45         0.00       2254         22
sda2             10.62       351.01       227.60    1756658    1139016
dm-0             40.06       350.72       227.60    1755178    1139016
dm-1              0.02         0.18         0.00        920          0
hdc                0.00         0.03         0.00        144          0
fd0               	 0.00         0.00         0.00         16           0

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

Команда sar

Команда sar выводит значения системных счетчиков, подобно программе Performance Monitor операционной системы Windows. Команду sar можно использовать для отображения прошлых значений или для вывода счетчиков в реальном времени:

$ sar 4 5
Linux 2.6.18-164.el5 (DemoServer) 	12/19/2011

12:20:20 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:20:24 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:20:28 AM       all      0.00      0.00      1.01      0.00      0.00     98.99
12:20:32 AM       all      0.00      0.00      0.50      0.00      0.00     99.50
12:20:36 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:20:40 AM       all      0.25      0.00      1.01      0.00      0.00     98.74
Average:          all      0.05      0.00      0.50      0.00      0.00     99.45

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


Оптимизация и тонкая настройка файловой системы

Одной из ответственных задач системного администратора является обеспечение доступа к данным пользователей за определенное время. Так же, как и в операционной системе Windows, наблюдение за производительностью системы является в Linux одной из главных задач. Как и производительность сети, производительность дисковой подсистемы чтения/записи может стать узким местом в системе, поэтому она требует оптимизации и тонкой настройки.

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

  • Применить инструмент tune2fs.
  • Изменить точки монтирования в файле /etc/fstab.
  • Изменить параметры ядра.

Настройка с помощью tune2fs

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

# tune2fs  -O dir_index  /dev/sda5

Команду tune2fs следует запускать с привилегиями пользователя root. Переключатель -O определяет опцию для указанного раздела.

Монтирование с использованием специальных опций

Процесс, после которого файловая система становится доступной для использования, называется монтированием файловой системы. На практике для этого используется команда mount. Когда вы включаете компьютер с Linux, то система должна знать, как монтировать доступные файловые системы. Для этих целей служит файл /etc/fstab. Как и любые другие конфигурационные файлы Linux, этот файл можно редактировать с помощью любого текстового редактора, например, vi или vim. Внутри файла /etc/fstab указаны точки монтирования различных файловых систем. При настройке параметров монтирования используется четвертый столбец. Например, чтобы отключить аудит времени последнего доступа к файлам для определенной файловой системы (что потенциально может повысить производительность), можно добавить опцию noatime. Если у вас имеется файловая система, в которую пользователи не должны записывать данные (например, если в ней хранятся архивы), то можно смонтировать ее с опцией ro ("только для чтения").

Для изменения параметров монтирования в файле /etc/fstab используйте следующую командную строку:

UUID=97ee2cc4-8a26-41e9-9da1	/archives	ext4	 defaults,ro,noatime	1 2

Все изменения, которые вы вносите в файл /etc/fstab, вступают в силу после перезагрузки компьютера. Чтобы применить их без перезагрузки, можно демонтировать и повторно смонтировать затрагиваемую файловую систему с помощью команды mount:

# mount -o remount  /archives

Если раздел можно демонтировать в текущей рабочей среде, то команда mount -o remount позволит избежать перезагрузки системы после изменения файла /etc/fstab.

Настройка параметров ядра

Для просмотра и изменения параметров ядра используется команда sysctl. Чтобы получить список параметров, относящихся к файловой системе, и их текущие значения, выполните команду sysclt -a | grep fs, как показано в листинге 3.

Листинг 3. Просмотр параметров ядра, относящихся к файловой системе
# sysctl -a | grep fs. | less 
....
fs.quota.warnings = 1
fs.quota.syncs = 23
fs.quota.free_dquots = 0
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.writes = 0
fs.quota.reads = 0
fs.quota.drops = 0
fs.quota.lookups = 0
fs.suid_dumpable = 0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_watches = 8192
fs.inotify.max_user_instances = 128
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.lease-break-time = 45
fs.dir-notify-enable = 1
fs.leases-enable = 1
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.dentry-state = 26674	23765	45	0	0	0
fs.file-max = 102263
.........

В листинге 3 показан фрагмент списка параметров ядра, относящихся к файловой системе и отфильтрованных с помощью команды grep. Изменить эти параметры можно с помощью команды sysclt -w. Например, если ваш сервер обрабатывает большое количество мелких файлов и на нем постоянно возникают ошибки с сообщением "running out of file handles" (недостаточно обработчиков файлов), то можно увеличить максимальное число дескрипторов открытых файлов с помощью команды sysclt -w file-max=xxxxxx, где xxxxxx – необходимое максимальное количество обработчиков.

Любые изменения, сделанные с помощью sysctl, работают до первой перезагрузки. Чтобы эти изменения действовали после перезагрузки, необходимо открыть файл /etc/sysconf в любом текстовом редакторе и внести изменения в него. В этом файле содержатся не все параметры ядра, поэтому если вы не нашли в нем нужный параметр, то просто добавьте его вместе с нужным значением.

Фрагментация

Обычно дефрагментацию диска выполняют при его фрагментации более 20%. При создании расширенной файловой системы около 5% дискового пространства резервируется для системных задач во избежание необходимости дефрагментации. Если говорить кратко, то в обычных условиях вам не нужно беспокоиться о выполнении дефрагментации. Тем не менее это не означает, что современное поколение расширенных файловых систем совершенно не подвержено фрагментации. Если вы подозреваете, что файл фрагментирован, это можно проверить с помощью команды filefrag. Опция -v позволяет получить более подробную информацию.


Работа с виртуальной памятью

Концепция виртуальной памяти в Linux не слишком отличается от таковой в операционной системе Windows. Когда в Windows заканчивается свободная память, начинает использоваться файл подкачки (page file). Виртуальная память является относительно недорогим способом увеличить производительность в те моменты, когда система использует максимально возможный объем оперативной памяти.

Область подкачки Linux

Виртуальная память Linux размещается в "файловой системе" подкачки. Эта дисковая файловая система должна иметь тип swap. Для получения информации об использовании системной области подкачки можно использовать несколько инструментов командной строки (а также графические инструменты):

  • free
  • top
  • vmstat
  • sar

Команда free -m позволяет увидеть статистику использования памяти, включая область подкачки. Команда top выводит в реальном времени список процессов, а также статистику загрузки ЦП и оперативной памяти. Команда vmstat помимо информации о загрузке системной памяти и ЦП выводит информацию о блочном вводе/выводе. Помимо этих команд я обнаружил набор инструментов sar, похожий на монитор производительности Windows и предназначенный для анализа использования области подкачки сервером:

$ sar  -w
$ sar  -B

В этом примере команда sar -w выводит статистику использования области подкачки, а команда sar -d – информацию об операциях чтения и записи в раздел SWAP. Для получения информации о настройке sar обратитесь к документации sar.

Создание нового пространства подкачки

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

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

  1. Создайте раздел с помощью команды fdisk и укажите для него тип 82 (область подкачки Linux).
  2. Создайте том подкачки с помощью команды mkswap.
  3. Задействуйте область подкачки с помощью команды swapon -a.
  4. Добавьте новую точку монтирования области подкачки в файле /etc/fstab.
  5. Перезагрузите компьютер и проверьте доступность новой области подкачки с помощью команды swapon -s.

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

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

Общеизвестные инструменты Linux, используемые для изменения разделов – это утилиты fdisk, parted и их GUI-собрат GNOME Partition Editor (GParted). Однако если вы планируете вносить изменения в существующие разделы, то всегда учитывайте риск потери данных. Если вы разрабатываете схему разделов с помощью Logical Volume Manager (LVM), это делается более прозрачно по сравнению с традиционными методами, поскольку LVM позволяет изменять разделы без риска потери данных.


Заключение

Другие статьи из этой серии

Познакомьтесь с другими статьями из серии Linux для системных администраторов Windows.

Эта статья познакомила вас с файловыми системами ext2, ext3 и ext4, а также с возможностями и инструментами для их администрирования и мониторинга. В отсутствие Windows Performance Monitor инструменты, описанные в этой статье, позволят вам собрать всю статистику, необходимую для эффективного управления файловой системой Linux на различных аппаратных платформах.

Ресурсы

Научиться

Получить продукты и технологии

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

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

 


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

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

Выберите имя, которое будет отображаться на экране



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

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

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

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

 


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


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=857424
ArticleTitle=Linux для системных администраторов Windows: Управление и мониторинг расширенной файловой системы
publish-date=02052013