4096바이트 물리적 블록 드라이브에서 내 파티션이 올바른 용량을 표시하지 않는 이유는 무엇입니까?

4096바이트 물리적 블록 드라이브에서 내 파티션이 올바른 용량을 표시하지 않는 이유는 무엇입니까?

최신 4096바이트 물리적 블록 하드 드라이브를 분할해야 하는 이유에 대해 많은 내용을 읽고 정렬에 주의를 기울인 후(4KB 섹터 디스크의 Linux: 실용적인 조언,파티션 정렬이란 무엇이며 왜 필요한가요?,새 Western Digital 하드 드라이브의 파티션을 "정렬"해야 하는 이유는 무엇입니까?, 새 디스크가 4096바이트 블록으로 올바르게 분할되고 포맷되었는지 확인했습니다.

그래서 그것을 사용하여 파티션을 나누고 fdisk -b 4096 /dev/sdb크기를 50GB로 지정 sdb1하고 sdb2남은 공간을 412GB sdb3(sdb3의 경우 3.8GB)로 지정하여 다음과 같은 파티션 테이블을 얻었습니다.

    Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 7600 cylinders, total 122096646 sectors
Units = sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x1c7f9c20

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1   *         256    13107455    52428800   83  Linux
    /dev/sdb2        13107456   121110783   432013312   83  Linux
    /dev/sdb3       121110784   122096645     3943448   82  Linux swap

그런 다음 ext4 로 포맷했습니다 sdb1.sdb2

# mkfs.ext4 /dev/sdb1 
mke2fs 1.42.4 (12-June-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
409600 inodes, 1638400 blocks
81920 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1677721600
50 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# mkfs.ext4 /dev/sdb2 
mke2fs 1.42.4 (12-June-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3375104 inodes, 13500416 blocks
675020 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
412 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

그리고 스왑 영역을 설정합니다.

# mkswap /dev/sdb3
Setting up swapspace version 1, size = 492924 KiB
no label, UUID=2d18a027-6c03-4b29-b03e-c0c7f61413c5

내가 발견한 첫 번째 이상한 점은 보고된 스왑 크기가 492924KiB에 불과하다는 것입니다. 그런 다음 새로 포맷된 파티션을 마운트한 후 원래보다 훨씬 작아 보이는 것을 발견했습니다.

Filesystem                        Size  Used Avail Use% Mounted on
/dev/sdb1                         6.3G  222M  5.8G   4% /mnt/zip
/dev/sdb2                          52G  907M   48G   2% /mnt/memory

왜 이런 일이 발생합니까? 이 문제를 해결할 수 있는 방법이 있나요?

편집하다:

@Alexios가 제안한 후 재부팅을 시도했지만 /proc/partitions는 변경되지 않았습니다. /dev/sda 및 /dev/sdb는 모두 동일한 500GB 드라이브이지만 /dev/sda는 정렬되지 않은 것으로 포맷했고(섹터 63 이후에 시작하는 기본 512바이트 섹터 크기 사용) /dev/sdb는 정렬된 것으로 포맷했습니다(4096 섹터 크기 사용 섹터 255 이후부터 시작)). 보시다시피, 시스템은 /dev/sdb가 /dev/sda보다 동일한 파티션 크기를 가지고 있음에도 불구하고 더 적은 수의 블록을 가지고 있다고 생각합니다.

# cat /proc/partitions 
major minor  #blocks  name

  11        0    4590208 sr0
   8        0  488386584 sda
   8        1   48829536 sda1
   8        2  437498145 sda2
   8        3    2058871 sda3
   8       16  488386584 sdb
   8       17    6553600 sdb1
   8       18   54001664 sdb2
   8       19     492931 sdb3

답변1

무슨 일이 일어나는지는 이 -b스위치가 말도 안 되는 일이고 심지어 존재해서는 안 된다는 것입니다. MBR에 기록된 섹터 번호는 항상 드라이브의 논리적 섹터 크기(512바이트) 단위로 해석됩니다. 이 스위치를 사용하면 -bfdisk가 기록하는 모든 섹터를 8로 나누게 되므로 커널은 파티션을 예상한 크기의 1/8로 해석합니다.

parted대신 을 사용하면 fdisk파티션이 자동으로 올바르게 정렬됩니다. 사용할 때 fdisk시작 섹터가 8의 배수인지 확인하십시오.

관련 정보