Работа с дисками, разделами, файловыми системами в Linux

Материал из sysadm
Перейти к навигации Перейти к поиску

Термины

  • PARTLABEL - метка раздела
  • PARTUUID - глобальный идентификатор раздела
  • LABEL - метка файловой системы на разделе
  • UUID - глобальный идентификатор файловой системы на разделе

Вывод информации о разделах и томах

Размер физического и логического блока диска sda

cat /sys/block/sda/queue/physical_block_size
cat /sys/block/sda/queue/logical_block_size

Утилита lsblk

# вывод информации о разделах
lsblk

# вывод информации о файловых системах на разделах
lsblk -f

# вывод устройств SCSI с информацией о номерах
lsblk -S
lsblk --scsi

Утилита lsscsi

# вывод устройств SCSI с информацией о номерах
lsscsi

Утилита blkid

# вывод информации о разделах и логических томах
blkid

Поиск тома по метке или UUID

findfs [options] {LABEL,UUID,PARTUUID,PARTLABEL}=<value>

Работа с разделами

Утилиты управления разделами

Утилита fdisk позволяет:

  • создавать нужные таблицы разделов MBR, GPT, ...
  • создавать разделы
  • изменять атрибуты разделов

Утилита parted, также позволяет управлять таблицами разделов.

виды таблиц разделов

  • dos - таблица разделов MS-DOS, является частью MBR (Master Boot Record), который занимает первые 512 байт диска, поддерживает до 4 разделов, не может адресовать разделы дальше 2ТБ.
  • gpt - GUID Partition Table, таблица разделов UEFI, имеет размер 1МБ, сохраняется в начале диска и имеет резервную копию в конце диска, может содержать до 128 разделов.
  • loop - отсутствие таблицы разделов, т.е. весь диск является одним разделом.

Увеличение размера диска

Чтобы ядро линукса увидело новый размер диска без перезагрузки, могут потребоваться дополнительные действия

# иногда достаточно просто зайти и выйти из fdisk (помогает не всегда)
fdisk /dev/sda
q

# явная команда ядру перечитать информацию о диске
echo 1 > /sys/class/block/sda/device/rescan

# перечитать диски по списку
for dev_name in sdb sdc sdd sde; do echo 1 > /sys/block/$dev_name/device/rescan; done

# если подключен LUN через dm-multipath, то необходимо выполнить несколько действий
# 1. перечитать все блочные устройства связанные с LUN
# определить список всех блочных устройств /dev/sdX, связанных с LUN (каждому пути соответствует свое блочное устройство)
lsblk | grep -B1 mpath
for dev_name in sdb sdc sdd sde; do echo 1 > /sys/block/$dev_name/device/rescan; done
# 2. дать команду mpathd перечитать размер LUN
multipathd -k'resize map mpath<N>'

Если диск имеет таблицу разделов GPT, то необходимо учитывать, что данная таблица разделов хранит свою копию не только в начале диска но и в конце. Поэтому после увеличения размера диска fdisk будет выдавать предупреждение.

GPT PMBR size mismatch (736100351 != 947912703) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.

Чтобы это исправить достаточно зайти в fdisk и ничего не меняя просто сохранить текущую таблицу разделов w

Изменение размера раздела

fdisk Для изменения размера существующего раздела, его нужно удалить и создать новый раздел, начинающийся с того же начального сектора, задав при этом новый размер или конечный сектор. При этом может измениться тип раздела, поэтому предварительно запомните тип который был и смените тип после пересоздания раздела, если это необходимо.

После сканирования GPT диска и определения нового размера, новая утилита fdisk выводит предупреждение и предлагает исправить таблицу разделов просто переписав ее w Старая утилита fdisk не выдаст предупреждений, но будет показывать вместо таблицы разделов один раздел типа GPT

GPT PMBR size mismatch (62914559 != 83886079) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.

Современная версия fdisk при создании раздела может определить на нем наличие сигнатуры файловой системы и запросить ее удаление. Тут важно отказаться, иначе потеряете файловую систему.

Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y] Да/[N] Нет: N

Перед уменьшением раздела, необходимо предварительно уменьшить вышестоящую структуру (файловую систему или PV в LVM2), после чего пересоздать раздел, указав конечный сектор таким образом, чтобы размер раздела соответствовал количеству секторов файловой системы.

После увеличении раздела, необходимо расширить вышестоящую структуру (файловую систему или PV в LVM2).

