使用Preseed file分割LVM時,
並無法做到只使用某部分的VG就好,
舉例來說,假設你有一個100G的硬碟,
然後preseed file如下,
d-i partman-auto/expert_recipe string \
boot-root :: \
20480 10 20480 ext4 \
$lvmok{} lv_name{ root } $defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
. \
20480 10 20480 ext4 \
$lvmok{ } lv_name{ log } $defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /var/log } \
我們分別給每個lv的大小為:
root
: 20Glog
: 20G
你可能會以為,剩下的60G不會被加到LV裡面,
但其實剩下的60G會通通被放到log裡面去。
不過有比較tricky的解法,可以參考下面的Preseed file,
我們多增加了一個LV,叫做to_be_free
,
然後把所有的free space都指派給to_be_free
,
最後在late_command
裡,用lvremove
把to_be_free
砍掉,
這樣就可以做到把某部分space歸還了。
d-i partman-auto/expert_recipe string \
boot-root :: \
20480 10 20480 ext4 \
$lvmok{} lv_name{ root } $defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
. \
20480 10 20480 ext4 \
$lvmok{ } lv_name{ log } $defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /var/log } \
. \
1 10 -1 ext4 \
$lvmok{ } lv_name{ to_be_free } $defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /to_be_free } \
d-i preseed/late_command string \
umount /target/to_be_free/ ; \
lvremove -f /dev/*/*to_be_free > /dev/null 2>&1 ; \
sed -i '/to_be_free/d' /target/etc/fstab ; \