/home
파티션의 파일 시스템을 축소하는 방법은 다음과 같습니다.
e2fsck /dev/sda1
resize2fs /dev/sda1 150G
현재 실행해보면 df
파티션이 210G에서 150G로 축소된 것으로 나옵니다.잘못된).
파일 시스템 크기만 줄였으니 fdisk
파티션 크기를 어떻게 사용하거나 줄일 수 있나요 parted
?
답변1
첫째, 일반적인 경고: 데이터를 백업하십시오. 파티션과 파일 시스템의 크기를 조정하는 것은 결코 100% 안전한 작업이 아닙니다.
GParted와 함께 그래픽 환경을 사용할 수 있는 경우 가장 간단한 솔루션은 다음과 같습니다.
/dev/sda1
파티션을 포함하는 파일 시스템의 크기로 다시 늘립니다. 파티션을 마우스 오른쪽 버튼으로 클릭하고 "검사"를 선택한 다음 모든 작업을 적용합니다.파티션을 원하는 크기로 축소합니다. 파티션을 마우스 오른쪽 버튼으로 클릭하고 "크기 조정/이동"을 선택한 다음 원하는 "새 크기"를 설정하고 모든 작업을 확인 및 적용합니다. 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
계산 은
parted
0부터 시작하고 포함 범위를 사용하므로 끝 바이트를 계산하려면 파티션 크기에서 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
파티션을 너무 많이 축소한 경우 다시 실행하면 경고가 표시되므로 파일 시스템이 손상되기 전에 복구할 수 있습니다.