После изменения таблицы разделов ее необходимо перечитать

partprobe /dev/sda

# Если выдает такие сообщения, то см. ниже
Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the current setting?

# GPT хранит свою копию в начале и в конце диска.
# После увеличения диска необходимо переместить резервную копию GPT в конец диска

parted /dev/sda
print
Fix
Fix


На GPT таблицах старые версии fdisk могут работать не корректно. Лучше использовать parted, но при этом необходимо учитывать что parted применяет изменения сразу и выйти без сохранения как в fdisk уже нельзя.

Расширение раздела с использованием parted

parted /dev/sda
unit s       # s - sector допустимо также KB,MB,GB и др.
print free
resizepart <num_partition>
?End ?(12345s) 1234567898s   # если нужно до конца диска, то указываем конечный сектор свободной области, выведенный предыдущей командой

# На MBR диске пытался расширить смонтированный раздел, получил предупреждение, пока не рискнул в онлайне расширять, сделал проверенным способом через fdisk
# То же самое действие на GPT диске не вызывало таких предупреждений
Warning: Partition /dev/sdd1 is being used. Are you sure you want to continue?
Yes/No? no


Изменения в составе дисков и таблиц разделов без перезагрузки

Определение списка дисков и считывание таблиц разделов осуществляется ядром при загрузке. При изменении в составе дисков или в таблицах разделов информация об этом не всегда обновляется в ядре.

Обновить таблицу разделов без перезагрузки можно с помощью команды

partprobe /dev/sdx

В дистрибутивах где используется systemd может возникать проблема с монтированием каталога, который ранее был смонтирован на другой раздел. Монтирование диска не вызывает никаких явных ошибок, но диск остается не смонтированным. В логах видим, что диск размонтируется сразу после монтирования, потому что systemd считает данный каталог связанным с неактивным диском.

tail /var/log/messages

systemd: Unit ... is bound to inactive unit dev-disk-by ... Stopping, too
...
systemd: Unmounting ...

Для решения проблемы без перезагрузки, необходимо чтобы systemd перечитал файл /etc/fstab. Это можно сделать с помощью команды.

systemctl daemon-reload

Изменение размера файловой системы

EXT4

Расширение файловой системы на весь доступный размер на томе /dev/sdc5

# непосредственно перед расширением файловой системы требуется принудительная проверка
e2fsck -f /dev/sdc5

# увеличение размера файловой системы до размера раздела
resize2fs /dev/sdc5

# уменьшение размера файловой системы до нужного размера
resize2fs /dev/sdс5 1G

XFS

# определение bsize и прочих параметров файловой системы XFS
xfs_info /mount/point

# увеличение на 1048576 блоков, если bsize=4096 то получим 4ГБ (1048576*4KB)
xfs_growfs -D 1048576 /mount/point

# увеличение на все свободное место
xfs_growfs -d /mount/point

Изменение атрибутов файловой системы LABEL и UUID

Пример, установка LABEL=new_name для файловой системы ext4 на томе /dev/sdc5

f2label /dev/sdc5 new_name

Сгенерировать новый UUID можно утилитой uuid

uuid

Пример, изменение UUID для файловой системы ext4 на томе /dev/sdc5

# непосредственно перед сменой UUID требуется принудительная проверка файловой системы, иначе не даст сменить UUID
e2fsck -f /dev/sdc5
# смена UUID выполняется не мгновенно, около минуты для раздела 3 ТиБ
tune2fs /dev/sdc5 -U "65472c84-091b-12cd-2b3c-007812f31815"

Типы разделов

