resize2fs를 사용하여 파일 시스템을 축소한 후 즉시 파티션을 축소하려면 어떻게 해야 합니까?

resize2fs를 사용하여 파일 시스템을 축소한 후 즉시 파티션을 축소하려면 어떻게 해야 합니까?

/home파티션의 파일 시스템을 축소하는 방법은 다음과 같습니다.

e2fsck /dev/sda1

resize2fs /dev/sda1 150G

현재 실행해보면 df파티션이 210G에서 150G로 축소된 것으로 나옵니다.잘못된).

파일 시스템 크기만 줄였으니 fdisk파티션 크기를 어떻게 사용하거나 줄일 수 있나요 parted?

답변1

첫째, 일반적인 경고: 데이터를 백업하십시오. 파티션과 파일 시스템의 크기를 조정하는 것은 결코 100% 안전한 작업이 아닙니다.

GParted와 함께 그래픽 환경을 사용할 수 있는 경우 가장 간단한 솔루션은 다음과 같습니다.

  1. /dev/sda1파티션을 포함하는 파일 시스템의 크기로 다시 늘립니다. 파티션을 마우스 오른쪽 버튼으로 클릭하고 "검사"를 선택한 다음 모든 작업을 적용합니다.

  2. 파티션을 원하는 크기로 축소합니다. 파티션을 마우스 오른쪽 버튼으로 클릭하고 "크기 조정/이동"을 선택한 다음 원하는 "새 크기"를 설정하고 모든 작업을 확인 및 적용합니다. GParted도 파일 시스템 크기 조정을 처리합니다.

dumpe2fs또는 명령줄 도구를 사용하여 tune2fs파일 시스템의 블록 크기와 블록 수를 가져오고 축소하려는 파티션을 다시 생성하여 새 파티션이 원래 파티션과 동일한 바이트로 시작하고 해당 파티션에 추가되도록 할 수 있습니다. offset 축소가 종료되는 파일 시스템의 크기(바이트)입니다.

parted다음은 일반 파일이 지원하는 GNU 및 루프 장치를 사용하여 관련 명령을 조작하는 완전한 예입니다.

  • 먼저 블록 장치를 생성하고 이를 분할한 후 첫 번째(유일한) 파티션에 210MiB 파일 시스템을 생성합니다.

    $ fallocate -l 211MiB testfile
    $ sudo losetup -f testfile
    $ sudo parted /dev/loop0 unit MiB mklabel msdos mkpart primary 1 100%FREE
    $ lsblk /dev/loop0
    NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    loop0       7:0    0  211M  0 loop 
    └─loop0p1 259:0    0  210M  0 part
    $ sudo mkfs.ext4 -L test -v /dev/loop0p1 210M
    $ sudo mount /dev/loop0p1 /mnt/temp
    $ df /mnt/temp
    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/loop0p1      202353    14    187491   1% /mnt/temp
    
  • 그런 다음 파일 시스템의 크기를 150MiB로 조정했고 귀하의 질문에 설명된 것과 유사한 상태가 되었습니다.

    $ sudo umount /mnt/temp
    $ sudo e2fsck -f /dev/loop0p1
    $ sudo resize2fs /dev/loop0p1 150M
    $ sudo mount /dev/loop0p1 /mnt/temp
    $ df /mnt/temp
    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/loop0p1      144716  1550    132414   2% /mnt/temp
    $ sudo umount /mnt/temp
    
  • 이제 파티션에서 호스팅하는 파일 시스템의 현재 크기를 기반으로 파티션의 대상 크기를 얻습니다.

    $ sudo dumpe2fs -h /dev/loop0p1
    

    또는

    $ sudo tune2fs -l /dev/loop0p1
    

    관련 라인은 다음과 같습니다:

    Block count:              153600
    First block:              1
    Block size:               1024
    

    다음과 같이 새 파티션 크기를 바이트 단위로 계산할 수 있습니다.

    153600 * 1024 = 157286400
    

    그런 다음 파티션의 현재 시작 바이트가 필요합니다(아직 모르는 척).

    $ sudo parted /dev/loop0 unit b print
    Number  Start     End         Size        Type     File system  Flags
     1      1048576B  221249535B  220200960B  primary  ext4
    

    이제 우리는 새 파티션이 바이트 1048576에서 시작하고 바이트에서 끝날 것이라는 것을 알고 있습니다.

    1048576 + 157286400 -1 = 158334975
    

    계산 은 parted0부터 시작하고 포함 범위를 사용하므로 끝 바이트를 계산하려면 파티션 크기에서 1바이트를 빼야 합니다.

    이제 파티션을 다시 생성하고 결과를 확인할 수 있습니다.

    $ sudo parted /dev/loop0 unit b rm 1 mkpart primary 1048576 158334975
    $ lsblk /dev/loop0
    NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    loop0       7:0    0  211M  0 loop 
    └─loop0p1 259:0    0  150M  0 part
    

    sudo e2fsck -f /dev/loop0p1파티션을 너무 많이 축소한 경우 다시 실행하면 경고가 표시되므로 파일 시스템이 손상되기 전에 복구할 수 있습니다.

답변2


 fs를 축소한 후에는 새 파티션 크기를 계산하고 파티션 테이블의 크기를 조정해야 한다는 것을 알고 있습니다 .
 mbr/gpt 파티션 테이블도 있습니다..


명령줄 성향이 없다면 GUI에서 간단하게 수행할 수 있습니다.

그놈 디스크 유틸리티

gnome-disk-unitily_resize.png

갈라진

gparted_resize.png


특히, gpartedfs 크기도 표시됩니다(부품 크기와 같지 않은 경우).

gparted_info

관련 정보