Настольная книга по Linux/Файловые системы
Данный раздел посвящен командам, взаимодействующим с отдельными файловыми системами (ФС), а равно с файловой системой в целом — совокупностью всех достижимых от текущего корня отдельных ФС.[1]
В первой части раздела рассматриваются команды, независящие от конкретного типа файловой системы. Затем рассмотрены примеры команд для ФС различных типов — начиная с ФС распространенного семейства Ext2+ и заканчивая специализированными «архивными» ФС — ISO 9660 и Squashfs.
Примеры по работе с отдельными файлами можно найти в разделе Файлы; по работе с блочными устройствами (на которых, как правило, и создаются файловые системы) — в разделе Блочные устройства.
Непривилегированные операции
правитьСписок подключенных в данный момент файловых систем (устройство, точка подключения, тип, опции):[2]
$ mount $ cat < /etc/mtab $ cat < /proc/mounts
Список доступных (поддерживаемых ядром) типов файловых систем:[2]
$ cat < /proc/filesystems
Занятое и свободное пространство для подключенных в данный момент ФС:[3][4]
$ df
… Для файловых систем, содержащих файлы file1, file2:
$ df -- file1 file2
… Для файловых систем типов ext2 и ext3[3]:
$ df -t ext2 -t ext3
… Для файловых систем, доступных для записи:
$ gawk '$4 ~ /\<rw\>/ { printf("%s\0", $2); }' < /proc/mounts \ | xargs -r0 -- df --
Поиск процессов, использующих файловую систему, подключенную к dirname:[5]
$ fuser -c dirname
… Поиск и принудительное (безусловное —
SIGKILL
) завершение найденных процессов:$ fuser -ck dirname
… Поиск и отправка сигнала завершения (
SIGTERM
= 15):$ fuser -ck -TERM dirname $ fuser -ck -15 dirname
Обратите внимание, что команда fuser(1) опирается на список открытых каждым процессом файлов (
/proc/pid/fd/
[2]). Поскольку непривилегированным пользователям такого рода информация доступна только в отношении собственных процессов, результирующий список будет полным только при выполнении команды от имениroot
. Принудительное завершение и отправка сигналов процессам, кроме выполняемых от имени того же пользователя, также потребует привилегий.
Подключение и отключение
правитьПодключение файловой системы, находящейся на блочном устройстве /dev/name к директории dirname:
# mount -- /dev/name dirname
… Находящейся в файле («образе») filename.iso:
# mount -o loop -- filename.iso dirname
… Только для чтения; файлы устройств и действие битов set-UID, set-GID будут блокированы:
# mount -o loop,ro,nodev,nosuid -- filename.iso dirname
Подключение всех файловых систем, описанных в fstab(5) (кроме отмеченных
noauto
в поле опций; команда полезна, например, после добавления новых записей):# mount -a
… Только ФС типа ext2:
# mount -a -t ext2
… Только ФС, использующих опцию ro (другими словами — подключаемых в режиме «только чтение»):
# mount -a -O ro
Подключение файловой системы к директории dirname согласно настройкам fstab(5):
# mount -- dirname
… Файловой системы, размещенной на устройстве /dev/name:
# mount -- /dev/name
… Файловой системы с меткой label:
# mount -L label # mount -- /dev/disk/by-label/label
… Файловой системы с идентификатором uuid:
# mount -U uuid # mount -- /dev/disk/by-uuid/uuid
Переподключение файловой системы от директории dirname к директории newname:
# mount --move -- dirname newname
Переподключение файловых систем — размещенной на блочном устройстве /dev/name, хранящейся в файле («образе») file1, и подключенной к директории dirname — в режим «только чтение»:
# mount -o remount,ro -- /dev/name # mount -o remount,ro -- file1 # mount -o remount,ro -- dirname
… В режим «чтение и запись»:
# mount -o remount,rw -- /dev/name # mount -o remount,rw -- file1 # mount -o remount,rw -- dirname
… Изменение размера «файловой системы» tmpfs, подключенной к /tmp, до 3 GiB:
# mount -o remount,size=3G -- /tmp
Отключение файловых систем — размещенных на блочных устройствах /dev/name1, /dev/name1, хранящихся в файлах («образах») file1, file2, и подключенных к директориям dir1, dir2:
# umount -- /dev/name1 /dev/name1 file1 file2 dir1 dir2
… «Отложенное» отключение ФС /dev/name — точка подключения будет освобождена немедленно, однако фактическое отключение будет выполнено лишь когда не останется использующих ФС процессов:
# umount -l -- /dev/name
Подключение директории dirname к директории newname:
# mount --bind -- dirname newname
… Полной иерархии директорий dirname — включая все ФС, подключенные «ниже» dirname:
# mount --rbind -- dirname newname
Ext2, Ext3, Ext4
правитьНиже мы будем предполагать, что файловая система семейства Ext2+ размещена на некотором блочном устройстве (/dev/name) — поскольку можно поспорить, что именно такое использование рассматриваемых команд является типовым. Несложно убедиться, однако, что эти команды работают как правило и в тех случаях, когда целевая файловая система хранится в обычном файле («образе» filename.ext2.)
При работе с файлами-образами, привилегии root
не являются строго необходимыми, однако в отсутствие директорий /sbin
, /usr/sbin
в значении переменной окружения PATH, может потребоваться указывать полное имя исполнимого файла команды, подобно:
$ /sbin/tune2fs -l -- filename.ext2
Создание файловой системы Ext4 на блочном устройстве /dev/name:
# mke2fs -t ext4 -- /dev/name
… Образа filename.ext4 объемом 1 MiB:
$ mke2fs -t ext4 -- filename.ext4 1M
… Ext3:
# mke2fs -j -- /dev/name
… Ext2:
# mke2fs -- /dev/name
Создание файловой системы Ext4 на /dev/vgroup/lvolume с возможностью увеличения размера resize2fs(8) до 64 GiB без необходимости отключения:
# mke2fs -t ext4 -E resize=64G -- /dev/vgroup/lvolume
Увеличение размера логического тома LVM /dev/vgroup/lvolume до 42 GiB и увеличение собственного размера размещенной на нем файловой системы:
# lvextend -L 42G -- /dev/vgroup/lvolume \ && resize2fs -- /dev/vgroup/lvolume
Обратите внимание, что при использовании опции
-E resize=
на этапе создания, увеличение размера файловой системы вплоть до заданного предела не требует предварительного ее отключения.… Отключение ФС и уменьшение ее собственного размера до 24 GiB — с последующим уменьшением размера хранящего ее логического тома (осторожно! при неаккуратном использовании, уменьшение размера логического тома может привести к потере данных!):
# umount -- /dev/vgroup/lvolume # resize2fs -- /dev/vgroup/lvolume 24G \ && lvreduce -L 24G -- /dev/vgroup/lvolume
Вывести текущие параметры файловой системы /dev/name (содержание superblock):
# tune2fs -l -- /dev/name
Смена метки для файловой системы /dev/name на newlabel:
# tune2fs -L newlabel -- /dev/name
… Перегенерация уникального идентификатора (UUID):
# tune2fs -U random -- /dev/name
Вывести полный список файлов ФС /dev/name («образа» filename.ext2) без ее подключения — используя fls(1):
# fls -apr -- /dev/name $ fls -apr -- filename.ext2
ISO 9660
правитьСоздание образа filename.iso файловой системы ISO 9660 из файлов директорий dir1, dir2:
$ mkisofs -o filename.iso dir1 dir2 $ genisoimage -o filename.iso dir1 dir2
… Непосредственно на «чистом» DVD /dev/sr3:$ growisofs -Z /dev/sr3 dir1 dir2
… Добавить директории к уже существующей на DVD ФС ISO 9660:
$ growisofs -M /dev/sr3 dir1 dir2
Создание образа filename.iso из единственной директории dirname, используя makefs(8):
$ makefs -t cd9660 filename.iso dirname
Снятие образа filename.iso существующей файловой системы ISO 9660 с устройства /dev/sr3:
$ cp -- /dev/sr3 filename.iso
Вывести список файлов образа filename.iso используя bsdtar(1):
$ bsdtar -t < filename.iso $ bsdtar -tv < filename.iso
Squashfs
правитьСоздание образа filename.squashfs файловой системы Squashfs из файлов директорий dir1, dir2:
$ mksquashfs dir1 dir2 filename.squashfs
… Используя сжатие XZ:
$ mksquashfs dir1 dir2 filename.squashfs -comp xz
Вывести список файлов образа filename.squashfs:
$ unsquashfs -l filename.squashfs $ unsquashfs -ll filename.squashfs
См. также
править- Разделы Файлы и Блочные устройства.
Примечания
править- ↑ 3.326 Root Directory(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-05 г.
- ↑ а б в The /proc filesystem(англ.) Linux Kernel Documentation Проверено 2015-05-03 г.
- ↑ а б 14.1 df: Report file system disk space usage(англ.) GNU Coreutils. Free Software Foundation. Проверено 2015-05-09 г.
- ↑ df(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-05 г.
- ↑ fuser(англ.) The Open Group Base Specifications, Issue 7, IEEE Std 1003.1-2013 Проверено 2015-05-09 г.