English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Управление дисками Linux

Качество управления дисками в Linux напрямую влияет на производительность системы

Три часто используемых команды управления дисками в Linux: df, du и fdisk

  • df: перечисляет общее использование дискового пространства файловой системы

  • du: проверяет использование дискового пространства

  • fdisk: используется для разделения дисков

df

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

Синтаксис:

df [-ahikHTm] [каталог или имя файла]

Опции и параметры:

  • -a :отображать все файловые системы, включая системные, такие как /proc и т.д.

  • -k :отображать емкость всех файловых систем в KBytes

  • -m :отображать емкость всех файловых систем в MBytes

  • -h :отображать в более удобном для чтения формате GBytes, MBytes, KBytes и т.д.

  • -H :использовать M=1000K вместо M=1024K для позиционного разбиения

  • -T :отображать тип файловой системы, включая имя filesystem partitions (например, ext3)

  • -i :не использовать емкость диска, а отображать количество inodes

Пример 1

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

[root@www ~]# df
Файловая система  1K-блока  Использовано Доступно Использование% Подключено на
/dev/hdc2          9920624  3823112  5585444  41% /
/dev/hdc3          4956316  141376  4559108  4% /home
/dev/hdc1           101086  11126   0  84741  12% /boot
tmpfs              371332    0   371332  0% /dev/shm

Под Linux, если df не указан ни один параметр, по умолчанию будет отображаться вся (без файловых систем в специальных областях памяти и swap) все перечисляются по емкости 1 Kbytes!

Пример 2

Отображать результаты емкости в удобном для чтения формате емкости

[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3              4.8G  139M  4.4G  4% /home
/dev/hdc1              99M  11M  83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm

Пример 3

Список всех специальных форматов файлов и их имен в системе

[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs

Пример 4

Отображение доступного дискового пространства под /etc в удобном для чтения формате

[root@www ~]# df -h /etc
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /

du

Команда Linux du также используется для просмотра занимаемого места, но в отличие от команды df, команда Linux du используется для просмотра места, занимаемого файлами и каталогами, и у нее есть некоторые отличия от команды df, поэтому здесь介绍 команду Linux du.

Синтаксис:

du [-ahskm] имя_файла_или_каталога

Опции и параметры:

  • -a  :Перечислить объем всех файлов и каталогов, так как по умолчанию учитывается только объем файлов в каталогах.

  • -h  :Выводить объем в более удобном для чтения формате (G/M);

  • -s  :Перечислить только общее количество, не перечисляя занимаемое место каждого отдельного каталога;

  • -S  :Не включать общее количество в подкаталогах, имеет некоторые отличия от -s.

  • -k  :Выводить объем в KBytes;

  • -m  :Выводить объем в MBytes;

Пример 1

Перечислить объем всех каталогов в текущем каталоге (включая скрытые каталоги):

[root@www ~]# du
8       ./test4     <== Выводится каждый каталог
8       ./test2
....Пропущены中间ние разделы....
12      ./.gconfd   <== Включая каталоги с скрытыми файлами
220     .           <== Общий объем, занимаемый этим каталогом (.)

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

Пример 2

Перечислить размер файлов

[root@www ~]# du -a
12      ./install.log.syslog   <== Теперь есть список файлов
8       ./.bash_logout
8       ./test4
8       ./test2
....Пропущены中间ние разделы....
12      ./.gconfd
220     .

Пример 3

Проверка занимаемого места каждым каталогом в корневом каталоге

[root@www ~]# du -sm /*
7       /bin
6       /boot
.....Пропущены中间ние разделы....
0       /proc
.....Пропущены中间ние разделы....
1       /tmp
3859    /usr     <== Самый большой размер системы на начальном этапе именно он!
77      /var

Символы подстановки * для представления каждого каталога.

В отличие от df, команда du на самом деле напрямую搜寻文件系统 для всех файлов.

fdisk

fdisk — это инструмент для работы с таблицей разделов дисков в Linux.

Синтаксис:

fdisk [-l] имя_устройства

Опции и параметры:

  • -l  :Вывод всех разделов устройства, которое следует за ним. Если используется только fdisk -l,      Тогда система будет перечислять все разделы устройств, которые она может найти.

Пример 1

Вывод всех информации о разделах

[root@AY120919111755c246621 tmp]# fdisk -l
Диск /dev/xvda: 21.5 ГБ, 21474836480 байт
255 головок, 63 сектора/трек, 2610 цилиндров
Единицы = цилиндры 16065 * 512 = 8225280 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0x00000000
    Device Boot  Start  End  Blocks  Id  System
/dev/xvda1               *                 1                  2550             20480000 83 Linux
/dev/xvda2                2550               2611                490496         82 Linux swap / Solaris
Диск /dev/xvdb: 21.5 ГБ, 21474836480 байт
255 головок, 63 сектора/трек, 2610 цилиндров
Единицы = цилиндры 16065 * 512 = 8225280 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0x56f40944
    Device Boot  Start  End  Blocks  Id  System
/dev/xvdb2                1                 2610                20964793+       83 Linux

Пример 2

Найдите диск, на котором находится корневая директория вашей системы, и изучите相关信息 на этом диске

[root@www ~]# df /               <== Обратите внимание: важно найти имя диска
Файловая система           1K-блока      Использовано Доступно Исп% Монтировано на
/dev/hdc2                9920624            3823168            5585388        41%
[root@www ~]# fdisk /dev/hdc       <== Обратите внимание, не добавляйте цифры!
Число цилиндров для этого диска установлено в 5005
В этом ничего плохого нет, но это больше, чем 1024
и может вызывать проблемы в некоторых конфигурациях с:
1) программное обеспечение, которое запускается при загрузке системы (например, старые версии LILO)
2) Программное обеспечение для загрузки и разделения диска из других ОС
   (например, DOS FDISK, OS/2 FDISK)
Команда действия (m для справки): <== Ждем вашего ввода!

Введите m, и вы увидите описание этих команд

Команда действия (m для справки): m <== Введите m, и вы увидите описание этих команд
Команда действия
   a <== Переключить флаг загрузки
   b <== Редактировать таблицу диска BSD
   c <== Переключить флаг совместимости DOS
   d <== Удалить раздел <== Удалить раздел
   l <== Список известных типов разделов
   m <== Вывести это меню
   n <== Добавить новый раздел <== Добавить новый раздел
   o <== Создать новую пустую таблицу разделов DOS
   p <== Вывести таблицу разделов <== Отобразить таблицу разделов на экране
   q <== Выход без сохранения изменений <== Выход из программы fdisk без сохранения изменений
   s <== Создать новую пустую таблицу Sun disklabel
   t <== Изменить системный идентификатор раздела
   u <== Изменить единицы отображения/ввода
   v <== Проверить таблицу разделов
   w <== Записать таблицу разделов на диск и выйти <== Записать последние действия в таблицу разделов
   x <== Дополнительные функции (только для специалистов)

При выходе из fdisk нажмите q, и все действия не будут применены! Напротив, нажатие w означает, что действия будут применены.

Команда (m для справки): p <== Здесь можно вывести текущее состояние диска
Диск /dev/hdc: 41.1 ГБ, 41174138880 байт <== Название файла и размер этого диска
255 heads, 63 sectors/track, 5005 cylinders <==Размер магнитных головок, секторов и цилиндров
Units = cylinders of 16065 * 512 = 8225280 bytes <==Размер каждого цилиндра
   Device Boot  Start  End  Blocks  Id  System
/dev/hdc1 *  1  13  104391  83  Linux
/dev/hdc2  14  1288  10241437+  83  Linux
/dev/hdc3  1289  1925  5116702+  83  Linux
/dev/hdc4  1926  5005  24740100  5  Extended
/dev/hdc5  1926  2052  1020096  82  Linux swap / Solaris
# имя устройства загрузочный сектор начальный цилиндр окончательный цилиндр размер 1K система в слоте раздела диска
Command (m for help): q

Хотите выйти без сохранения? Нажмите q! Не нажимайте w случайно!

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

Форматирование диска

После завершения разделения диска следующим шагом является форматирование файловой системы, команда для форматирования очень проста, используется команда mkfs (make filesystem).

Синтаксис:

mkfs [-t формат файловой системы] имя устройства

Опции и параметры:

  • -t  :можно указать формат файловой системы, например ext3, ext2, vfat и т.д. (действителен только если система поддерживает)

