Какие файловые системы используются в Linux?

«Какие файловые системы используются в Linux?» — вопрос из категории Linux и ОС, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В экосистеме Linux используется множество файловых систем, каждая со своими особенностями. Вот основные из них:

  • ext4 (Fourth Extended Filesystem) — стандартная, надёжная и широко используемая журналируемая ФС в большинстве дистрибутивов. Хороший баланс производительности и стабильности.
  • XFS — высокопроизводительная журналируемая ФС, отлично подходящая для работы с большими файлами и высоконагруженных серверов.
  • Btrfs (B-Tree File System) — современная ФС с продвинутыми функциями: снапшоты, прозрачное сжатие, дедупликация, встроенный RAID.
  • ZFS — изначально файловая система Sun, известная высокой надёжностью, проверкой целостности данных (checksum) и мощными возможностями управления томами. Требует загрузки внешнего модуля ядра.
  • FAT32 / exFAT / NTFS — файловые системы, обеспечивающие совместимость с Windows. NTFS поддерживается через драйвер ntfs-3g.
  • tmpfs — виртуальная файловая система, размещённая в оперативной памяти. Используется для /tmp, /dev/shm.

Пример на C++: получение информации о файловой системе

#include <iostream>
#include <sys/statvfs.h>

int main() {
    struct statvfs fs_info;
    if (statvfs("/", &fs_info) == 0) {
        std::cout << "Filesystem block size: " << fs_info.f_bsize << " bytesn";
        std::cout << "Total blocks: " << fs_info.f_blocks << "n";
        std::cout << "Free blocks: " << fs_info.f_bfree << "n";
        // Расчёт свободного места в гигабайтах
        auto free_gb = (fs_info.f_bfree * fs_info.f_bsize) / (1024.0 * 1024 * 1024);
        std::cout << "Free space: " << free_gb << " GBn";
    }
    return 0;
}