четверг, 9 апреля 2009 г.

План перехода с Windows на Linux: Часть 6. Работа с разделами и файловыми системами

E-business архитектор IBM Крис Волден, ваш гид по всей серии developerWorks, поможет перенести навыки работы с Windows в Linux. В этой части мы исследуем иерархическую структуру каталогов в Linux и изучаем монтирование и устройства.

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


Листинг 1. Структура каталогов
/
|-- bin
|-- boot
|-- dev
|-- etc
|-- mnt
|-- opt
| |-- IBM
| | |-- WebSphereStudio
| | `-- db2
| |-- IBMHttpServer
|-- root
|-- sbin
|-- tmp
|-- usr
| |-- X11R6
| | |-- bin
| | |-- include
| | |-- lib
| | |-- man
| | `-- share
| |-- bin
| |-- dict
| |-- doc
| |-- etc
| |-- include
| |-- lib
| |-- libexec
| |-- local
| | |-- OpenOffice
| | | |-- sbin

Нет букв, обозначающих диск!

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

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

Подмонтируй!

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

Что такое /proc?

Файловая система /proc -- это прекрасный пример разницы между мышлением в Linux и Windows. /proc содержит виртуальное представление различных аспектов работающей системы. Там есть информация о настройках IRQ, использовании памяти, загруженных драйверах устройств, состоянии сети и многом, многом другом. Есть даже файл под названием /proc/kcore, который является виртуальным представлением всей используемой системной памяти. Каждый из этих файлов можно проанализировать как обычный текстовый или бинарный файл. Некоторые файлы могут быть написаны для изменения поведения работающего ядра без перезагрузки. Например, чтобы включить перенаправление IP для первой активной сетевой карты в системе, вы можете использовать файловую команду:

echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding

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

Другие файловые системы, такие как сменный носитель или удаленные файловые системы необходимо монтировать вручную. Монтируя файловую систему, вы должны знать правильный путь, чтобы сослаться на него из Linux и иметь пустой каталог, чтобы использовать его как точку монтирования (mount point). Для сменных носителей Linux, вероятно, создаст точки монтирования во время инсталляции. В Red Hat Linux устройство чтения компакт-дисков предполагается монтировать к каталогу /mnt/cdrom. Это означает, что когда вы вставляете CD в устройство CDROM, вы вводите команду:

mount /mnt/cdrom

CD добавляется в файловую систему и устройство чтения CD блокируется так, что случайно оно не откроется. Для доступа к содержимому компакт-диска просто используйте каталог /mnt/cdrom. Когда вы закончите работать с CD, можно будет удалить его из файловой системы при помощи команды:

umount /mnt/cdrom

Каталог /mnt/cdrom будет очищен, а устройство чтения CD разблокировано. Точно также следует поступать и с остальными сменными носителями информации, такими как дискета (/mnt/floppy).

Если выполнить mount без аргументов, то будут показаны файловые системы, подмонтированные в настоящий момент.

Зачем все эти блокировки?

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

Файл /etc/fstab

Связь между устройством и его точкой монтирования настраивается в файле /etc/fstab. Его можно редактировать вручную или оставить программе администрирования. Вот пример /etc/fstab/:

Понимание /etc/fstab

/dev/hda5/ext3defaults1 1
/dev/hda2/bootext3exec,dev,duid,rw1 2
/dev/hda6swapswapdefaults0 0
/dev/scd0/mnt/cdromautoro,noauto,exec0 0
none/dev/ptsdevptsid=5,mode=6200 0
none/procprocdefaults0 0
none/dev/shmtmpfsdefaults0 0

Каждая строка представляет монтируемую файловую систему. Первая колонка определяет устройство, которое должно быть подмонтировано. Во второй колонке находится точка монтирования -- местоположение данного устройства в файловой системе. Третья колонка определяет тип файловой системы. В четвертой содержатся опции, показывающие как эта файловая система будет обрабатываться. В последней колонке написаны флаги, относящиеся к файловой системе. Первая цифра, 0 или 1, показывает, должна ли система копироваться при помощи команды dump (это нужно для системных резервных копий). Вторая цифра может быть 0, 1 или 2, она показывает порядок, в котором файловая система должна быть проверена при загрузке. 0 -- не должна проверяться вовсе. 1 -- должна проверяться первой и использоваться как корневая (/). Для всех остальных систем ставится 2.

