Maintain the integrity of filesystems (weight: 2)

Candidates should be able to maintain a standard filesystem, as well as the extra data associated
with a journaling filesystem. Verify the integrity of filesystems. Monitor free space and inodes.
Repair simple filesystem problems.

The following is a partial list of the used files, terms and utilities

du
df
fsck
e2fsck
debugfs
dumpe2fs
tune2fs
xfs tools (such as xfs_metadump and xfs_info)

Контроль свободного пространства
df (аббревиатура от disk free) — утилита в UNIX и UNIX-подобных системах, показывает список всех файловых систем по именам устройств, сообщает их размер, занятое и свободное пространство и точки монтирования.

Если добавить опцию -T, к выводу будет добавлен тип файловой системы

# df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    73744616  23393676  46604892  34% /
none      devtmpfs     1986948       288   1986660   1% /dev
none         tmpfs     1995208      5560   1989648   1% /dev/shm
none         tmpfs     1995208       116   1995092 n  1% /var/ru
none         tmpfs     1995208         0   1995208   0% /var/lock
none       debugfs    73744616  23393676  46604892  34% /var/lib/ureadahead/debugfs
:/share        nfs   960681376 918378880  42302496  96% /home/bezha/popcorn

Записи tmpfs относятся к файловым системам в виртуальной памяти. Они существуют только в оперативной памяти или пространстве подкачки и создаются в момент монтирования без использования команды mkfs.

Ключ -h или –human-readable отобразит размер в человеко-читабельном формате (1K для 1024)

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              71G   23G   45G  34% /
none                  1.9G  288K  1.9G   1% /dev
none                  2.0G  5.5M  1.9G   1% /dev/shm
none                  2.0G  116K  2.0G   1% /var/run
none                  2.0G     0  2.0G   0% /var/lock
none                   71G   23G   45G  34% /var/lib/ureadahead/debugfs
:/share              917G  876G   41G  96% /home/bezha/popcorn

Ключ -H, –si так же отобразит размер в человеко-читабельном формате, но (1K для 1000)

# df --si
Filesystem             Size   Used  Avail Use% Mounted on
/dev/sda1               76G    24G    48G  34% /
none                   2.1G   295k   2.1G   1% /dev
none                   2.1G   5.7M   2.1G   1% /dev/shm
none                   2.1G   119k   2.1G   1% /var/run
none                   2.1G      0   2.1G   0% /var/lock
none                    76G    24G    48G  34% /var/lib/ureadahead/debugfs
192.168.0.111:/share   984G   941G    44G  96% /home/bezha/popcorn
/dev/sdb7               11G   8.2k    11G   1% /mnt

Если необходимо вывести данные об использовании inode, применяется команда df c опцией -i
Можно исключить вывод данных по определенной файловой системе, используя опцию -x

df -iT -x nfs
Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1     ext4   4685824  175222 4510602    4% /
none      devtmpfs    206304     885  205419    1% /dev
none         tmpfs    210435       4  210431    1% /dev/shm
none         tmpfs    210435      58  210377    1% /var/run
none         tmpfs    210435       1  210434    1% /var/lock
none       debugfs   4685824  175222 4510602    4% /var/lib/ureadahead/debugfs
/dev/sdb7     vfat         0       0       0    -  /mnt

Ограничить информацию определенными типами файловых систем, использую опцию -t

# df -iT -t ext4 -t vfat
Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1     ext4   4685824  175223 4510601    4% /
/dev/sdb7     vfat         0       0       0    -  /mnt

Утилиту df можно использовать для получения информации о том, к какой файловой системе относится какой-либо каталог или файл

# df -k House.M.D.s04e06.rus.LostFilm.TV.avi
Filesystem           1K-blocks      Used Available Use% Mounted on
192.168.0.111:/share 960681376 918378880  42302496  96% /home/bezha/popcorn

или

# df -m House.S05E12.Painless.Proper.720p.HDTV.x264.Rus.mkv
Filesystem           1M-blocks      Used Available Use% Mounted on
192.168.0.111:/share    938166    896855     41312  96% /home/bezha/popcorn

Команда df выводит информацию только о файловой системе в целом. Иногда необходимо узнать, сколько места занимает каталог home, или какой размер раздела потребуется, чтобы разместить каталог /usr в отдельной файловой системе. Для решения этих задач используется команда du.

du (аббревиатура от англ. disk usage) — стандартная Unix программа для оценки занимаемого файлового пространства.

Команда du выводит информацию о файле (файлах), имена которых заданы в качестве параметров. Если задано имя каталога, то du определяет размер всех файлов и подкаталогов этого каталога на всех уровнях вложения. Результат работы команды может быть очень объемным.

# du  /boot/
184     /boot/boot/grub
188     /boot/boot
420     /boot/grub/locale
2204    /boot/grub
25524   /boot/

Для вывода сводной информации по каталогу ключ -s

# du -s /boot
25524   /boot/

Для вывода суммарных данных ключ -с

# du -sc /boot/
25524   /boot/
25524   total

Human-readable аналогично как и у утилиты df

