Рубрика:
Администрирование /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ИГОРЬ ШТОМПЕЛЬ, инженер, системный администратор. Сфера профессиональных интересов – свободное программное обеспечение
Что «под капотом»? Работа с HDD и файловыми системами из консоли
Можно использовать ПО с графическим интерфейсом, а можно решать задачи более оптимизированно – из командной строки, всегда зная, что происходит «под капотом»
Сегодня нередко можно услышать мнение о том, что лучше и удобнее решать задачи администрирования с использованием графического интерфейса. Попробуем разобраться, почему это так, на примере работы с жесткими дисками (в том числе и файловыми системами). Все программное обеспечение, о котором пойдет речь, является свободным (ориентировано на операционные системы семейства *nix).
Устройство жестких дисков и файловые системы
Предварительно рассмотрим устройство жесткого диска и строение файловых систем. Что касается жесткого диска, то будем вести речь именно об устройстве или параметрах внутренней организации. И только в том объеме, который необходим для дальнейшего изложения материала. Последнее справедливо и для строения файловых систем.
Как показано на рис. 1, жесткий диск (или накопитель на жестких магнитных дисках Hard Disk Drive) состоит из пакета дисков (пластин), которые приводятся в движение шпиндельным двигателем, а также считывающих головок и привода. Пластины являются той составляющей, которая ответственна за хранение информации. Они, как правило, изготавливаются из алюминия, стекла или керамики. Магнитный слой, покрывающий последние, является ферромагнитным материалом (окиси железа) или более прочным – окиси хрома. Для чтения или записи данных применяются магнитные головки.
Рисунок 1. Устройство жесткого диска
Чтобы получить доступ к пространству пластин, его необходимо каким-либо образом адресовать. Тут мы и подходим к такому понятию, как геометрия жесткого диска. Минимальная единица адресного пространства – сектор (его размер, как правило, варьируется в зависимости от устройств в таких пределах: 512, 1024 и 2048 байт). Для адресации последних применяются два способа: CHS (cylinder-head-sector, цилиндр-головка-сектор) и LBA (linear block addressing, линейная адресация блоков).
При использовании CHS адресация осуществляется посредством номеров цилиндра, головки и сектора, т.е. по физическим признакам, а при использовании LBA – числом, которое является абсолютным номером. Кроме того, возможно преобразование из одного способа адресации в другой:
LBA = ((c * H + h) * S) + s - 1
где:
- c – номер цилиндра,
- H – количество головок,
- h – номер выбранной головки,
- S – количество секторов в одном треке,
- s – номер сектора.
Последнее впервые было определено в проекте стандарта ATA-1, представленном еще в 1994 году Американским национальным комитетом по стандартизации и аккредитации X3 (American National Standard of Accredited Standards Committee X3) [1].
Секторы образуют дорожку, которая представляет собой кольцевую область. Более крупной единицей геометрии жесткого диска является цилиндр. Он состоит из дорожек, располагающихся одна под другой. Зная это, легко посчитать объем емкости совокупности дорожек одного цилиндра:
Емкость цилиндра = количество головок * количество секторов на дорожке * количество байт в секторе
Для получения наглядного представления о геометрии жесткого диска можно ознакомиться с рис. 2.
Рисунок 2. Геометрия жесткого диска
Первым физическим сектором на жестком диске является главная загрузочная запись, или Master Boot Record (MBR). Она содержит таблицу разделов и исполняемый код, который позволяет определить активный раздел и загрузить из него загрузочную запись. Сектор, имеющий адрес цилиндр 0, головка 0, номер 1, – это Master Boot Sector (MBS, загрузочный сектор). Его содержимое совпадает с MBR.
Следующим шагом развития в данном направлении стало создание формата GUID Partition Table (GPT) для размещения таблицы разделов на жестком диске. Последний определен в стандарте Extensible Firmware Interface (EFI, Расширяемый микропрограммный интерфейс). EFI был предложен как замена BIOS компанией Intel (разработка начата в 1998 году), а сейчас EFI курируется Unifed EFI Forum или UEFI (создан в 2005 году) [2]. Спецификации последней доступны по адресу http://www.uefi.org/specs.
Итак, GPT – это интерфейс между микропрограммами, оборудованием и операционной системой. При его использовании, как показано на рис. 3, в начале диска находится MBR (LBA0). Остался на месте в целях совместимости и безопасности – например, чтобы какая-либо утилита, ориентированная на работу с MBR, не перезаписала диски с GPT. Следом за ним начинается Оглавление таблицы разделов (Partition Table Header) – это и есть начало GPT (LBA1). GPT основан на использовании более современной системы адресации LBA, а MBR – CHS (о данных системах адресации мы говорили выше). За оглавлением GPT следует таблица разделов. Как в начале, так и в конце диска записываются оглавление и таблицы разделов, обеспечивая дублирование.
Рисунок 3. GUID Partition Table
Поскольку мы будем рассматривать в том числе программное обеспечение для работы с файловыми системами, необходимо рассмотреть принципы их организации (речь идет о ext2/ext3).
Взаимодействие файловых систем в GNU/Linux невозможно без общего интерфейса для них. Ядро (далее будет употребляться термин Linux, а для обозначения операционной системы – GNU/Linux) предоставляет последний. Поэтому нет необходимости использовать низкоуровневый интерфейс каждой отдельной системы, достаточно воспользоваться системными вызовами (например, такими, как open (), read (), write ()). На практике это может выглядеть следующим образом: копирование данных с устройства с файловой системой ext2 на устройство с ext3 или перемещение.
В роли данного общего интерфейса выступает VFS (Virtual File System, виртуальная файловая система). Это элегантное и удобное решение, но в то же время достаточно сложное. Как сказал Роберт Лав, один из разработчиков Linux: «…сделать так, чтобы общие системные вызовы работали для всех поддерживаемых файловых систем и физических сред хранения данных, – задача не тривиальная»[3]. Кстати, получить представление, насколько сложен процесс разработки и поддержки файловой системы на примере ext4, можно из интервью, которое дал Тед Цо (ответственный за подсистему ext4) [4].
Помимо общего интерфейса для работы с системными вызовами, VFS еще и дает общую базу или файловую модель. Последняя состоит из набора структур данных (их также называют объектами, а саму VFS объектно-ориентированной, хотя и реализованной на С.). Можно выделить четыре типа базовых объектов: суперблок (superblock), файловый индекс (inode), представление элемента каталога (dentry) и открытый файл, связанный с процессом (file).
Суперблок содержит информацию с описанием конкретной файловой системы. Без него не может быть реализована ни одна файловая система в контексте VFS. Структура суперблока определена в заголовочном файле linux/fs.h. Файловый индекс хранит информацию из дисковых индексов (без нее невозможно работать с файлами и каталогами). Структура файлового индекса также определена в заголовочном файле linux/fs.h. Элемент каталога – это определенная часть пути (например, /etc/fstab), в роли которой могут выступать обычные файлы (последовательность байтов). Структура файлового индекса также определена в заголовочном файле linux/dcache.h. Объект file используется для представления (храниться в оперативной памяти) файлов, которые открыты процессом. Как и структуры суперблока и файлового индекса, структура file определена в заголовочном файле linux/fs.h.
Если посмотреть на внутренние структуры ext2/ext3 (мы не будем их описывать, так как Владимир Мешков подробно описал архитектуру ext2 [5]. Логическая организация ext3 принципиально не отличается от ext2. Основное новшество ext3 – поддержка журналирования), то можно увидеть реализацию файловой модели, о которой мы говорили выше. Лишь еще раз заострю внимание: при использовании ext2 все пространство раздела или жесткого диска делится на блоки, размер которых кратен размеру сектора – 1024, 2048 или 4096.
Работаем с файловой системой
Начнем, пожалуй, с получения статистической информации о файловой системе. Для этого воспользуемся утилитой df, которая входит в пакет GNU Core Utilities (coreutils), включающий основные утилиты [6]. Итак, командуем:
df
У меня был отображен вывод, приведенный на рис. 4. У вас вывод может несколько отличаться (например, в зависимости от количества смонтированных файловых систем).
Рисунок 4. Вывод команды df
Итак, утилита отобразила:
- файловую систему (например, /dev/sda2);
- количество блоков (26004256 или чуть более 25 Гб (26004256/размер блока));
- количество используемых блоков (20674212);
- количество свободных блоков (4009100);
- количество используемых блоков в процентах (84%);
- точку монтирования (/).
Чтобы вывод был отображен в так называемом human-readable формате, надо использовать опцию -h (размер используемого и доступного пространства будет отображаться в Мб и Гб, а не блоках):
df -h
Соответственно, варьируя опции, можно получать различные выводы (-i для отображения информации о файловых индексах (inode), -T добавит в вывод для каждой файловой системы ее тип, -k вместо блоков размер будет отображаться в килобайтах).
Для получения дополнительной информации можно использовать команду:
df -- help
Если необходимо в каком-либо разделе создать файловую систему, то для этого надо использовать команду mkfs (make a filesystem). Mkfs является оберткой (wrapper) для различных утилит, ориентированных на создание файловых систем. Чтобы получить полный список данных утилит, необходимо:
- ввести в консоли команду mkfs;
- затем дважды нажать клавишу табуляции.
Полученный вывод представлен на рис 5. Как видно, в подобных командах через точку указывается тип файловой системы, с которыми они работают.
Рисунок 5. Вывод списка утилит оболочки mkfs
Для создания в разделе /dev/sda1 файловой системы ext3 необходимо дать команду:
mkfs -t ext3 /dev/sda1
Если опция -t не используется, то по умолчанию создается файловая система ext2. Данное форматирование производится следующим образом: создается суперблок (напомню, в файловой модели, о которой мы говорили выше, он содержит информацию о данной файловой системе). Оставшееся свободное пространство сразу не форматируется (по мере надобности драйвер файловой системы будет обращаться к блокам жесткого диска, и свободное пространство станет заполняться файлами).
Если бы мы использовали опцию -V, то получили бы вывод во время создания файловой системы подробной информации о данном процессе, включая все команды.
Для создания файловых систем ext2/ext3 можно применять команду mke2fs. После того как файловая система в разделе /dev/sda1 создана, необходимо ее смонтировать. Для этих целей воспользуемся командой mount. В общем виде синтаксис команды выглядит следующим образом:
mount -t [опции] [-t тип файлововой системы] [-o опции монтирования] устройство точка_монтирования
Итак, смонтируем вновь созданную файловую систему:
mount -t ext3 /dev/sda1 /mnt/sda1
В данном случае раздел /dev/sda1 с файловой системой ext3 будет смонтирован в каталог /mnt/sda1 (точка монтирования). Кстати, если дать команду mount без параметров, то она осуществит вывод списка всех смонтированных файловых систем.
Процесс отмонтирования данного раздела будет выглядеть следующим образом:
umount /dev/sda1
Если по какой-либо причине раздел не отмонтировался, то можно повторить данную команду с опцией -l:
umount -l /dev/sda1
что позволяет произвести «ленивое» отмонтирование. Как сказано в руководствах (для вывода: man umount), файловая система будет отключена из иерархии файловых систем, а все ссылки на нее будут удаляться в процессе ее освобождения.
Для автоматического монтирования данного раздела при каждой загрузке операционной системы надо отредактировать конфигурационный файл /etc/fstab, который содержит информацию о файловых системах и устройствах. Для этого добавим в него следующую строку:
/dev/sda1 /mnt/sda1 ext3 defaults 1 1
Рассмотрим внесенные изменения подробнее. Вначале мы указали наименование раздела – /dev/sda1, затем точку монтирования – /mnt/sda1. Потом файловую систему – ext3, опции монтирования – defaults (для ext3 – это rw (чтение/запись), suid (разрешены операции с битами suid, sgid), dev (распознавать специальные блочные файлы), exec (разрешено запускать исполняемые файлы), auto (автоматическое монтирование при загрузке или по команде mount с опцией -a для монтирования всех файловых систем, прописанных в рассматриваемом конфигурационном файле), nouser (только root сможет смонтировать файловую систему), async (отсутствуют синхронные операции чтения/записи)).
Для создания образов дисков CD и DVD можно использовать команды: dd и mkisofs. Рассмотрим первую из них. Предположим, что файловая система диска, с которого необходимо снять образ, смонтирована в каталог /dev/cdrom. Тогда даем команду:
dd if=/dev/cdrom of=/home/user/image.iso
В данном случае файл с итоговым образом – image.iso будет создан в каталоге /home/user. Но использование dd имеет свои недостатки – чтение пустых секторов. А значит, если создается образ диска CD, условно 650 Мб, на котором объем информации лишь 100 Мб, то итоговый образ будет иметь размер 650 Мб. Поэтому воспользуемся утилитой mkisofs:
mkisofs -R -J -input-charset utf8 -o /home/user/image.iso /dev/cdrom
Указанные опции означают:
- -R – файловая система RockRidge (для поддержки длинных имен файлов);
- -J – файловая система Joilet (для поддержки длинных имен файлов; потребуется, например, если диск будет воспроизводиться под MS Windows);
- -input-charset – определяет кодировку, на базе которой файлам давались имена. Как правило, использовать эту опцию не требуется, но иногда необходимо;
- -o – указывает файл, в который будет записан образ диска.
Несколько слов о том, как смонтировать получившийся образ. Чтобы смонтировать получившийся образ (image.iso) в каталог /mnt/cdrom, даем команду:
mount -t iso9660 -o loop /home/user/image.iso /mnt/cdrom
Как видно, единственным отличием от указанных выше способов монтирования файловых систем является использование опции -o loop. Она позволяет использовать файл как блочное устройство (псевдоустройство).
Дополнительной опцией работы с файловыми системами из консоли является возможность создания RAM-диска. Для этого воспользуемся уже знакомой командой mkfs.
Для начала выведем список зарезервированных устройств RAM (виртуальная файловая система, призванная ускорить работу с временными файлами):
ls -l /dev/ram*
В моей системе (Trisquel GNU/Linux 3.0) по умолчанию создано 16 дисков RAM, которые не используются. Отформатируем один из них. Для этого даем команду:
mkfs -t ext3 /dev/ram1 65536
Будет использоваться виртуальное устройство /dev/ram1. Последняя цифра означает, что выделяется 64 Мб из оперативной памяти.
После форматирования необходимо подключить данный виртуальный диск. Для этого сначала создадим точку монтирования, а затем примонтируем RAM-диск:
mkdir -p /mount/ramdisk && mount /dev/ram1 /mount/ramdisk -o defaults,rw
Подробнее о создании RAM-диска можно прочитать в соответствующих источниках [7].
Для настроек файловых систем семейства ext используется утилита tune2fs. Замечу, что ряд операций с использованием данной утилиты стоит осуществлять только на отмонтированном разделе.
Программа tune2fs позволяет делать следующее:
- настройка проверки диска после определенного ряда операций монтирования (например, при загрузке);
- добавление файла журнала и настройка его параметров (можно использовать для перевода ext2 в ext3);
- изменение зарезервированного за суперпользователем дискового пространства;
- получение информации из суперблока;
- изменение метки файловой системы.
Приведем примеры использования tune2fs. Например, необходимо получить информацию из суперблока (как показано на рис. 6).
Рисунок 6. Вывод информации, хранящейся в суперблоке
Для этого командуем:
tune2fs -l /dev/sda1
Кстати, для вывода данных о файловой системе из суперблока можно использовать также следующую команду:
dumpe2fs /dev/sda1
Далее убираем 5-процентное резервирование дискового пространства для суперпользователя, создающееся при форматировании в ext3:
tune2fs -m 0 /dev/sda1
Добавим файл журнала и тем самым превратим ext2 в ext3:
tune2fs -j /dev/sda1
Кстати, доступно три режима журналирования для ext3:
- Writeback – журнал записывается информация об изменении файловой системы (метаданные). Целостность данных не гарантируется.
- Оrdered – похож на предыдущий режим, за исключением того, что гарантируется: «запись данных в файл осуществляется до записи информации об его изменении». Целостность данных также не гарантируется.
- Journal – полное журналирование (метаданные и пользовательские данные). Целостность данных гарантируется при хранении журнала на отдельном разделе/диске [8].
Задать режим журналирования можно либо командой:
mount /dev/sda1 /mnt/sda1 -t ext3 -o [data=writeback / data=ordered / journal]
либо в /ect/fstab.
Дополнительную информацию можно получить в страницах руководств команды mount, в разделе FILESYSTEM SPECIFIC MOUNT OPTIONS.
Для выявления ошибок и по возможности их исправления применяется команда fsck (размещает все обнаруженные поврежденные данные в каталог /lost+found). Эта команда также является своеобразной оболочкой для других утилит. Если вы проделаете те же операции, что и для команды mkfs (при выводе списка утилит – см. выше), заменив mkfs на fsck, то увидите список всех утилит (fsck.ext2, fsck.ext3 и т.д.).
Приведем несколько примеров использования fsck. Укажем, что при проверке необходимо исправлять ошибки автоматически:
fsck -a /dev/sda1
или запрашивать подтверждение на исправление ошибок:
fsck -r /dev/sda1
Добавив опцию -С, мы получим вывод индикатора с процентами выполнения проверки.
Осуществить сканирование всех файловых систем из /etc/fstab за один раз можно так:
fsck -A
С помощью утилиты debugfs из набора e2fsprogs можно осуществлять отладку файловой системы (ext2, ext3 и ext4). Инструмент предоставляет прямой доступ к структурам данных файловой системы (помните, мы говорили выше о файловой модели) и «является интерактивным интерфейсом к библиотеке EXT2fs, то есть транслирует набранные команды в вызовы функций библиотеки» [9].
Утилиту можно использовать для получения статистической информации, восстановления файловой системы, работы с внутренней структурой файловой системы. Список доступных операций можно получить следующим образом:
debugfs /dev/sda1
help
Как показано на рис. 7, по умолчанию debugfs взаимодействует с файловой системой в режиме read-only. Чтобы получить доступ и для записи, необходимо запускать программу с опцией -w.
Рисунок 7. debugfs по умолчанию работает в режиме read-only
В качестве еще одного примера использования debugfs получим вывод статистической информации:
debugfs
stats
В заключение рассмотрим программу Linux Disk Editor, которая является редактором файловых систем (поддерживаются ext2fs, minix и xiafs, а также имеется минимальная поддержка FAT) и позволяет просматривать и редактировать блоки диска в шестнадцатеричном или ASCII-режимах. Программа имеет интерфейс, основанный на ncurses. Первоначально редактор был написан для восстановления удаленных файлов.
В моем дистрибутиве он оказался доступен из репозиториев (размер ~429 Кб).
Для установки надо скомандовать:
apt-get install lde
а после установки для запуска:
lde /dev/sda2
LDE сам попытается определить тип файловой системы. Далее нажимаем любую клавишу и, как показано на рис. 8, увидим отображение суперблока. Если необходимо работать в режиме Inode, то нажимаем клавишу <I>, а если в блочном режиме – клавишу <B>.
Рисунок 8. LDE отображает суперблок
Для навигации в данных режимах используются клавиши <PgUp> и <PgDn>.
Для режима Inode – это переход к следующей/предыдущей inode, а для блочного режима – к следующему/предыдущему экрану. Кроме того, в любом из режимов при нажатии клавиши <F2> выводится меню (пример вывода меню приведен на рис. 9). Оно позволяет переключиться из одного режима в другой. Просмотреть отдельный блок или inode, на которых находится курсор. Переключиться в режим восстановления.
Рисунок 9. LDE в блочном режиме с открытым меню
На этом завершим рассмотрение работы с файловыми системами ext2/ext3 из консоли.
Работаем с разделами
Рассмотрение работы с жестким диском из консоли начнем с создания на нем разделов. Для этого воспользуемся утилитой fdisk. Для запуска программы необходимо указать ей, на каком устройстве мы хотим произвести изменения:
fdisk /dev/sda
Будет выведено приглашение для ввода команд fdisk, а если вы впервые используете эту программу, то обратите внимание, что в приглашении предусмотрительно указано: «m для справки». Воспользуемся этой командой – вывод представлен на рис. 10.
Рисунок 10. Вывод fdisk справки по командам
Отобразить список разделов позволит команда p.
Создадим раздел с использованием fdisk. Для того чтобы создать новый раздел, необходимо дать команду n. Программа предложит выбор – создать расширенный раздел (e extended) или первичный (p primary partition (1-4)). Для создания первичного раздела нажимаем клавишу p. Затем программа предложит выбрать номер первичного раздела: Partition number (1-4). Нажав клавишу, мы создадим раздел с номер один, и т.д. Далее надо будет ввести первый цилиндр, с которого начнется раздел: First cylinder (1-6373, default 1). Значение по умолчанию нас вполне устроит, выберем его. Программа вывела сообщение: Using default value 1 (используется значение по умолчанию 1). Далее необходимо выбрать последний цилиндр раздела или указать его размер в цилиндрах, Кб, Мб или Гб – Last cylinder, or +cylinders or +size{K,M,G} (1-6373, default 6373):. Используем значение по умолчанию. Все, новый раздел создан.
Теперь о том, как изменить тип файловой системы на вновь созданном разделе. Для этого даем fdisk команду t. Если на жестком диске несколько разделов, то программа предложит выбрать номер раздела, а если один, то он будет выбран автоматически. Кроме того, будет выведено сообщение: Hex code (type L list codes). На этом шаге необходимо либо ввести код файловой системы, либо нажать клавишу <L> для просмотра списка кодов. Определитесь с кодом и введите его.
Процедура удаления того или иного раздела аналогична процедуре создания, за исключением того, что используется команда d и не требуется указывать первый цилиндр, последний цилиндр (достаточно указать номер раздела).
Для проверки таблицы разделов используется команда v. Для занесения изменений в последнюю надо дать команду w, которая осуществит выход с записью изменений. Если надо выйти из программы без их записи – q.
Бывают ситуации, когда необходимо произвести переназначение раздела подкачки (например, приобретен новый жесткий диск, на котором теперь и будет размещен раздел подкачки). Создать swap-раздел можно будет и в fdisk (код 82), а вот подключить – нет. Для этого сначала преобразуем требуемый раздел в раздел подкачки:
fsck -r /dev/sda1
Добавление опции -с позволит произвести проверку раздела на наличие поврежденных блоков (бэд-блоков). Кстати, проверку разделов жесткого диска на наличие бэд-блоков можно осуществлять с использованием утилиты badblocks:
badblocks /dev/sda1
Итак, раздел подкачки создан. Теперь подключим его:
swapon /dev/sda5
Кроме того, с помощью swapon можно вывести информацию обо всех используемых swap-устройствах (кстати, в вывод попадет и устройство подкачки для RAM-диска, который мы создали ранее – /dev/ramzswap0).
Если надо, чтобы раздел подкачки использовался при перезагрузке автоматически, добавьте в файл /etc/fstab (содержит описания устройств, которые автоматически монтируются при загрузке) следующее:
/dev/sda5 none swap sw 0 0
Для отключения раздела подкачки даем команду:
swapoff /dev/sda5
Используя опцию -a, мы отключим все swap-устройства.
Для получения информации об использовании жесткого диска применяется команда du. Если скомандовать ее без параметров, то начнется вывод в «столбик» всех файлов и их размеров из домашнего каталога. Это не очень удобно, разве что перенаправить вывод в какой-либо файл:
du > inf_hd.txt
Команда du обладает опциями, которые могут значительно облегчить жизнь администратора. Для начала осуществим вывод в формате human-readable:
du -h
Размер файлов стал отображаться в Кб, Мб и Гб. Далее делаем вывод только размера каталога (напомню, по умолчанию действия совершаются над домашним каталогом):
du -h -- summarize
Теперь используем du для получения информации о произвольном каталоге, например /var:
du -h /var
Далее получаем информацию только о его размере:
du -h -- summarize /var
Добавив опцию – time в последнюю введенную нами команду, мы получим вывод с временем последней модификации. В общем, du предоставляет широкие возможности для получения информации об использовании жесткого диска.
Работать с параметрами жесткого диска (SATA/ATA) удобно с программой hdparm. Она позволяет:
- устанавливать объем резервируемых данных при операциях чтения записи:
hdparm -a 1024 /dev/sda
- осуществлять вывод геометрии жесткого диска:
hdparm -g /dev/sda
- выводить идентификационные параметры жесткого диска:
hdparm -i /dev/sda
- выводить информацию о температуре жесткого диска:
hdparm -H /dev/sda
- производить тестирование производительности:
# Тайминги чтения с устройства и кэша устройства
hdparm -Tt /dev/sda
И многое другое. Для вывода всех возможностей дайте команду hdparm без параметров.
- http://www.t13.org/Documents/UploadedDocuments/project/d0791r4c-ATA-1.pdf.
- http://www.intel.com/technology/efi; http://www.uefi.org/home.
- Лав Р. Разработка ядра Linux, 2-е издание. М. : ООО «И.Д. Вильямс», 2006. С. 266.
- Супер-Тед//LinuxFormat, 11, 2009. С. 26-27.
- Мешков В. Архитектура файловой системы ext2. //Ситемный администратор, №11, 2003 г. – С. 26-32 (http://samag.ru/archive/article/203).
- http://www.gnu.org/software/coreutils/manual/coreutils.html#Disk-usage.
- http://wiki.linuxformat.ru/index.php/LXF98: Спецрепортаж; http://www.vanemery.com/Linux/Ramdisk/ramdisk.html.
- http://www.ibm.com/developerworks/linux/library/l-fs8.html.
- http://lib.ru/LINUXGUIDE/user_guide_lars.txt_Piece40.05.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|