lsblk와 fdisk는 동일한 파티션의 다른 크기를 어떻게 표시합니까?

lsblk와 fdisk는 동일한 파티션의 다른 크기를 어떻게 표시합니까?

저는 virtualbox VM을 실행하고 있는데 /dev/sda2의 크기가 두 출력에서 ​​다르게 나타나는 것을 볼 수 있습니다. 또한 fdisk 출력에서 ​​/dev/sda2와 /dev/sda5가 겹치는 것으로 나타납니다.

~$ lsblk /dev/sda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0 29.3G  0 disk 
├─sda1   8:1    0  512M  0 part /boot/efi
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  9.5G  0 part /

~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 29.3 GiB, 31457280000 bytes, 61440000 sectors
Disk model: VBOX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8f66391d

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048  1050623  1048576  512M  b W95 FAT32
/dev/sda2       1052670 20969471 19916802  9.5G  5 Extended
/dev/sda5       1052672 20969471 19916800  9.5G 83 Linux

답변1

sda2파티션은 컨테이너 파티션입니다. 형식은 디스크와 매우 유사합니다.마스터 부트 레코드(MBR)이라고하며확장된 부트 레코드(EBR) 자체는 가능한 4개의 기본 파티션 슬롯 중 하나를 차지합니다. 이는 MBR의 4개 파티션이라는 역사적 한계를 극복하기 위해 존재합니다. 여기에는 내부적으로 확장 파티션(Linux의 파티션 5로 시작하는 것으로 표시됨)이 포함되어 있으며 서로 연결되어 있습니다. 각 확장 파티션에는 두 개의 항목이 포함된 EBR도 있습니다. 하나는 파티션의 데이터 자체를 참조하기 위한 항목이고 다른 하나는 다음 항목을 참조하기 위한 항목입니다. EBR 확장 파티션이 있는 경우. 모든 확장 파티션(여기서는 sda5)은 다음과 같습니다.~에컨테이너 파티션(여기 sda2)이므로 fdisk는 항상 겹치는 블록을 보고합니다.

~에서막 생물 반응기내 관점에서는 확장 파티션을 추가하기 위해 예약된 공간을 모두 사용하므로 크기가 모든 확장 파티션의 크기보다 커야 합니다.

사용자 공간에 보고하는 커널 API의 관점에서 볼 때 lsblk파티션 2는 단지 편의상 표시되는 글루 파티션일 뿐이므로 변조해서는 안 됩니다. 보고된 데이터 크기는 EBR 오버헤드일 뿐이며 여기서는 1K입니다. 그렇지 않으면 파티션 2에 대한 읽기 또는 쓰기(모든 확장 파티션에 대한 초기 링크가 끊어질 수 있으므로 이미 좋지 않음)도 파티션 5 읽기에 허용됩니다. 아니면 쓰세요. 크기를 0으로 보고하도록 선택하더라도 크게 문제가 되지 않습니다. 이는 sda전체 디스크를 대신하여 자체적으로 처리하는 것과는 다릅니다. 더 많은 확장 파티션이 각 이전 확장 파티션의 EBR에서 연결되어 있다는 점을 고려하면 이는 의미가 있습니다. 해당 내부 EBR은 사용할 수 없으며 실제 데이터만 표시됩니다.

사용을 고려해야 합니다.GPTMBR/EBR 파티셔닝 대신 파티셔닝: 이는 더 합리적이고 그러한 제한 사항과 해결 방법이 없는 최신 파티셔닝 방식입니다. 아니면 선택할 수 있습니다좌심실 용적(기본, 비확장) 파티션: 이는 또한 다양한 추상화 계층에서 블록을 파티셔닝하기 위한 컨테이너 형태이며 많은 기능을 제공합니다.

관련 정보