Файловая система Linux — обзор, список команд для работы

2.9 (58.75%) 16 votes

Поговорим о файловых системах Linux. Какие существуют типы и виды. Какие их основные различия: журналируемые и не журналируемые ФС.

1. Что такое файловая система простыми словами

Термин «файловая система» можно понимать двояко. С одной стороны — это архитектура хранения битов на жестком диске, с другой — это организация каталогов в соответствии с идеологией Unix. В этой статье мы более подробно обсудим первую сторону.

Файловая система (сокращенно ФС, англ. «file system») — это архитектура хранения данных в системе, хранение данных в оперативной памяти и доступа к конфигурации ядра. ФС устанавливает физическую и логическую структуру файлов, правила их создания и управления ими.

В физическом смысле файловая система Linux/UNIX представляет собой пространство раздела диска разбитое на блоки фиксированного размера. Их размер кратен размеру сектора: 1024, 2048, 4096 или 8120 байт. Размер блока известен заранее.

Как происходит обмен данными между ядром, приложениями и жестким диском? Для этого существуют 2 технологии:

  1. Виртуальная файловая система (VFS). Некий интерфейс, между ядром и файловой системой (ext2, ext4 и т.д.). Это позволяет взаимодействовать ядру и приложениям без особенностей работы конкретного типа ФС. Иногда VFS называют «виртуальным коммутатором файловых систем».
  2. Драйверы файловых систем. Специальные программы, которые устанавливают «мост» (интерфейс) взаимодействия между аппаратурой и программой.

Список поддерживаемых ядром файловых систем находится в файле /proc/filesystems:

andrey@andrey-VirtualBox:~$ cat /proc/filesystems 
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   cgroup2
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   bpf
nodev   pipefs
nodev   hugetlbfs
nodev   devpts
        ext3
        ext2
        ext4
        squashfs
        vfat
nodev   ecryptfs
        fuseblk
nodev   fuse
nodev   fusectl
nodev   pstore
nodev   mqueue
nodev   autofs

Иерархия файловой системы

Как мы уже сказали выше, есть вторая сторона ФС, которая состоит в определении ее с точки зрения организации расположения файлов в Linux. В этом случае можно сказать, что: файловая система — это иерархическая структура, которая начинается с корневого каталога «/» (корневой каталог) и дальше ветвится в соответствие с работой системы.

В этой статье мы будем говорить подробнее про типы файловых систем. Про организацию и структуру каталогов в Linux можно отдельно прочитать в статье:

2. Целостность файловой системы — что это такое

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

Проверку целостности файловой системы в Linux можно запустить с помощью команды fsck (в Windows это программа называется – scandisk)

В начале ФС есть чистый бит. Если система используется, то в этот бит заносится 1. По завершению работы опять 0.

3. Список команд для работы с файлами в Linux

Команда Описание
touch file_name Создать файл «file_name»
mkdir directory_name Создать директорию «directory_name»
rm file_name Удалить файл «file_name»
rm -r Удалить рекурсивно все файлы из директории
pwd Вывод каталога в котором сейчас находитесь
ls directory_name Вывести содержание каталога «directory_name» (можно просто ввести ls без имени и тогда выведутся все файлы текущей директории)
cd directory_name Перейти в директорию «directory_name»
cp file_name directory_name Копировать «file_name» в директорию «directory_name»
mv file_name directory_name Переместить «file_name» в директорию «directory_name»
mv old_name new_name Переименовать файл/директорию «old_name» в «new_name»

Права доступа к файлу/каталогу можно изменять с помощью команды chmod:

chmod 644 file_name

Таким образом можно изменять права доступа к файлу и каталогам (а также вложенным каталогам и файлам в них).

4. Типы файловых систем Linux — описание и обзор

Файловые системы условно делятся на два типа

  1. Журналируемые. Имеют в своем арсенале специальный файл, который хранит историю действий (лог) и план дальнейшей проверки. Характерной особенностью является устойчивость к сбоям и большая гарантия на сохранение целостности данных.
  2. Не журналируемые. Отсутствует файла с логом. Работают более быстро. Не гарантируют целостность и сохранность данных. Особенно это проблема встает в случае сбоев, когда некоторые действия могли редактировать файл и прервать изменения в неправильном месте.