MBR

 0  Vide            1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris
 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx
 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 88  Linux plein tex df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  GPT
 f  W95 Etendu (LBA 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a8  UFS Darwin      f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys ab  Amorce Darwin   fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Amorce Solaris  ff  BBT

GPT

  1 EFI System                     C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  2 MBR partition scheme           024DEE41-33E7-11D3-9D69-0008C781F39F
  3 Intel Fast Flash               D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
  4 BIOS boot                      21686148-6449-6E6F-744E-656564454649
  5 Sony boot partition            F4019732-066E-4E12-8273-346C5641494F
  6 Lenovo boot partition          BFBFAFE7-A34F-448A-9A5B-6213EB736C22
  7 PowerPC PReP boot              9E1A2D38-C612-4316-AA26-8B49521E5A8B
  8 ONIE boot                      7412F7D5-A156-4B13-81DC-867174929325
  9 ONIE config                    D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
 10 Microsoft reserved             E3C9E316-0B5C-4DB8-817D-F92DF00215AE
 11 Microsoft basic data           EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
 12 Microsoft LDM metadata         5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
 13 Microsoft LDM data             AF9B60A0-1431-4F62-BC68-3311714A69AD
 14 Windows recovery environment   DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
 15 IBM General Parallel Fs        37AFFC90-EF7D-4E96-91C3-2D7AE055B174
 16 Microsoft Storage Spaces       E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
 17 HP-UX data                     75894C1E-3AEB-11D3-B7C1-7B03A0000000
 18 HP-UX service                  E2A1E728-32E3-11D6-A682-7B03A0000000
 19 Linux swap                     0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
 20 Linux filesystem               0FC63DAF-8483-4772-8E79-3D69D8477DE4
 21 Linux server data              3B8F8425-20E0-4F3B-907F-1A25A76F98E8
 22 Linux root (x86)               44479540-F297-41B2-9AF7-D131D5F0458A
 23 Linux root (x86-64)            4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
 24 Linux root (ARM)               69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
 25 Linux root (ARM-64)            B921B045-1DF0-41C3-AF44-4C6F280D3FAE
 26 Linux root (IA-64)             993D8D3D-F80E-4225-855A-9DAF8ED7EA97
 27 Linux reserved                 8DA63339-0007-60C0-C436-083AC8230908
 28 Linux home                     933AC7E1-2EB4-4F13-B844-0E14E2AEF915
 29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
 30 Linux LVM                      E6D6D379-F507-44C2-A23C-238F2A3DF928
 31 Linux variable data            4D21B016-B534-45C2-A9FB-5C16E091FD2D
 32 Linux temporary data           7EC6F557-3BC5-4ACA-B293-16EF5DF639D1
 33 Linux /usr (x86)               75250D76-8CC6-458E-BD66-BD47CC81A812
 34 Linux /usr (x86-64)            8484680C-9521-48C6-9C11-B0720656F69E
 35 Linux /usr (ARM)               7D0359A3-02B3-4F0A-865C-654403E70625
 36 Linux /usr (ARM-64)            B0E01050-EE5F-4390-949A-9101B17104E9
 37 Linux /usr (IA-64)             4301D2A6-4E3B-4B2A-BB94-9E0B2C4225EA
 38 Linux root verity (x86)        D13C5D3B-B5D1-422A-B29F-9454FDC89D76
 39 Linux root verity (x86-64)     2C7357ED-EBD2-46D9-AEC1-23D437EC2BF5
 40 Linux root verity (ARM)        7386CDF2-203C-47A9-A498-F2ECCE45A2D6
 41 Linux root verity (ARM-64)     DF3300CE-D69F-4C92-978C-9BFB0F38D820
 42 Linux root verity (IA-64)      86ED10D5-B607-45BB-8957-D350F23D0571
 43 Linux /usr verity (x86)        8F461B0D-14EE-4E81-9AA9-049B6FB97ABD
 44 Linux /usr verity (x86-64)     77FF5F63-E7B6-4633-ACF4-1565B864C0E6
 45 Linux /usr verity (ARM)        C215D751-7BCD-4649-BE90-6627490A4C05
 46 Linux /usr verity (ARM-64)     6E11A4E7-FBCA-4DED-B9E9-E1A512BB664E
 47 Linux /usr verity (IA-64)      6A491E03-3BE7-4545-8E38-83320E0EA880
 48 Linux extended boot            BC13C2FF-59E6-4262-A352-B275FD6F7172
 49 Linux user's home              773f91ef-66d4-49b5-bd83-d683bf40ad16
 50 FreeBSD data                   516E7CB4-6ECF-11D6-8FF8-00022D09712B
 51 FreeBSD boot                   83BD6B9D-7F41-11DC-BE0B-001560B84F0F
 52 FreeBSD swap                   516E7CB5-6ECF-11D6-8FF8-00022D09712B
 53 FreeBSD UFS                    516E7CB6-6ECF-11D6-8FF8-00022D09712B
 54 FreeBSD ZFS                    516E7CBA-6ECF-11D6-8FF8-00022D09712B
 55 FreeBSD Vinum                  516E7CB8-6ECF-11D6-8FF8-00022D09712B
 56 Apple HFS/HFS+                 48465300-0000-11AA-AA11-00306543ECAC
 57 Apple APFS                     7C3457EF-0000-11AA-AA11-00306543ECAC
 58 Apple UFS                      55465300-0000-11AA-AA11-00306543ECAC
 59 Apple RAID                     52414944-0000-11AA-AA11-00306543ECAC
 60 Apple RAID offline             52414944-5F4F-11AA-AA11-00306543ECAC
 61 Apple boot                     426F6F74-0000-11AA-AA11-00306543ECAC
 62 Apple label                    4C616265-6C00-11AA-AA11-00306543ECAC
 63 Apple TV recovery              5265636F-7665-11AA-AA11-00306543ECAC
 64 Apple Core storage             53746F72-6167-11AA-AA11-00306543ECAC
 65 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 66 Solaris root                   6A85CF4D-1DD2-11B2-99A6-080020736631
 67 Solaris /usr & Apple ZFS       6A898CC3-1DD2-11B2-99A6-080020736631
 68 Solaris swap                   6A87C46F-1DD2-11B2-99A6-080020736631
 69 Solaris backup                 6A8B642B-1DD2-11B2-99A6-080020736631
 70 Solaris /var                   6A8EF2E9-1DD2-11B2-99A6-080020736631
 71 Solaris /home                  6A90BA39-1DD2-11B2-99A6-080020736631
 72 Solaris alternate sector       6A9283A5-1DD2-11B2-99A6-080020736631
 73 Solaris reserved 1             6A945A3B-1DD2-11B2-99A6-080020736631
 74 Solaris reserved 2             6A9630D1-1DD2-11B2-99A6-080020736631
 75 Solaris reserved 3             6A980767-1DD2-11B2-99A6-080020736631
 76 Solaris reserved 4             6A96237F-1DD2-11B2-99A6-080020736631
 77 Solaris reserved 5             6A8D2AC7-1DD2-11B2-99A6-080020736631
 78 NetBSD swap                    49F48D32-B10E-11DC-B99B-0019D1879648
 79 NetBSD FFS                     49F48D5A-B10E-11DC-B99B-0019D1879648
 80 NetBSD LFS                     49F48D82-B10E-11DC-B99B-0019D1879648
 81 NetBSD concatenated            2DB519C4-B10E-11DC-B99B-0019D1879648
 82 NetBSD encrypted               2DB519EC-B10E-11DC-B99B-0019D1879648
 83 NetBSD RAID                    49F48DAA-B10E-11DC-B99B-0019D1879648
 84 ChromeOS kernel                FE3A2A5D-4F32-41A7-B725-ACCC3285A309
 85 ChromeOS root fs               3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
 86 ChromeOS reserved              2E0A753D-9E48-43B0-8337-B15192CB1B5E
 87 MidnightBSD data               85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7
 88 MidnightBSD boot               85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7
 89 MidnightBSD swap               85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7
 90 MidnightBSD UFS                0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7
 91 MidnightBSD ZFS                85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7
 92 MidnightBSD Vinum              85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7
 93 Ceph Journal                   45B0969E-9B03-4F30-B4C6-B4B80CEFF106
 94 Ceph Encrypted Journal         45B0969E-9B03-4F30-B4C6-5EC00CEFF106
 95 Ceph OSD                       4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
 96 Ceph crypt OSD                 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D
 97 Ceph disk in creation          89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE
 98 Ceph crypt disk in creation    89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE
 99 VMware VMFS                    AA31E02A-400F-11DB-9590-000C2911D1B8
100 VMware Diagnostic              9D275380-40AD-11DB-BF97-000C2911D1B8
101 VMware Virtual SAN             381CFCCC-7288-11E0-92EE-000C2911D0B2
102 VMware Virsto                  77719A0C-A4A0-11E3-A47E-000C29745A24
103 VMware Reserved                9198EFFC-31C0-11DB-8F78-000C2911D1B8
104 OpenBSD data                   824CC7A0-36A8-11E3-890A-952519AD3F61
105 QNX6 file system               CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1
106 Plan 9 partition               C91818F9-8025-47AF-89D2-F030D7000C2C
107 HiFive Unleashed FSBL          5B193300-FC78-40CD-8002-E86C45580B47
108 HiFive Unleashed BBL           2E54B353-1271-4842-806F-E436D6AF6985

Aliases:
   linux          - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
   swap           - 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
   home           - 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
   uefi           - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
   raid           - A19D880F-05FC-4D3B-A006-743F0F84911E
   lvm            - E6D6D379-F507-44C2-A23C-238F2A3DF928