В файле fstab, приведенном выше, корневая файловая система расположена на первом IDE жестком диске, в пятом разделе, первый логический диск в расширенном разделе. Файловая система /boot, где находятся файлы запуска ядра, расположена на первом IDE жестком диске, во втором первичном разделе. Пространство свопинга расположено на первом IDE жестком диске, в шестом разделе, втором логическом диске в расширенном разделе. Другие перечисленные файловые системы показывают свое устройство, как "none". Мы осветим это вкратце. А сейчас давайте сконцентрируемся на физических дисках.

Все является файлом

В Linux файловые системы называются именами, как файлы. Все файлы в каталоге /dev -- особенные, называются они узлы (nodes), и связаны с физическими устройствами посредством драйверов. Благодаря такому положению вещей вы можете делать интересные вещи. Например, чтобы создать ISO-образ компакт-диска, вы можете воспользоваться командой cp (копирования):

cp /dev/cdrecorder MyCD.iso

Вместо файловой структуры CD, копируется бинарный образ.

Такой "файл-центрический" подход также позволяет присвоить устройствам более осмысленные псевдонимы. Например, обычно /dev/cdrom указывает на физическое устройство чтения CD, часто соответствующее /dev/hdc. Однажды создав такой псевдоним, вы сможете всегда обратиться к устройству как к /dev/cdrom, что, конечно, гораздо проще запомнить. Эта технология использования псевдонимов также позволяет стандартизировать скрипты в системах, возможно с другими физическими конфигурациями.

Опции в четвертой колонке будут меняться в зависимости от типа файловой системы. В приведенном выше примере / и /boot подмонтированы с опциями "default". Это означает, что они монтируются автоматически, доступны для чтения и записи с асинхронным I/O (вводом/выводом). Только root может монтировать и отмонтировать устройства, но пользователи могут выполнять бинарники и использовать "sticky bit" (будет описан позже). Файловая система будет управляться как блочное устройство. Для /mnt/cdrom, однако, опции другие. Он не монтируется автоматически и будет открыт только для чтения. Пользователи смогут выполнять скрипты и программы в этой файловой системе.




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

Вы можете добавить файловые системы в /etc/fstab, дописав в файл новые строки. В качестве полезного примера приведу устройство RAID с файловыми ресурсами для использования отделом. Данное устройство будет содержать файлы данных и храниться отдельно от операционной системы, так что можно будет легко переместить его в другую систему в случае поломки оборудования. RAID уже сконфигурирован и распознается Linux как /dev/sdc, третье устройство SCSI. Журналируемая файловая система ext3 создана на первом разделе, и мы можем обращаться к ней как /dev/sdc1. Я хочу, чтобы этот RAID автоматически монтировался в файловую систему при загрузке компьютера.

Я добавляю следующую строку в /etc/fstab:

/dev/sdc1 /data ext3 defaults 0 0

В результате RAID подмонтируется при загрузке точно так же как системы / и /boot. Теперь я просто создаю каталог, который указал в качестве точки монтирования:

mkdir /data

Создав этот пустой каталог, мы теперь можем монтировать в него файловую систему:

mount /data

RAID теперь соответствует /data. Если система когда-либо будет перезагружаться, то /data подмонтируется автоматически.

Разделы

Разделы в Linux работают в общем так же как и в Windows. Консольная команда fdisk используется для создания и управления разделами. При выполнении этой команды вы должны указать ей устройство. Чтобы посмотреть доступные устройства, воспользуйтесь командой fdisk -l.


Листинг 2. Использование fdisk
[root@cmw-t30 root]# fdisk -l

Disk /dev/hda: 240 heads, 63 sectors, 7752 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 8 60448+ 8e Linux LVM
/dev/hda2 9 15 52920 83 Linux
/dev/hda3 * 16 1403 10493280 c Win95 FAT32 (LBA)
/dev/hda4 1404 7751 47990880 f Win95 Ext'd (LBA)
/dev/hda5 1404 5565 31464688+ 83 Linux
/dev/hda6 5566 5635 529168+ 82 Linux swap
/dev/hda7 5636 7751 15996928+ b Win95 FAT32

Приведенный выше список был создан на лэптопе, поэтому показывает довольно необычную для сервера структуру. Можно видеть один жесткий диск IDE с несколькими разделами. Если бы там были другие устройства, их бы тоже перечислили. Например, второй жесткий диск IDE мог быть показан как /dev/hdb.

Снова запустите fdisk с устройством и вы получите короткое приглашение.


Листинг 3. fdisk на устройстве
[root@cmw-t30 root]# fdisk /dev/hda

The number of cylinders for this disk is set to 7752.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

