linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Файловая система/block-devices

kb/filesystem ── Файловая система ── intermediate

Block devices - диски в Linux

Block device - устройство которое читается/пишется блоками фиксированного размера (обычно 512B или 4K). Диски, SSD, NVMe - всё block devices в `/dev/`.

view as markdownaka: block-device, disks, dev-sd, dev-nvme

Что это

Linux представляет диски как block devices - файлы в /dev/ через которые ядро даёт доступ к хранилищу блоками. В отличие от character devices (терминалы, /dev/null), block devices умеют seek по адресам и I/O запрашивается порциями по N байт.

Имена устройств

ТипПрефиксПример
SATA / SCSI / USB-диск/dev/sd*/dev/sda, /dev/sdb1
NVMe (PCIe SSD)/dev/nvme*/dev/nvme0n1, /dev/nvme0n1p1
virtio (виртуалка)/dev/vd*/dev/vda
IDE (старое)/dev/hd*/dev/hda
LVM logical volume/dev/<vg>/<lv> или /dev/mapper/.../dev/vg0/root
Loop (файл как диск)/dev/loop*/dev/loop0
RAID (md)/dev/md*/dev/md0

Цифра в конце - раздел: /dev/sda1 = первый раздел на /dev/sda. У NVMe схема nvme0n1p1: контроллер 0, namespace 1, partition 1.

lsblk - главная команда

bash
lsblk                              # дерево всех block devices с разделами и mount-точками
lsblk -f                            # +T тип ФС, UUID, label
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID
lsblk -d                            # только сами диски, без разделов

Вывод дерева:

NAME        SIZE  TYPE  FSTYPE  MOUNTPOINT
sda         512G  disk
├─sda1      512M  part  vfat    /boot/efi
├─sda2        1G  part  ext4    /boot
└─sda3      511G  part  LVM2    -
  └─vg0-root 50G  lvm   ext4    /

Стабильные идентификаторы

Имена sda/sdb могут меняться между загрузками (зависит от порядка обнаружения). В /etc/fstab использовать UUID или label:

bash
blkid                              # UUID и label каждого раздела
blkid /dev/sda1
ls -l /dev/disk/by-uuid/           # симлинки uuid → /dev/sd*
ls -l /dev/disk/by-label/
ls -l /dev/disk/by-id/             # стабильное по железу (модель + serial)

Размер и геометрия

bash
cat /proc/partitions               # размер в 1K-блоках
fdisk -l /dev/sda                  # таблица разделов + размер
blockdev --getsize64 /dev/sda      # размер в байтах
cat /sys/block/sda/queue/rotational  # 1 = HDD, 0 = SSD
cat /sys/block/sda/queue/scheduler  # текущий I/O scheduler

Создание разделов

Для GPT (современный стандарт):

bash
sudo parted /dev/sda print                # текущая разметка
sudo parted /dev/sda mklabel gpt          # создать GPT (СТИРАЕТ всё!)
sudo parted -a optimal /dev/sda mkpart primary ext4 0% 100%

Для MBR (legacy, до 2 TB):

bash
sudo fdisk /dev/sda                       # интерактивный
sudo sgdisk /dev/sda --print              # GPT-aware fdisk

После создания раздела нужно сообщить ядру:

bash
sudo partprobe /dev/sda

I/O scheduler

Ядро сортирует I/O-запросы перед отправкой на диск:

  • none / noop - для NVMe: они сами хороший scheduler
  • mq-deadline - справедливый, default на серверах
  • bfq - для desktop, приоритеты процессов
  • kyber - низкая latency, для SSD
bash
cat /sys/block/sda/queue/scheduler
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler

Loop device - файл как диск

bash
dd if=/dev/zero of=disk.img bs=1M count=100   # сделать 100MB-файл
sudo losetup -f --show disk.img               # привязать к /dev/loopX
sudo mkfs.ext4 /dev/loop0                     # создать ФС
sudo mount /dev/loop0 /mnt                    # смонтировать
sudo umount /mnt && sudo losetup -d /dev/loop0

Так Docker раньше делал контейнерные ФС; так же монтируются .iso-образы.

§ команды

bash
lsblk -f

Все диски, разделы, ФС, mount-точки, UUID - главная команда обзора

bash
blkid /dev/sda1

UUID и тип ФС конкретного раздела - для /etc/fstab

bash
sudo fdisk -l

Подробно по всем дискам с разделами и геометрией

bash
cat /sys/block/sda/queue/rotational

1 = HDD, 0 = SSD - определить тип диска

bash
sudo partprobe /dev/sda

Перечитать таблицу разделов после правки fdisk/parted

§ см. также

  • cmd-lsblk-blkidlsblk и blkid - block-устройства и UUIDlsblk показывает дерево block-устройств (диск → раздел → LVM/crypt → mountpoint). blkid печатает UUID/LABEL/TYPE ФС. Связка для написания строки в [[mount-and-fstab|/etc/fstab]] по UUID.
  • mount-and-fstabmount и /etc/fstab - подключение ФС`mount` подключает блочное устройство или ФС к точке монтирования в дереве. `/etc/fstab` - список того что монтировать при загрузке.
  • lvmLVM - Logical Volume ManagerLVM - слой между [[block-devices]] и ФС: объединяет диски в pool'ы и нарезает логические тома любого размера, которые можно расширять, снапшотить, мигрировать вживую.
  • raidRAID - software-raid через mdadmRAID объединяет несколько [[block-devices]] в один логический с избыточностью или скоростью. На Linux - `mdadm`. Hardware-RAID - отдельная история.
  • sparse-filesSparse-файлы - дыры и apparent sizeSparse-файл имеет "дыры" - блоки которые ФС не аллоцировала. При чтении возвращают нули, но не занимают места. ls показывает apparent size, du - реальное. Используются в qcow2, бэкапах, sparse loop.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки