Файлы и файловые системы¶
В Linux всё является файлом — жёсткий принцип проектирования, пронизывающий всю систему. Обычные файлы, каталоги,
устройства, каналы, сокеты и даже информация о процессах доступна через единый интерфейс: open, read, write,
close. Этот раздел объясняет, как этот интерфейс устроен изнутри — от системных вызовов до структур ядра.
Вы узнаете, что такое файловый дескриптор и таблица открытых файлов, как ядро организует данные на диске через inode и
суперблок, как работают жёсткие и символические ссылки, чем блочные устройства отличаются от символьных и как права
доступа применяются на уровне ядра. Отдельное внимание уделено практике: реализация cp, mv, rm, ls и tee через
системные вызовы.
Темы¶
| Страница | Что рассматривается |
|---|---|
| Файловые дескрипторы | open, read, write, close, lseek, разреженные файлы |
| Перенаправление ввода/вывода | dup, dup2, перенаправление stdin/stdout/stderr, tee |
| Основы файловых систем | Inode, суперблок, VFS, типы файлов, виртуальные ФС |
| Операции с директориями | opendir, readdir, stat, fstat, fstatat |
| Команды mv и rm | rename, unlink, rmdir, атомарность, счётчик ссылок |
| Жёсткие и символические ссылки | link, symlink, readlink, различия и ограничения |
| Права доступа и атрибуты файлов | chmod, chown, SUID/SGID/sticky, атрибуты ext4 |
| Открытые файлы и процессы | /proc/<pid>/fd, lsof, fuser, таблица открытых файлов |
| Блочные и символьные устройства | major/minor номера, /dev, виртуальные устройства, mknod |
| OverlayFS и слои Docker | union mount, lower/upper/work, copy-up, whiteouts, overlay2 |
| Linux block layer | bio, request queue, I/O schedulers, blk-mq, FUA, plugging |
| Внутреннее устройство ФС | ext4 layout, extents, htree, журналирование, btrfs/XFS/ZFS |
| FUSE: filesystem в userspace | libfuse high/low-level API, FUSE protocol, sshfs/gocryptfs/s3fs внутри, performance |
| inotify и fanotify | watch descriptors, event masks, fanotify permission events, лимиты IDE/VSCode |
| NVMe и SPDK | NVMe protocol (SQ/CQ, namespaces, ZNS), NVMe-oF, SPDK polled-mode driver, io_uring IOPOLL |
| ZFS и Btrfs | CoW filesystems, ZFS (vdev/zpool/ARC/ZIL/RAID-Z/send-receive), Btrfs (subvolumes/snapshots/reflinks) |