스크립트를 통해 parted를 사용하여 논리 볼륨 확장

스크립트를 통해 parted를 사용하여 논리 볼륨 확장

스크립트를 통해 논리 볼륨을 확장하고 싶습니다.

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

그럼 다시 시작하면 될 것 같은데요, 아니면 다른 명령을 실행해야 합니까?

감사합니다!

관련 정보