Файловые системы
Виктор Ашик
Куратор практик
Лекция КИТ, Москва, 28 марта 2011
#yakit
2
КИТ
План курса
— Операционные системы
— Архитектура ЭВМ
— Устройство GNU/Linux
— Системы хранения данных
— Файловые системы
— Сети и протоколы
— Виртуализация
— Безопасность
3
Файловые системы
План лекции
— Понятие файловой системы (ФС)
— История
— Устройство
— Распространенные ФС:
– FAT/FAT32/exFAT
– ext2/ext3/ext4
– reiserfs 3,4
– NTFS
4
– XFS
5
Что такое файл?
6
man 2 stat
struct stat {
7
dev_t
st_dev;
ino_t st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
off_t st_size;
blksize_t st_blksize;
blkcnt_t st_blocks;
time_t st_atime;
time_t st_mtime;
time_t st_ctime; };
inode
—
Индексный дескриптор
—
Есть у каждого файла
—
«номер» файла
—
Может совпадать у нескольких файлов (жесткая
ссылка, каталоги)
8
st_mode — тип файла
—
socket (сокет, гнездо)
—
symbolic link (символическая ссылка)
—
обычный файл
—
block device (блок-ориентированный
специальный файл)
—
directory (каталог, папка)
—
char device
—
FIFO/pipe
9
Разрешения файла
10
ls -l /dev/tty
crw-rw-rwu g o
11
ls -l /usr/sbin/passwd
-rwsr-xr-x 1 root root 37140 2011-02-15 01:11 ...
12
S_ISUID 0004000 set UID bit
S_ISGID 0002000 set-group-ID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
13
Для чего еще нужна файловая
система?
14
Файловая система
—
Структура хранения и упорядочения файлов
—
имена файлов
—
структура каталогов
—
ссылки
—
15
—
жесткие
—
символические
—
..
метаданные
—
тип файла
—
разрешения доступа
Носители
—
Лента
—
—
Жесткий диск
—
—
—
tar, cpio, LTFS
...
Твердотельный накопитель
—
JFFS2
—
команда TRIM
Оптический диск
—
16
ISO9660(CDFS, Jouliet), UDF
VFS
—
—
—
—
Прослойка между именем файла и содержащей
его файловой системой
В Plan9 является распределенной с
взаимодействием по протоколу 9P
Позволяет монтировать (присоединять)
файловые системы
В Plan9 монтирование может быть
объединяющим
17
VFS
18
dentry
19
Структура каталогов: FHS
—
/
etc
bin
sbin
lib
dev
boot
home
tmp
var
usr
20
/root
/opt, /srv
/mnt, /media
/proc, /sys
/usr/bin, /usr/sbin
/usr/lib, /usr/src,
/usr/games, /usr/share
/var/tmp, /var/log,
/var/spool/mail, ...
Через какой файл опознать
дистрибутив Linux?
21
Типы файлов *nix
—
файл
—
каталог
—
символическая ссылка
—
блок-ориентированный спец. файл
—
байт-ориентированный спец. файл
—
именованный канал
—
сокет
22
Жесткие ссылки
ls -l /sbin/mkfs.ext?
ls -il /sbin/mkfs.ext?
23
Какая ссылка была первой?
24
Как узнать все имена файла?
25