Пример 1

Просмотрите支持的 файловые форматы mkfs

[root@www ~]# mkfs[tab][tab]
mkfs  mkfs.cramfs  mkfs.ext2  mkfs.ext3  mkfs.msdos  mkfs.vfat

Нажмите две [tab], и вы увидите支持的 mkfs файловые форматы, как показано выше.

Пример 2

Форматируйте раздел /dev/hdc6 (можно указать свой раздел) в файловую систему ext3:

[root@www ~]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Метка файловой системы= <== это имя раздела (label)
Тип ОС: Linux
Размер блока=4096 (log=2) <== размер блока настроен на 4K 
Размер фрагмента=4096 (log=2)
251392 инода, 502023 блока <== количество инодов/block определяемое конфигурацией
25101 блоков (5.00%) зарезервировано для суперпользователя
Первый блок данных=0
Максимальное количество блоков файловой системы=515899392
16 групп блоков
32768 блоков на группу, 32768 фрагментов на группу
15712 инодов на группу
Резервные копии суперблока хранятся на блоках:
        32768, 98304, 163840, 229376, 294912
Запись таблицы инodów: завершено
Создание журнала (8192 блоков): завершено <== есть журнальная запись
Запись суперблоков и информации о файловой системе: завершено
Эта файловая система будет автоматически проверяться каждые 34 монтирования или
180 дней, whichever comes first. Используйте tune2fs -c или -i для отмены.
Вот и создан所需要的 Ext3 файловая система! Проще не бывает!

Проверка диска

fsck (file system check) используется для проверки и обслуживания несоответствующих файловых систем.

Если система失去了电力或磁盘出现问题,可以利用fsck命令检查文件系统。

Синтаксис:

fsck [-t файловая система] [-ACay] имя устройства

Опции и параметры:

  • -t: Указывает тип файловой системы, если он уже определен в /etc/fstab или поддерживается ядром, то этот параметр не требуется

  • -s: По порядку выполняет команды fsck для проверки

  • -A: Проверяет все разделы, перечисленные в /etc/fstab

  • -C: Отображает полный процесс проверки

  • -d: Выводит результаты отладки e2fsck

  • -p: При наличии условия -A выполняется вместе с несколькими проверками fsck

  • -R: При наличии условия -A пропускается / не проверяется

  • -V: Режим подробного отображения

  • -a: Если при проверке обнаружены ошибки, они автоматически исправляются

  • -r: Если при проверке обнаружены ошибки, пользователь отвечает на вопрос о修复е

  • -y: Опция указывает на автоматическое ввод yes для проверки каждого файла, и при неопределенности можно выполнить # fsck -y для проверки и исправления всех.

Пример 1

Просмотрите, сколько файловых систем поддерживает команду fsck:

[root@www ~]# fsck[tab][tab]
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat

Пример 2

Принудительная проверка раздела /dev/hdc6:

[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 
fsck 1.39 (29 мая 2006 года)
e2fsck 1.39 (29 мая 2006 года)
Пас 1: Проверка инodów, блоков и размеров
Пас 2: Проверка структуры каталога
Пас 3: Проверка связи каталогов
Пас 4: Проверка счетчиков ссылок
Пас 5: Проверка групповой информации
vbird_logical: 11/251968 файлов (9.1% неконтiguous), 36926/1004046 блоков

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

Монтирование и демонтаж дисков

Монтирование дисков в Linux выполняется с помощью команды mount, а снятие — с помощью команды umount.

Синтаксис команды монтирования диска:

mount [-t файловая система] [-L имя метки] [-o дополнительные параметры] [-n]  имя устройства  точка монтирования

Пример 1

По умолчанию, новый созданный /dev/hdc6 будет смонтирован на /mnt/hdc6!

[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Файловая система           1K-блока      Использовано Доступно Исп% Монтировано на
.....Пропущено.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

Синтаксис команды卸载 диска umount:

umount [-fn] имя устройства или точки монтирования

Опции и параметры:

  • -f: принудительное удаление! Используется в случае, когда не удается читать из подобной файловой системы (NFS);

  • -n: Не обновлять /etc/mtab при удалении.

Снятие /dev/hdc6

[root@www ~]# umount /dev/hdc6