스크립트를 통해 논리 볼륨을 확장하고 싶습니다.
10GB 하드 드라이브가 있는 가상 머신을 만들기 전에는 하드 드라이브를 5GB 늘려 총 15GB를 갖게 되었습니다. 다음과 같이 하드 드라이브를 확장하는 명령을 수동으로 실행했습니다.
sudo parted /dev/sda
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 8388608 blocks) or continue with the current setting?
Fix/Ignore? fix
Partition number? 3
End? [17.2GB]? 100%FREE
Information: You may need to update /etc/fstab.
sudo pvresize /dev/sda3
sudo lvresize --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv
test-vm:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 447M 0 447M 0% /dev
tmpfs 99M 1.1M 98M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 8.8G 4.6G 3.8G 55% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/sda2 976M 106M 804M 12% /boot
/dev/loop1 72M 72M 0 100% /snap/lxd/16099
/dev/loop2 68M 68M 0 100% /snap/lxd/21835
/dev/loop3 44M 44M 0 100% /snap/snapd/14295
/dev/loop4 56M 56M 0 100% /snap/core18/2253
/dev/loop5 62M 62M 0 100% /snap/core20/1270
tmpfs 99M 0 99M 0% /run/user/1000
/dev/loop7 56M 56M 0 100% /snap/core18/2284
/dev/loop8 44M 44M 0 100% /snap/snapd/14549
/dev/mapper/ubuntu--vg-ubuntu--lv에 5GB를 추가합니다.
위의 내용을 다음과 같은 스크립트로 실행하고 싶습니다.
#!/bin/bash
sudo parted -s /dev/sda 'resizepart 3 100%'
sudo pvresize /dev/sda3
sudo lvresize --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv
hdd.sh라는 위의 스크립트를 실행하면 다음과 같은 출력이 표시됩니다.
test-vm:~ ./hdd.sh
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 10485760 blocks) or continue with the current setting?
Error: Unable to satisfy all constraints on the partition.
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Size of logical volume ubuntu-vg/ubuntu-lv unchanged from <9.00 GiB (2303 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.45.5 (07-Jan-2020)
The filesystem is already 2358272 (4k) blocks long. Nothing to do!
따라서 스크립트에서 "fix" 입력을 제공할 수 없기 때문에 첫 번째 parted 명령을 실행할 수 없습니다. 다음을 시도하십시오. sudo parted -s /dev/sda resizepart 3 Fix '100%'
내 목표는 스크립트를 통해 논리 볼륨을 확장하는 것입니다. 어떤 의견이라도 높이 평가됩니다!
감사해요!
답변1
parted
이 극단적인 경우를 스크립트에서 처리할 수 있는지 확실하지 않습니다 (파티션 테이블을 처음부터 다시 생성하지 않고).
불행하게도 parted
이것은 먼저 대화형 프로그램이고 두 번째로 스크립트 가능한 프로그램입니다.
sgdisk --move-second-header
대신 사용하고 계속할 수 있습니다 parted
(또는 sgdisk
원하는 경우 모든 것을 스크립트로 작성할 수 있지만 sgdisk
에 해당하는 것은 없다고 생각합니다 resizepart
).
답변2
귀하의 의견에 감사드립니다.
언급한 대로 sgdisk를 추가했는데 스크립트는 다음과 같습니다.
#!/bin/bash
sudo sgdisk --move-second-header /dev/sda
sudo parted -s /dev/sda 'resizepart 3 100%'
sudo pvresize /dev/sda3
sudo lvresize --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv
위 스크립트의 출력:
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.00 GiB (2303 extents) to <14.00 GiB (3583 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 3668992 (4k) blocks long.
위 명령을 실행한 후 df -hi가 표시되면 5GB가 추가된 것을 볼 수 있습니다(/dev/mapper/ubuntu--vg-ubuntu--lv).
Filesystem Size Used Avail Use% Mounted on
udev 447M 0 447M 0% /dev
tmpfs 99M 1.1M 98M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 14G 4.6G 8.5G 36% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/sda2 976M 106M 804M 12% /boot
/dev/loop1 72M 72M 0 100% /snap/lxd/16099
/dev/loop2 68M 68M 0 100% /snap/lxd/21835
/dev/loop3 44M 44M 0 100% /snap/snapd/14295
/dev/loop4 56M 56M 0 100% /snap/core18/2253
/dev/loop5 62M 62M 0 100% /snap/core20/1270
tmpfs 99M 0 99M 0% /run/user/1000
/dev/loop7 56M 56M 0 100% /snap/core18/2284
/dev/loop8 44M 44M 0 100% /snap/snapd/14549
그럼 다시 시작하면 될 것 같은데요, 아니면 다른 명령을 실행해야 합니까?
감사합니다!