배치 모드에서 parted를 사용하여 할당되지 않은 모든 공간을 사용하도록 마지막 파티션을 자동 확장


20

간단히 말해서, 부팅 (내장 시스템) 시이 작업을 모두 자동으로 수행해야합니다.

Google 엔지니어가 이미지를 프로덕션 장치로 플래시합니다. 이 이미지에는 작은 파티션 테이블이 포함됩니다. 부팅시 디스크에서 사용 가능한 모든 공간을 사용하려면 마지막 파티션 (# 3)을 자동으로 확장해야합니다.

디스크의 여유 공간을 보면 얻을 수있는 내용은 다음과 같습니다.

> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  25.3MB  24.2MB  fat16        primary  legacy_boot
        25.3MB  26.2MB  922kB   Free Space
 2      26.2MB  475MB   449MB   ext4         primary
 3      475MB   1549MB  1074MB  ext4         primary
        1549MB  32.0GB  30.5GB  Free Space

N (30.5GB) 바이트 수만큼 파티션 3을 확장해야합니다.

프롬프트없이이 단계를 자동으로 수행하려면 어떻게합니까? 이는 세 번째 파티션 이후에 사용 가능한 동적 크기의 공간에서 작동해야합니다.


시도하지 않고 준비된 스크립트를받을 것으로 기대하지 마십시오! 지금까지 무엇을 시도했는지 보여 주실 수 있습니까? 크기 조정중인 파티션을 작업 중에 마운트하면 안됩니다 ....
Luciano Andress Martini

나는 resizepart명령 을 시도했지만 작동하지만 정확한 크기가 필요합니다. 나는 역동적이어야합니다.
Paul Knopf

resize2fs내가 찾고있는 것일 수도 있습니다. linux.die.net/man/8/resize2fs
Paul Knopf

답변:


21

현재 버전에서 parted, resizepart파티션 (작동해야 parted이해 100%나 같은 것들 -1s후자 또한 필요는 --설명 할 cmdline에 옵션을 구문 분석 중지). 당신이 사용할 수있는 정확한 값을 확인하려면 unit s, print free. resize2fs파일 시스템을 위해 나중에 온다.


이전 버전의 파티션과 파일 시스템을 한 번에 크기를 조정 parted하는 resize명령이 있었지만 심지어 작동했습니다 vfat.

Kobo ereader 수정에서 나는 이것을 사용하여 내부 메모리의 세 번째 파티션을 최대 크기로 조정했습니다.

start=$(cat /sys/block/mmcblk0/mmcblk0p3/start)
end=$(($start+$(cat /sys/block/mmcblk0/mmcblk0p3/size)))
newend=$(($(cat /sys/block/mmcblk0/size)-8))

if [ "$newend" -gt "$end" ]
then
    parted -s /dev/mmcblk0 unit s resize 3 $start $newend
fi

따라서 /sys/block/.../커널이 지원하는 경우 값을 얻을 수도 있습니다 . 그러나 parted제거 된 resize당신은 지금이 단계를 수행 할 수 있도록 명령을 resizepart파티션을 성장하고, 어떤 도구는 파일 시스템과 같이, 그 성장 제공 resize2fs을위한 ext*.


이것이 바로 내가 찾던 것입니다. 당신의 도움을 주셔서 감사합니다!
Paul Knopf

사이드 질문, 끝에 8 바이트는 무엇입니까?
Paul Knopf

단일 섹터로 크기를 조정하지 마십시오. -40 또는 다른 것으로 변경해야합니다 (디스크 끝의 GPT 백업 헤더).
frostschutz

않는 parted명령 줄에서 자동 확장 기능을 지원하지? 때문에, 그것은 않는 대화를 지원합니다. 대화식으로 실행하는 경우 디스크 크기 (유형 fix) 와 일치하도록 GPT 파티션 테이블을 수정할지 묻는 메시지 가 표시 resizepart 3 -1됩니다. 나는 커맨드 라인에서 그것을 얻는 방법을 알아 내려고 노력했다.
Harvey

그렇게 빠르지 않음 : resize 명령이 3.0 부분에서 제거되었습니다. sfdisk 또는 gparted를 시도하십시오.
GregD

16

파티션을 올바르게 스크립트 할 수 없기 때문에 (파티션이 마운트 되었기 때문에 확인을 요청했으며 이해하지 못한 다른 답변과 반대로 -1s또는 확인하지 못했습니다 100%), 정확히이를 수행 하는 growpart 도구 를 찾았 습니다 .

사용법은 간단합니다 growpart /dev/sda 3(그리고 resize2fs /dev/sda3, 또는 사용 된 파일 시스템 유형에 대한 다른 적절한 명령).

데비안과 우분투에서는 cloud-guest-utils 로 패키지되어 있습니다.


1
이것이 내가 지금 이것을 찾을 수있는 가장 편리한 방법입니다. 훌륭하게 작동했습니다.
SebiF

이것은 나를위한 해결책이었습니다 – 파일 시스템으로서 ext4를 좋아하지 않았으며, 파일 시스템의 크기 조정을 시도하는 것을 피할 방법이없는 것 같습니다 ...
Antti Haapala

Ubuntu 18.04에서 작동하지 않음
DreamFlasher

@DreamFlasher 왜 작동하지 않는지 알 수 없습니다. 내가 알 수있는 한 cloud-guest-utils 패키지를 설치할 수 있으며 이것이 growpart에서 제공하는 유일한 기능이므로 버그가 없거나 올바르게 사용되지 않거나 제어 할 수없는 것이 잘못되지 않으면 작동해야합니다. 마지막 인수 (예에서 3)는 크기를 조정할 파티션이며 1부터 계산되며 파티션 바로 다음에 크기를 조정할 수 있도록 충분한 공간을 확보해야합니다.
Ivo는

7

이를 수행하는 올바른 방법은 parted에 백분율 개념이 있다는 사실을 사용하는 것입니다. 그래서

parted /dev/sda resize 3 100%

1
구식, Ubuntu 18.04 이상에서 작동하지 않음
DreamFlasher

resize 명령이 parted 버전 3과 함께 사라 졌으므로 이제 resizepart 명령을 사용한 다음 사용중인 기본 파일 시스템 또는 PV의 크기를 별도로 조정해야합니다. ext4의 경우 명령은 resize2fs이거나 XFS의 경우 xfs_growfs입니다. 둘 다 일반적으로 파일 시스템이 마운트 될 때 수행되며 인수는 두 경우 모두 마운트 지점입니다.
Jonathan Buzzard

0

우분투 18.04에서는 다음과 같이 스크립트에서 할당되지 않은 공간을 채우기 위해 크기를 조정할 수 있습니다.

sudo parted -s /dev/sdb "resizepart 2 -1" quit
sudo mount -av
sudo umount /dev/sdb2
sudo mount /dev/sdb2 /mnt
sudo resize2fs /dev/sdb2

크기를 조정하기 전에 마운트하지 않아도됩니다. 사용자 입력을 위해 resize2fs의 쿼리를 억제하기 위해 수행했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.