# du -ch /boot/
184K    /boot/boot/grub
188K    /boot/boot
420K    /boot/grub/locale
2.2M    /boot/grub
25M     /boot/
25M     total

Для использования du вы должны иметь права чтения каталогов, к которым вы ее применяете. Чтобы с гарантией иметь соответствующие права доступа, используйте полномочия root.

# du -csh /usr/*
94M     /usr/bin
36K     /usr/games
14M     /usr/include
1.2G    /usr/lib
148K    /usr/local
12M     /usr/sbin
1.1G    /usr/share
86M     /usr/src
2.5G    total

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

Иногда в системе может произойти сбой или отключиться питание. В этих случаях Linux не может аккуратно размонтировать файловые системы, и они могут оказаться в несогласованном состоянии.Основной инструмент для проверки файловых систем – команда fsck, которая, аналогично mkfs, является интерфейсом доступа к командам проверки различных типов файловых систем.

ls -la /sbin/*fsck*
-rwxr-xr-x 1 root root 124496 Jun 21  2010 /sbin/btrfsck
-rwxr-xr-x 1 root root  50732 May  9  2010 /sbin/dosfsck
-rwxr-xr-x 1 root root 176768 Aug 18 19:01 /sbin/e2fsck
-rwxr-xr-x 1 root root  26352 Dec 10 15:52 /sbin/fsck
-rwxr-xr-x 1 root root  13748 Dec 10 15:52 /sbin/fsck.cramfs
-rwxr-xr-x 1 root root 176768 Aug 18 19:01 /sbin/fsck.ext2
-rwxr-xr-x 1 root root 176768 Aug 18 19:01 /sbin/fsck.ext3
-rwxr-xr-x 1 root root 176768 Aug 18 19:01 /sbin/fsck.ext4
-rwxr-xr-x 1 root root 176768 Aug 18 19:01 /sbin/fsck.ext4dev
-rwxr-xr-x 1 root root 399216 Dec  8  2009 /sbin/fsck.jfs
-rwxr-xr-x 1 root root  26072 Dec 10 15:52 /sbin/fsck.minix
lrwxrwxrwx 1 root root      7 Jan 12 13:57 /sbin/fsck.msdos -> dosfsck
-rwxr-xr-x 1 root root    333 Nov  1 18:36 /sbin/fsck.nfs
-rwxr-xr-x 1 root root    282 Mar  7  2010 /sbin/fsck.reiserfs
lrwxrwxrwx 1 root root      7 Jan 12 13:57 /sbin/fsck.vfat -> dosfsck
-rwxr-xr-x 1 root root    450 May 31  2010 /sbin/fsck.xfs
-rwxr-xr-x 1 root root 399216 Dec  8  2009 /sbin/jfs_fsck
-rwxr-xr-x 1 root root 200396 Dec  8  2009 /sbin/jfs_fscklog
-rwxr-xr-x 1 root root 309588 Mar  7  2010 /sbin/reiserfsck

Посмотреть какие системы какой командой будут проверяться

# fsck -N /dev/sda7 /dev/sdb[89]
fsck from util-linux-ng 2.17.2
[/sbin/fsck.ext2 (1) -- /dev/sda7] fsck.ext2 /dev/sda7
[/sbin/fsck.reiserfs (2) -- /dev/sdb8] fsck.reiserfs /dev/sdb8
[/sbin/fsck.xfs (3) -- /dev/sdb9] fsck.xfs /dev/sdb9

Процесс загрузки системы с помощью команды fsck проверяет корневую файловую систему и другие файловые системы, указанные в управляющем файле /etc/fstab. Если файловая система не была размонтирована корректно, проводится проверка целостности системы. Это определяется значением поля pass (или passno) (шестое поле записи /etc/fstab). Файловые системы со значением pass, установленным в ноль, не тестируются во время загрузки. Корневая файловая система имеет значение pass, равное 1, и тестируется первой. Другие файловые системы обычно имеют значение pass от двух и выше, которое указывает, в каком порядке их надо проверять. Несколько операций fsck могут выполняться параллельно, поэтому различные файловые системы могут иметь одинаковые значения pass.

# file system    mount point     type  options       dump  pass
proc            /proc           proc    defaults        0       0
/dev/hda6       /               reiserfs defaults       0       1
/dev/hda2       /boot           ext3    defaults        0       2
/dev/hda8       /dos            vfat    defaults        0       0
/dev/hda7       /home           xfs     defaults        0       2

Некоторые журналируемые файловые системы, такие как ReiserFS и xfs, могут иметь значение pass, установленное в 0, поскольку проверку и восстановление файловой системы производит программа журналирования, а не fsck.

Наиболее востребованные опции у fsck
-A – проверить все системы которые отмечены в /etc/fstab как проверяемые
-C – прогресс-бар
-N – посмотреть как будет идти проверка но не выполнять ее
-V – verbose просмотр
-a(p) – провести автоматическую проверку
-r – провести интерактивную проверку
-f – провести полную проверку системы, даже если она отмечена как чистая

Можно проверять следующими способами

# fsck /dev/sdb1
# fsck.ext3 LABEL=sdb1
# e2fsck UUID=d7f75420-0122-4fd5-b1d7-1df574591e20

Если вы попробуете проверить примонтированную файловую систему, вы увидите предупреждение

# fsck /dev/sda1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.

WARNING!!!  The filesystem is mounted.   If you continue you ***WILL***
cause ***SEVERE*** filesystem damage.

Do you really want to continue (y/n)? no

check aborted.

Проверку необходимо выполнять на размонтированном разделе или в single режиме.

Проверка XFS с помощью fsck

# fsck /dev/sdb9
fsck from util-linux-ng 2.17.2
If you wish to check the consistency of an XFS filesystem or
repair a damaged filesystem, see xfs_check(8) and xfs_repair(8).
# xfs_check /dev/sdb9
e2fsck check a Linux ext2/ext3/ext4 file system

dumpe2fs Выводит информацию о дескрипторах суперблоков и групп блоков в файловых системах ext2/ext3/ext4

# dumpe2fs -h /dev/sdb1
Filesystem created:       Wed Jan 19 14:48:19 2011
Last mount time:          n/a
Last write time:          Thu Jan 20 17:29:02 2011
Mount count:              0
Maximum mount count:      31
Last checked:             Thu Jan 20 17:29:02 2011
Check interval:           15552000 (6 months)
Next check after:         Tue Jul 19 18:29:02 2011

Для файловой системы xfs необходимо использовать команду

# xfs_info /dev/sdb9
meta-data=/dev/sdb9              isize=256    agcount=4, agsize=66266 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=265064, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Вместо /dev/sdb9 можно использовать и mount point

xfs_info /mnt/
meta-data=/dev/sdb9              isize=256    agcount=4, agsize=66266 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=265064, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

xfs_growfs Расширяет файловую систему XFS (если имеется дополнительный раздел).
xfs_admin Изменяет параметры файловой системы XFS.
xfs_repair Восстанавливает файловую систему XFS, когда проверок при монтировании установке недостаточно для восстановления системы.
xfs_db Проверяет или отлаживает файловую систему XFS.

tune2fs — можно настраивать параметры уже существующих фаловых систем типа ext2 и ext3.
–l Позволяет получить информацию, хранящуюся в суперблоке

# tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          5d9f05a8-b17e-43da-828a-de45cad837a6
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              50288
Block count:              200804
Reserved block count:     10040
Free blocks:              193336
Free inodes:              50277
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      49
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7184
Inode blocks per group:   449
Filesystem created:       Wed Jan 19 14:48:19 2011
Last mount time:          n/a
Last write time:          Thu Jan 20 17:29:02 2011
Mount count:              0
Maximum mount count:      31
Last checked:             Thu Jan 20 17:29:02 2011
Check interval:           15552000 (6 months)
Next check after:         Tue Jul 19 18:29:02 2011
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      b48dae43-52f4-4ce7-8560-d29d915a03ed
Journal backup:           inode blocks

–j Добавляет файл журнала. При помощи этого параметра можно превратить файловую систему ext2 в ext3. Иногда, при повреждении файловой системы ext3, программа проверки удаляет файл журнала. Tune2s позволяет создать файл по новой.

-m Позволяет изменить процент дискового пространства резервируемого за суперпользователем

–L Позволяет изменить метку файловой системы

# tune2fs -L sdb1 /dev/sdb1
sudo tune2fs -L sdb1 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)

Проверяем

# blkid /dev/sdb1
/dev/sdb1: LABEL="sdb1" UUID="5d9f05a8-b17e-43da-828a-de45cad837a6" SEC_TYPE="ext2" TYPE="ext3

debugfs — Команда для интерактивной отладки файловой системы ext2/ext3/ext4

Вопросы LPI-I ( приблизительные )

1) Which of the following options is used with fsck to force it to use a particular
filesystem type?
A. -A
B. -N
C. -t
D. -C
2) Which of the following pieces of information can df not report?
A. How long the filesystem has been mounted
B. The number of inodes used on an ext3fs partition
C. The filesystem type of a partition
D. The percentage of available disk space used on a partition
3) What is an advantage of a journaling filesystem over a conventional (non-journaling) filesystem?
A. Journaling filesystems are older and better tested than non-journaling filesystems.
B. Journaling filesystems never need to have their filesystems checked with fsck.
C. Journaling filesystems support Linux ownership and permissions; non-journaling filesystems don’t.
D. Journaling filesystems require shorter disk checks after a power failure or system crash.

Ответы:

1) The correct answer is C.
The –t option is used to tell fsck what filesystem to use. Normally, fsck determines the filesystem
type automatically.
The –A option causes fsck to check all the filesystems marked to be checked in /etc/fstab.
The –N option tells fsck to take no action and to display what it would normally do without doing it.
The –C option displays a text-mode progress indicator of the check process.
2) The correct answer is A.
This utility does not report how long a filesystem has been mounted.
3) The correct answer is D. The journal of a journaling filesystem records pending operations,
resulting in quicker disk checks after an uncontrolled shutdown.

Читать:
Maintain the integrity of filesystems
Целостность файловых систем