在单个磁盘上使用多个 PVS 为 LVM 进行预置分区

在单个磁盘上使用多个 PVS 为 LVM 进行预置分区

我正在尝试使用预分区创建此方案:

/dev/sda:
   /dev/sda1
     ext4,/boot,500MB
   /dev/sda2
     - LVM 的 PV,130GB,VG vg00
     - 包含 LVs 根目录、交换目录...
   /dev/sda3
     - LVM 的 PV,其余磁盘
     - 没有创建 VG,只是为偶尔的 vg02 创建空的物理分区

这是我的分区模板(适用于 Foreman):

di partman-auto/method 字符串 lvm
di partman-lvm/device_remove_lvm 布尔值 true
di partman-lvm/confirm 布尔值 true
di partman-lvm/confirm_nooverwrite 布尔值 true

di partman-auto/磁盘字符串 /dev/sda
di partman-auto-lvm/guided_size 字符串最大值

di partman-auto-lvm/new_vg_name 字符串 vg00

di partman-auto/expert_recipe 字符串 \
      我的分区 :: \
              512 512 512 扩展2 \
                      $主要{ } \
                      $可启动{ } \
                      方法{ 格式 } 格式{ } \
                      use_filesystem{ } 文件系统{ ext2 } \
                      挂载点{/boot} \
              。 \
              133120 133120 133120 扩展3 \
                      $默认忽略{ } \
                      $主要{ } \
                      方法{ lvm } \
                      vg_name{ vg00 } \
              。 \
              1024 1000000000 1000000000 保持 \
                      $主要{ } \
                      $默认忽略{ } \
                      方法{ lvm } \
              。 \
              4048 4048 4048 Linux 交换 \
                      $lvmok{ } in_vg{ vg00 } \
                      lv_name{ 交换 } \
                      方法{ 交换 } 格式{ } \
              。 \
              10240 10240 10240 扩展4 \
                      $lvmok{ } in_vg{ vg00 } \
                      lv_name{ 根 } \
                      方法{ 格式 } 格式{ } \
                      use_filesystem{ } 文件系统{ ext4 } \
                      挂载点{/ } \
              。 \
              1 2048 1000000000 ext4 方法{ lvm } \
                      $lvmok{ } lv_name{ to_delete } \
                      in_vg{ vg00 } \

di partman-lvm/confirm_nooverwrite 布尔值 true
di partman-lvm/confirm 布尔值 true
di partman-partitioning/confirm_write_new_label 布尔值 true
di partman/choose_partition 选择完成
di partman/confirm_nooverwrite 布尔值 true
di partman/confirm 布尔值 true

我仍然收到此错误:

无法对选定的磁盘进行分区。
发生这种情况是因为所选的配方不包含可以在 LVM 卷上创建的任何分区。

有人能告诉我食谱中哪里出了问题吗?谢谢

答案1

我们使用的最终配方如下:

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/guided_size string max

d-i partman-auto/expert_recipe string \
  mypartitioning :: \
          1024 1024 1024 ext2                                \
                  $primary{ }                             \
                  $bootable{ }                            \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext2 }    \
                  label{ boot }                           \
                  mountpoint{ /boot }                     \
          . \
          136594 136594 136594 ext4                       \
                  $primary{ }                             \
                  method{ lvm }                           \
                  device{ /dev/sda2 }                     \
                  vg_name{ vg00 }                          \
          . \
          1 1 -1 ext4               \
                  $primary{ }                             \
                  method{ lvm }                           \
                  device{ /dev/sda3 }                     \
                  vg_name{ vg02 }                          \
          . \
          16384 16384 16384 linux-swap                       \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ swap }                         \
                  method{ swap } format{ }                \
          . \
          14336 14336 14336 ext4                          \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ root }                         \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ root }                           \
                  mountpoint{ / }                         \
          . \
          1024 1024 1024 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ home }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ home }                            \
                  mountpoint{ /home }                      \
          . \
          2048 2048 2048 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ var }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ var }                            \
                  mountpoint{ /var }                      \
          . \
          6144 6144 6144 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ log }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ log }                            \
                  mountpoint{ /var/log }                      \
          . \
          2048 2048 2048 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ audit }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ audit }                            \
                  mountpoint{ /var/log/audit }                      \
          . \
          1024 1024 1024 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ openview }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ openview }                            \
                  mountpoint{ /var/opt/OV }                      \
          . \
          1024 1024 1024 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ appl }                          \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  label{ appl }                            \
                  mountpoint{ /appl }                      \
          . \
          1 1 -1 ext4                             \
                  $lvmok{ } in_vg{ vg00 }                  \
                  lv_name{ hack }                          \
                  method{ lvm }              \
          .

d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/confirm boolean true
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

最终的分区结果如下:

root@xxxxxxxx:~ # lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    1 279.4G  0 disk 
├─sda1                8:1    1   976M  0 part /boot
├─sda2                8:2    1 127.2G  0 part 
│ ├─vg00-root       252:0    0  13.4G  0 lvm  /
│ ├─vg00-swap       252:1    0  15.3G  0 lvm  
│ ├─vg00-home       252:2    0   976M  0 lvm  /home
│ ├─vg00-var        252:3    0   1.9G  0 lvm  /var
│ ├─vg00-log        252:4    0   5.7G  0 lvm  /var/log
│ ├─vg00-audit      252:5    0   1.9G  0 lvm  /var/log/audit
│ ├─vg00-openview   252:6    0   976M  0 lvm  /var/opt/OV
│ └─vg00-appl       252:7    0   976M  0 lvm  /appl
└─sda3                8:3    1 151.2G  0 part 

root@xxxxxxxx:~ # pvs
  PV         VG   Fmt  Attr PSize   PFree 
  /dev/sda2  vg00 lvm2 a--  127.21g 86.21g
  /dev/sda3  vg02 lvm2 a--  151.20g 71.20g

安装后记中已删除 LV hack。

答案2

在我的情况下,使用您的最终配方仍然不起作用;所以我查看了 debian 11 DVD 上的原子、家庭和多配方,位于包 partman-auto_157_amd64.udeb(路径 /pool/main/p/partman-auto)中。它们都从此处的这一节开始,这似乎对我的情况有所不同:

1 1 1 free
$iflabel{ gpt }
$reusemethod{ }
method{ biosgrub } .

对于 efi 来说也是如此:

538 538 1075 free
$iflabel{ gpt }
$reusemethod{ }
method{ efi }
format{ } .

在我的配方顶部添加该部分后,它终于可以正常工作了。在线、github 或其他平台上共享的大多数配方都没有此部分,因此我的配方在部署期间被忽略了。

相关内容