Ввод "m" даст вам меню команд. Текущая таблица разделов отобразится по нажатию "p". Вы можете создавать, удалять и изменять тип существующих разделов. "l" покажет вам полный список доступных типов разделов. Свои изменения в таблицу разделов вносите с помощью "w", закрывайте программу или выходите без сохранения используя "q". Некоторые изменения вступят в силу незамедлительно. Некоторые могут потребовать перезагрузки системы.

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


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

Linux может обслуживать любой тип файловой системы, о котором знает ядро. Изрядное их количество компилируется по умолчанию, а новые можно добавлять. Наиболее интересные из них:

  • ext2: Стандартная файловая система Linux
  • ext3: Стандартная файловая система Linux с добавленным протоколированием
  • vfat: Файловая система Microsoft Fat32
  • jfs: Журналируемая файловая система IBM
  • reiserfs: Еще одна популярная журналируемая файловая система
Протоколирование бережет время и данные

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


Форматирование разделов

Созданные разделы форматируются подходящей версией команды mkfs. У файловых систем есть свои собственные версии mkfs, например, mkfs.ext2 или mkfs.ext3. Эти вспомогательные скрипты позволят создать файловую систему, просто указав на раздел. Вот несколько примеров:


Листинг 4. Использование mkfs
 # Create an ext2 file system on the third
# parition of the first IDE hard drive
mkfs.ext2 /dev/hda3

# Create an ext3 file system on the first
# partition of the 2nd SCSI hard drivemkfs.ext2
mkfs.ext3 /dev/sdb1

# Create a jfs file system in an extended
# partition on the first IDE hard drive.
mkfs.jfs /dev/hda5

Существуют различные продвинутые параметры, чтобы влиять на то, как будет форматироваться раздел, но в общем случае вполне подходят значения по умолчанию. Отформатированный раздел может быть смонтирован в корень (/). Файловую систему следует отмонтировать перед переформатированием.


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

Давайте рассмотрим другие полезные программы.

Консольные программы

Есть несколько программных средств для просмотра состояния дисков и файловых систем.

df
df означает "disk free". Эта команда сообщает, сколько места на диске используется и доступно в подмонтированной файловой системе. Полезные ключи:

Проверка дискового пространства

df -h Читабельно; использует дружественные индикаторы k, M и G, чтобы показывать размер файла, а не отображать его в байтах.
df -l Ограничивает список до локальных файловых систем; по умолчанию показываются еще и удаленные

du
du означает "disk usage" (использование диска). Команда выводит, сколько дискового пространства используется определенными файлами и для каждого подкаталога (если аргумент -- каталог) Полезные ключи:

Проверка использования диска

du -a Показывает счетчики для всех файлов, не только каталогов
du -h Читабельность; использует дружественные индикаторы k, M и G, чтобы показывать размер файла, а не отображать его в байтах.
du -c Печатает общую сумму всех аргументов после того, как все они были обработаны; может использоваться, чтобы узнать полное использование диска заданным набором файлов или каталогов
du -s Показывает только итог для каждого аргумента

fsck
Эта программа используется для проверки и исправления файловых систем, соответствует chkdsk в Windows. У нее будут разные версии для разных типов файловых систем, как например mkfs. fsck следует выполнять на неотмонтированных томах, хотя она вряд ли потребуется, если только файловая система не была правильно отмонтирована. man fsck и info fsck дают подробную информацию, также как и Ресурсы, в конце этой статьи.

Webmin

Webmin предоставляет несколько инструментов для работы с файловыми системами и разделами.


Рисунок 1. Программа работы с разделами в Webmin
Рисунок 1. Программа работы с разделами в Webmin

Техника, разделы на локальных дисках

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

Система, диск и сетевые файловые системы

Подмонтированные и отмонтированные файловые системы перечислены в /etc/fstab. У обычных файловых систем есть мастер для создания записей. Системы незнакомых типов можно монтировать и отмонтировать отсюда, но придется вручную редактировать /etc/fstab. Большинство серверных файловых систем вполне можно обслуживать отсюда.

Целое -- это сумма разделов

Хотя есть много общего в том, как Windows и Linux работают с разделами и файловыми системами, к переходу от букв, соответствующих дискам, к полностью иерархическому дереву придется привыкать. Как всегда есть программы надежной консоли для работы с этими функциями и конфигурационными файлами в каталоге /etc. Программа с интерфейсом-браузером вроде Webmin предлагает несколько вспомогательных инструментов.


Комментариев нет:

Отправить комментарий