Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1321 / 264 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 7:

Устройство и администрирование файловой системы UFS

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

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

Любая файловая система так или иначе ищет компромисс между бесконтрольной фрагментацией, как в системе FAT, и полным запретом на фрагментацию, как в файловой системе ОС RT-11. Одной из проблем FAT является необходимость регулярно дефрагментировать раздел, а в файловой системе RT-11 приходилось регулярно выполнять программу squeese, которая записывала друг за другом, последовательно, все файлы, разбросанные по диску. Фрагментация FAT приводила к снижению производительности ввода-вывода, а запрет на фрагментацию в RT-11 делал невозможным запись на диск большого файла, даже если на диске было полно участков с размером хоть чуть меньше его длины, так как файл должен был быть записан только в последовательно расположенные блоки.

В файловой системе UFS проблема фрагментации решается очень изящно. Фактически, фрагментация диска редко превышает 1-2% от его объема, что в мире Windows считается превосходным показателем.

Как удается достичь такого? Нужно ли что-то делать системному администратору, чтобы фрагментация не мешала производительности в UNIX?

Фактически, термин "фрагментация" в UNIX означает явление, совсем не похожее на фрагментацию в FAT. В UFS если на диск записывается файл размером меньше блока, ему выделяется фрагмент блока, но фактически "резервируется" целый блок, и файл, таким образом, имеет резерв для расширения до размера блока. Файлы размером больше блока записываются в свободные (по возможности, последовательные) блоки файловой системы. Однако размер файла не всегда кратен длине блока, поэтому последний из блоков, в которые записан файл, будет, скорее всего, заполнен не до конца. В этот блок в UFS можно записать фрагмент другого файла. В этом смысле "фрагментом" файла в UFS называется часть файла, меньшая по размеру, чем блок. Фрагменты одного файла не могут храниться в разных блоках. Это означает, что файл не может занимать более одного блока неполностью. Это иллюстрирует рис. 7.1.

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

увеличить изображение
Рис. 7.1. Фрагментация в UFS

Индексный дескриптор хранит достаточно информации для того, чтобы идентифицировать не только блок, но и номер фрагмента в блоке, когда речь идет о размещении файла на диске.

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

Как много фрагментов (в понимании UFS) на разделе, можно выяснить, дав команду fsck –n.

Для уменьшения числа фрагментов (в понимании FAT), т.е. частей файла, записанных на разделе в разных цилиндрах вдали друг от друга, для записи файла в последовательные блоки следует воспользоваться коммерческими программами дефрагментации (см., например, http://www.eaglesoft.com/products.html – только для платформы SPARC) или выполнить резервное копирование всех файлов раздела и обратное их восстановление посредством программ ufsdump / ufsrestore.

Изменение размеров раздела

Для изменения размеров раздела UFS можно воспользоваться программой growfs. Кроме этого, если изменить размер раздела по какой-либо причине не представляется возможным, следует установить новый диск и перенести часть информации на него, возможно, создав соответствующие символические ссылки на переполненном разделе. Подробнее об изменении размеров разделов дисков и повышении их производительности рассказано в лекции 8 курса "Системное администрирование ОС Solaris 10".

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

Аналогом широко известной из систем Windows программы scandisk в UNIX является программа fsck. В Solaris fsck по умолчанию проверяет все фаловые системы, перечисленные в /etc/vfstab. Обычно имеет смысл запускать fsck вручную с указанием конкретной файловой системы:

fsck /dev/dsk/c0d0s7

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

Если в настоящий момент файловая система смонтирована, fsck не начинает проверку такой файловой системы. Это правило можно обойти, если потребовать от fsck обращаться к диску как к символьному устройству, а не как к блочному:

fsck /dev/dsk/c0d0s7
/dev/dsk/c0d0s7 is a mounted file system, ignored
fsck /dev/rdsk/c0d0s7
** /dev/rdsk/c0d0s7
** Currently Mounted on /export/home
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
2 files, 9 used, 3823540 free (20 frags, 477940 blocks,
 0.0% fragmentation)
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.