119GB 하드 드라이브에서 Preseed 파일을 실행하려고 하는데 공간이 부족한 것 같습니다. 기본적으로 내가 하고 싶은 일은 다음과 같습니다.
/dev/sda1 ext4 mountpoint /boot size 512MB
/dev/sda2 lvm into vg1 size 40GB
/dev/sda3 lvm into vg2 size 70GB
각 볼륨 그룹의 논리 볼륨 수.
제가 겪은 문제는 다음과 같습니다.
물리적 파티션, VG 및 LV를 생성할 때 사전 설정은 정확히 어떻게 작동합니까?
전문적인 레시피가 필요하다고 하는데 147930 MB
, 가능한 것만 가지고 있습니다 119453 MB
. 수동으로 파티션을 나누면 디스크 공간이 충분하고 여유 공간도 남습니다!
논리 볼륨을 생성할 때 이러한 논리 볼륨의 공간이 자신이 생성한 볼륨 그룹에서 할당될 것이라는 사실을 모르십니까? /dev/sda에서 직접 LV에 여유 공간을 할당합니까? 그렇다면 각 VG에서 할당하도록 어떻게 알릴 수 있습니까?
전문가의 비법은 다음과 같습니다.
d-i partman-auto/expert_recipe recipe1 :: \
511 512 512 ext4 \
$primary{ } \
$bootable{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
device{ /dev/sda1 } \
mountpoint{ /boot } . \
39999 40000 40000 ext4 \
$primary{ } \
method{ lvm } \
device{ /dev/sda2 } \
vg_name{ rootvg } . \
69999 70000 70000 ext4 \
$primary{ } \
method{ lvm } \
device{ /dev/sda3 } \
vg_name{ infravg } . \
100 1 100000 ext4 \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ /part1 } . \
5999 1 6000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ var_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /var } . \
3999 1 4000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ usr_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /usr } . \
4999 1 5000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ root_lv } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ / } . \
1999 1 2000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ home_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /home } . \
4999 1 5000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ tmp_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /tmp } . \
8000 1 8000 linux-swap \
$lvmok{ } in_vg{ rootvg } \
lv_name{ swap } \
method{ swap } format{ } . \
999 1 1000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ opt_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /opt } . \
128 1 128 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ system_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /system } . \
100 1 100000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ free1_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /part2 } . \
1000 1 1024 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ chef_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /opt/chef } . \
4999 1 5000 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ images_lv } 5000 \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /images } . \
100 1 1000000 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ free2_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /part3 } \
.
답변1
그래서 몇 가지 조사(인터넷 검색 4, 5페이지!) 후에 partman/preseed가 전체 크기를 모든 파티션 크기의 합으로 계산한다는 내용을 읽었지만(그리고 이것이 사실이라고 확신합니다) 그러나 사실은 그렇지 않습니다. LV 파티션이 VG의 일부인지 여부는 중요하지 않습니다.
최대 크기 숫자를 추가하면 실제로 ~147000MB를 얻습니다. 그렇다면 이 문제를 해결하기 위해 내가 무엇을 했나요? 우선, 프로필에 있는 파티션의 최소 크기를 최대 크기의 1/4 또는 1/2로 줄인 다음 모든 우선순위를 최대 크기보다 크거나 같게 설정했습니다(찾을 수 있음).여기그리고여기이와 관련된 추가 정보)
이를 통해 partman/preseed는 크기가 잘못되었더라도 모든 파티션을 성공적으로 생성할 수 있습니다.
올바른 크기를 얻기 위해 모든 논리 볼륨의 크기를 올바른 크기로 조정하는 Late_command 스크립트를 추가했습니다.
또한 수동으로 파티셔닝을 수행할 때 남은 여유 공간을 보존하기 위해 더미 파티션을 생성하고 나중에 동일한 Late_command 스크립트에서 삭제했습니다.
이것이 정통적이지 않다는 것은 알지만 이것이 preseed/partman으로 작업할 수 있는 유일한 방법입니다.
이는 분할 방법이기도 합니다.
d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name string rootvg
d-i partman-auto-lvm/guided_size string 34%
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name string infravg
d-i partman-auto-lvm/guided_size string 60%
d-i partman-auto/choose_recipe select diod
d-i partman-auto/expert_recipe diod :: \
511 512 512 ext4 \
$primary{ } \
$bootable{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
device{ /dev/sda1 } \
mountpoint{ /boot } . \
39999 40000 40000 ext4 \
$primary{ } \
method{ lvm } \
device{ /dev/sda2 } \
vg_name{ rootvg } . \
69999 70000 70000 ext4 \
$primary{ } \
method{ lvm } \
device{ /dev/sda3 } \
vg_name{ infravg } . \
100 1000 -1 ext4 \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ /part1 } . \
128 1000 128 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ system_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /system } . \
100 1500 1000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ opt_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /opt } . \
100 2500 2000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ home_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /home } . \
100 4500 4000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ usr_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /usr } . \
100 6000 5000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ root_lv } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ / } . \
100 5500 5000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ tmp_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /tmp } . \
100 6500 6000 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ var_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /var } . \
100 7500 8000 linux-swap \
$lvmok{ } in_vg{ rootvg } \
lv_name{ swap } \
method{ swap } format{ } . \
100 1000 -1 ext4 \
$lvmok{ } in_vg{ rootvg } \
lv_name{ free1_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /part2 } . \
100 2000 1024 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ chef_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /opt/chef } . \
100 4000 5000 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ images_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /images } . \
100 1000 -1 ext4 \
$lvmok{ } in_vg{ infravg } \
lv_name{ free2_lv } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /part3 } \
.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true