Блог о системном администрировании. статьи о linux, windows, схд netapp и виртуализации
Содержание:
Просмотр статуса файловой системы
Естественно, вам захочется настроить базовые параметры файловой системы, такие как распределение дискового пространства, контрольные точки безопасности и заданный уровень производительности. В арсенале GNU имеется множество инструментов для работы с файловой системой. Наиболее распространенные команды – это , , и , а также и (эти команды не столь популярны, но не менее полезны).
Команды du и df
Команды и используются для получения информации об использовании диска и свободном дисковом пространстве. Команда показывает размер файлов в директории /var. Если необходимо получить информацию о вложенных поддиректориях директории /var, то нужно выполнить команду .
# du -csh /var 73M /var 73M total
Команда выводит информацию об использовании файловыми системами дискового пространства для всех точек монтирования в удобочитаемом () формате:
# 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
Команда используется для проверки файловой системы и при необходимости ее восстановления. Например, если вам необходимо проверить на наличие ошибок раздел, расположенный на устройстве /dev/sda2, то введите команду :
# 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, сначала был демонтирован. Команда не обнаружила каких-либо ошибок, в противном случае она попыталась бы исправить их.
Команда 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
В этом примере демонстрируется, как можно использовать команду для получения информации об операциях чтения/записи, а также общей статистики
Обратите внимание на то, что по умолчанию эта команда выводит информацию об операциях чтения/записи для всех устройств, а в верхней строке отображает общую статистику использования
Команда sar
Команда выводит значения системных счетчиков, подобно программе Performance Monitor операционной системы Windows. Команду можно использовать для отображения прошлых значений или для вывода счетчиков в реальном времени:
$ 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
В этом примере команда выводит пять значений счетчиков, обновляемых через каждые 4 секунды.
Описание файловых систем в ОС Linux
Далее мы рассмотрим типы файловых систем Linux, вводя специальные файловые системы. В 2001 году вышла ext3, какая добавила еще больше стабильности благодаря использованию журналирования. В ней было привнесено много улучшений, в том числе увеличен максимальный габарит раздела до одного экзабайта. Она самая стабильная из абсолютно всех существующих, кодовая база изменяется очень крайне редко и эта файловая система содержит больше всего функций. В 2006 была отпущена версия ext4, которая используется во всех дистрибутивах Linux до нынешнего дня. Файловые системы в Linux используются не только для службы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время службы системы. Версия ext2 была разработана уже именно для Linux и заполучила много улучшений. Ext2, Ext3, Ext4 или Extended Filesystem – это стандартная файловая система для Linux. Она была изобретена еще для Minix.
При разработке файловой системы ставилась мишень создать максимально эффективную файловую систему для мультипроцессорных компьютеров. Сейчас она используется там, где необходима высокая стабильность и наименьшее потребление ресурсов. Также как и ext, это журналируемая файловая система, но в журнальчике хранятся только метаданные, что может привести к применению старых версий файлов после сбоев. JFS или Journaled File System была изобретена в IBM для AIX UNIX и использовалась в качестве альтернативы для файловых систем ext.
Ранее ReiserFS применялась по умолчанию в SUSE Linux, но теперь разработчики перешли на Btrfs. Она была разработана под управлением Ганса Райзера и поддерживает только Linux. Из необыкновенностей можно отметить динамический размер блока, что дозволяет упаковывать несколько небольших файлов в один блок, что предупреждает фрагментацию и улучшает работу с небольшими файлами. Но минус в отдельной нестабильности и риске потери данных при отключении энергии. ReiserFS – была изобретена намного позже, в качестве альтернативы ext3 с улучшенной продуктивностью и расширенными возможностями. Еще одно преимущество – в возможности менять размеры разделов на лету.
Из преимуществ файловой системы возможно отметить высокую скорость работы с большими файлами, зарезервированное выделение места, увеличение разделов на лету и ничтожный размер служебной информации. Она изначально была уволена на файлы большого размера, и поддерживала диски до 2 Терабайт. XFS – это производительная файловая система, разработанная в Silicon Graphics для свой операционной системы еще в 2001 году.
Из недостатков – это неосуществимость уменьшения размера, сложность восстановления данных и риск утраты файлов при записи, если будет неожиданное отключение кормления, поскольку большинство данных находится в памяти. Она утилизируется по умолчанию в дистрибутивах на основе Red Hat. XFS – журналируемая файловая система, хотя в отличие от ext, в журнал записываются только изменения метаданных.
Но многочисленными пользователями файловая система Btrfs считается неустойчивой. Btrfs или B-Tree File System – это совершенно новоиспеченная файловая система, которая сосредоточена на отказоустойчивости, свободности администрирования и восстановления данных. Тем не менее, она уже используется как файловая система по умолчанию в OpenSUSE и SUSE Linux. Файловая система соединяет в себе очень много новых интересных способностей, таких как размещение на нескольких разделах, поддержка подтомов, модифицирование размера не лету, создание мгновенных снимков, а вдобавок высокая производительность.
Другие файловые системы, подобные как NTFS, FAT, HFS могут использоваться в Linux, но корневая файловая система linux на них не ставится, поскольку они для этого не предназначены.
Конфликт режимов доступа к файлам
Возможно возникновение проблем, связанных с несогласованностью между программами, которые используют прямой ввод/вывод, и программами, использующими обыкновенный кэшированный ввод/вывод. Для устранения этих проблем Direct I/O обычно используется по умолчанию в исключительном режиме доступа. Предположим, что для файла открыто несколько потоков чтения — одновременно и Direct I/O, и стандартная политика кэширования. В таком случае режим доступа к файлу будет стандартным. Только в том случае, если файл открыт в исключительном режиме доступа для программ, которые поддерживают Direct I/O, файл будет переведен в режим прямого ввода/вывода.
Точно так же, если файл выгружен в виртуальную память при помощи системных вызовов или , он будет доступен в режиме стандартного кэширования.
JFS или JFS2 будут пытаться изменить режим доступа к файлу на Direct I/O всякий раз при завершении конфликтного (непрямого) доступа (через функции close(), munmap() или shmdt()). Однако изменение режима доступа к файлу с обычного ввод/вывода на Direct I/O может привести к увеличению нагрузки на ресурсы сервера, поскольку потребует выгрузки всех модифицированных страниц на диск и удаления всех страниц из памяти.
Файловая система XFS
Файловая система, больше подходящая для хранения очень больших файлов, в которых постоянно что-нибудь дописывается или обменивается. Поддерживает журналирование. Лишена недостатков Ext3 по производительности, но при её использовании выше риск потерять этые при сбоях кормления (в том числе и по причине принудительного обнуления повреждённых блоков в целях сохранности; при этом метаданные файла как обычно сохраняются и он выглядит как корректный). Рекомендуется использовать эту файловую систему с испытанным аппаратным обеспеченьем, подключенным к управляемому источнику бесперебойного питания (UPS).
Размещение дискового пространства — екстентами, храниение каталогов в B-деревьях. Автоматическая аллокация и высвобождение I-node. Дефрагментируется «на лету». Невозможно уменьшить размер существующей файловой системы. При сбое питания во время записи возможна потеря данных (хотя этот недостаток нельзя относить к одной только XFS, он отличителен любой журналируемой ФС, но, вместе с тем, XFS, по умолчанию, достаточно активно использует буферы в памяти).
Связи объектов
Теперь, рассмотрев различные важные объекты в слое VFS, давайте посмотрим, как они связаны между собой на одной схеме. Исследовав объект снизу вверх, взглянем теперь в обратном направлении, с точки зрения пользователя (см.
).
Наверху находится открытый объект , на который ссылается список файловых дескрипторов процесса. Объект
ссылается на объект
, который ссылается на
. Оба объекта, и
и ,
ссылаются на лежащий ниже объект .
Несколько file-объектов могут ссылаться на один и тот же dentry (например, в случае, когда два пользователя совместно используют один и тот же файл)
Обратите внимание также, что на рисунке 7 объект
ссылается на другой объект. В этом случае каталог ссылается на файл, который, в свою очередь, ссылается на inode для конкретного файла
История
На заре развития Linux использовала файловую систему ОС Minix. Она была довольно стабильна, но оставалась 16-разрядной и, как следствие, имела жёсткое ограничение в 64 Мегабайта на раздел. Также присутствовало ограничение на максимальную длину имени файла: оно составляло 14 символов.
Эти и другие ограничения послужили стимулом к разработке «расширенной файловой системы» (англ. Extended File System), решавшей две главные проблемы Minix. Новая файловая система была представлена в апреле 1992 года. Ext расширила ограничения на размер файла до 2 гигабайт и установила предельную длину имени файла в 255 байт.
Тем не менее, оставалось ещё много нерешённых проблем: не было поддержки раздельного доступа, временных меток модификации данных. Именно эти проблемы послужили инициативой для создания следующей версии расширенной файловой системы ext2 (англ. Second Extended File System), разработанной в январе 1993 года. В ext2 были также реализованы соответствующие стандарту POSIX списки контроля доступа ACL и расширенные атрибуты файлов.
Файловые системы XFS, ReiserFS и JFS
Ну а что же с файловыми системами XFS, ReiserFS, JFS? Преимущества файловой системы XFS проявляются тогда, когда необходимо работать с файлами очень большого объема, что для домашнего пользования персональным компьютером не требуется. Файловая система ReiserFS позволяет использовать каждый байт жесткого диска, но неустойчива к сбоям и фрагментации жесткого диска.
Файловая система JFS очень надежная и производительная, но в силу маленького размера блока данных хорошо подходит для сервера баз данных, но не приемлема для мультимедиа контента домашнего компьютера. Таким образом, оптимальной для использования в Ubuntu является именно Ext4.
На этом бы статью о файловых системах в Linux можно было бы закончить, НО… В Winows мы привыкли к томам C:, D:, E:, программному каталогу в виде Program Files, папкам Мои документы, Мои рисунки, Мои картинки… А что же в Linux? А тут тоже все по-другому.
Файловая система /sys
Предложенная модель оказалась настолько удачной, что позднее файловая система /sys
«перехватила» многие функции /proc. По принципам функционирования и правилам
использования /sys сильно напоминает /proc, и в настоящее время сложилась
тенденция многие управляющие функции переносить из /proc в /sys.
Содержимое имён-псевдофайлов в обеих системах является только текстовым изображением некоторых
внутренних данных ядра. Но между /sys и /proc существуют и несколько
серьёзных отличий.
Во-первых, файловая система /proc является общей, «родовой» принадлежностью всех
POSIX систем (BSD, Solaris, QNX, и др.). Её наличие и общие принципы использования оговариваются
стандартом POSIX 2. В свою очередь файловая система /sys была разработана специально
для Linux и используется только этой платформой.
Во-вторых, скорее, по традиции меньшее количество диагностических файлов в /proc
содержит большой объём информации, в то время как в /sys имеется гораздо больше файлов,
но каждый из них содержит информацию об ограниченном единичном значении параметра, часто
соответствующем одной скалярной переменной языка C (в текстовом изображении): ,
, и т.д.
Сравните, как определяется число строк в файлах в разных системах:
# cat /proc/vmstat | wc -l 84 # cat /proc/cpuinfo | wc -l 24 ... # cat /sys/class/net/eth0/address 00:15:60:c4:ee:02 # cat /sys/class/net/eth0/flags 0x1003