Узнать файловую систему в ОС Linux

file -s

Самые популярными типами ФС в Linux являются:

  1. Ext4 (считается стандартом для Linux)
  2. Ext2
  3. ReiserFS
  4. XFS
  5. SWAP

В Windows поддерживаются свои ФС: NTFS, FAT32. Линукс также их поддерживает, а вот Windows не поддерживает линуксовые системы.

1 Extfs (Extended File System). Дата появления на свет апреле 1992 года. Самая первая файловая система разработанная специально для ОС на ядре Linux. Наибольший возможный размер раздела файла — 2 Гб. Максимальная длина имени файла — 255 символов. Является прародителем популярных ФС Ext2, Ext3.

2 Ext2 (second extended file system). Дата создания 1993 год. Является не журналируемой файловой системой. Была популярна до 2000-х. Имеет ряд ограничений на работу с большими файлами, зато является и самой быстрой, поэтому её часто используют в различных сравнительных тестах как эталонную.

3 Ext3 (third extended filesystem). Дата выхода 2001 год. Считается революционной, поскольку относится к поколению журналируемых систем. В настоящее время файловая система Ext3 поддерживает файлы размером до 1 ТБайт. Используется в некоторых случаях до сих пор. Разделы Ext3 могут читать Windows-программы (например, Total Commander). Разработчик Стивен Твид.

4 Ext4 (дата выхода 2006 год). Является стандартом во всех современных Linux (а сейчас 2019 год). Хорошо защищена от проблем фрагментации и оптимизирована для работы с большими файлами. Максимальный размер файловой системы не может превышать 16 ТБайт.

5 ReiserFS (или Reiser3). Создана уже после ext3 в качестве ее альтернативы. Журналируемая система. Поддерживает большую производительность. Позволяет изменять размеры разделов во время работы.

Считается самой экономичной, поскольку позволяет хранить несколько файлов в одном блоке, что позволяет использовать каждый байт жесткого диска. Обычные файловые системы могут хранить в одном блоке один файл или одну его часть.

6 Reiser4 (дата создания 2004 году). Система включает себя такие передовые технологии как транзакции, задержка выделения пространства, а так же встроенная возможность кодирования и сжатия данных.

7 XFS (журналируемая файловая система). Это производительная файловая система, разработанная в Silicon Graphics для свой операционной системы еще в 2001 году. Позволяла использовать диски 2 ТБайт. Существует возможность потери данных во время записи при сбое питания, так как большое количество буферов хранится в памяти.

8 Btrfs или B-Tree File System. Журналируемая файловая система. Совершенно новоиспеченная файловая система, которая сосредоточена на отказоустойчивости, свободности администрирования и восстановления данных. К её особенностям относятся хранение индекса файлов в так называемых «B-деревьях» – иерархических структурах, которые максимально оптимально используют ресурсы оперативной памяти за счёт небольшой глубины вложения данных.

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

5. Типы файлов Linux

Перечислим поддерживаемые типы файлов в ОС Linux

  • Файлы (тексты, исходники, картинки, скрипты)
  • Каталоги
  • Блочные устройства (жесткие диски, дискеты)
  • Символьные устройства (терминалы, принтеры)
  • символические ссылки
  • PIPE
  • Гнезда

Тип файла в каталоге можно посмотреть командой:

ls -l

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

ls-l /dev/sd*
root@debian~ # ls-l /dev/sd* brw-rw—-1 root disk 8, 0 Мар11 19:03 /dev/sda brw-rw—-1 root disk 8, 1 Мар10 21:23 /dev/sda1 brw-rw—-1 root disk 8, 5 Мар10 21:23 /dev/sda5 brw-rw—-1 root disk 8, 16 Мар10 22:31 /dev/sdb brw-rw—-1 root disk 8, 17 Мар10 21:23 /dev/sdb1 brw-rw—-1 root disk 8, 18 Мар10 21:23 /dev/sdb2 brw-rw—-1 root disk 8, 32 Мар11 19:05 /dev/sdc brw-rw—-1 root disk 8, 33 Мар11 17:59 /dev/sdc1

Буквой «b» помечаются блочные устройства.

Посмотреть список дисков можно командой

fdisk –l

Вывести информацию о жестком диске можно так

hdparm-I /dev/sdХ

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *