发布于2026-07-18 阅读(0)
扫一扫,手机访问
通过 Cobbler 管理磁盘分区的实践指南

说到 Cobbler 管理分区,其实核心思路并不复杂:安装器的磁盘分区策略,说白了就是由 Kickstart(RHEL/CentOS)或 preseed(Debian/Ubuntu)模板来驱动的。常见的做法是,在 profile 或 system 级别为不同机型、不同磁盘规格维护多套分区模板,然后通过变量拆分公共片段,必要时再在 %pre 或 %post 阶段做些补丁工作。
那么,具体操作中有哪些关键点?
clearpart --all --initlabel 把磁盘清理干净,这是第一步。part 命令指定 /boot、/、swap、biosboot 等分区,同时可控制文件系统类型、大小以及是否允许增长。autopart 让安装器帮你搞定一切。raid.XX 分区,然后通过 raid 指令组装成 md 设备。biosboot 分区;UEFI 则需要一个 --fstype=efi 的 EFI 分区,大小通常在 200M 到 500M 之间。# 清盘并初始化卷标
clearpart --all --initlabel
# 引导分区(BIOS)
part biosboot --fstype=biosboot --size=1
# 启动分区
part /boot --fstype=ext4 --size=1024
# 根分区(示例 40GB)
part / --fstype=ext4 --size=40960
# 交换分区(示例 8GB)
part swap --fstype=swap --size=8192
clearpart --all --initlabel
part /boot --fstype=ext4 --size=1024
part pv.01 --fstype=lvmpv --grow --ondisk=sda
volgroup vg_root pv.01
logvol / --vgname=vg_root --size=30G --name=lv_root
logvol swap --vgname=vg_root --size=8G --name=lv_swap
logvol /data --vgname=vg_root --size=1 --grow --name=lv_data
clearpart --all --initlabel
part raid.01 --fstype=raid --grow --ondisk=sda --size=1
part raid.02 --fstype=raid --grow --ondisk=sdb --size=1
part raid.03 --fstype=raid --grow --ondisk=sdc --size=1
part raid.04 --fstype=raid --grow --ondisk=sdd --size=1
part raid.05 --fstype=raid --grow --ondisk=sde --size=1
raid / --device=md0 --fstype=ext4 --level=5 raid.01 raid.02 raid.03 raid.04 raid.05
autopart 代替手工逐条定义,省时省力。$SNIPPET('xxx'),挺方便的。这种方式最适合快速交付和通用场景:安装器会自动创建一个约 250M 的 /boot 分区,然后创建一个约 10G 的卷组,swap 分区大小接近内存大小,剩下的空间全部给 /。
# 磁盘与分区
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
# 引导分区(MBR)
d-i partman-auto/expert_recipe string \
boot-root ::
256 256 256 ext2 \
$primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext2 } \
mountpoint{ /boot } .
10240 10240 10240 ext4 \
$lvmok{ } lv_name{ lv_root } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } .
512 512 512 linux-swap \
$lvmok{ } lv_name{ lv_swap } \
method{ swap } format{ } .
5120 5120 5120 ext4 \
$lvmok{ } lv_name{ lv_www } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /www } .
d-i partman-auto/choose_recipe select boot-root
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/choose_partition finish
d-i partman/confirm finish
简单说:原子模式适合“开箱即用”,而手工模式则对 /boot、/、swap、/data 等分区的大小有明确规划的场景。
这里有两个地方需要特别留心。
--grow 去填满超过 16TB 的磁盘,可能会出现“只能用到 16TB”或者格式化异常的情况。建议优先使用 XFS,或者在装机完成后对数据盘重新分区/格式化,避免安装阶段触发 ext4 的限制。安装完系统后,如果还有未用上的硬盘,完全可以在 %post 阶段自动完成分区、格式化和挂载。下面给一个示例脚本的思路:
%post
NUM=01
for DEVICE in $(awk '$NF ~ /sd/ && $NF !~ /[0-9]$/ {print $NF}' /proc/partitions | sort); do
DEVICE="/dev/$DEVICE"
# 跳过已挂载或已用作 swap 的设备
[[ -b ${DEVICE}1 ]] && FSTYPE=$(parted -s ${DEVICE}1 print 2>/dev/null | awk '/^ / {print $5}')
if [[ $FSTYPE == "swap" ]]; then continue; fi
LABEL="hadoop${NUM}"
if ! e2label ${DEVICE}1 2>/dev/null; then
parted -s $DEVICE mklabel gpt
parted -s $DEVICE mkpart primary ext4 0% 100%
partprobe; sleep 3
mkfs.ext4 -q -L "$LABEL" ${DEVICE}1
else
e2label ${DEVICE}1 "$LABEL"
fi
grep -q "LABEL=$LABEL" /etc/fstab || \
echo "LABEL=$LABEL /$LABEL ext4 defaults,noatime,nodiratime 0 0" >>/etc/fstab
mkdir -p "/$LABEL"
NUM=$(printf "%02d" $((10#$NUM + 1)))
done
%end
这个脚本可以批量初始化类似 /data01、/data02 的数据盘。当然,你也可以按需改成 xfs、调整挂载选项,甚至后续用 systemd mount 单元或 Ansible 来做更灵活的编排。
下一篇:如何利用kill命令处理僵尸进程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8