Работа с дисками, разделами, файловыми системами в Linux
Термины
- 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