Kickstart clearpart在RHEL CentOS 7中不起作用

时间:2020-01-09 10:41:08  来源:igfitidea点击:

在执行全新安装之前,我们在RHEL/CentOS 7/8 Linux中使用kickstart命令clearpart来清除分区标签。
在我们的一种情况下,Kickstartclearpart不起作用,并且无法从节点中删除现有分区。

在本文中,将介绍解决此情况下有效的" Kickstartclearpart无法正常工作"的解决方案。
尽管它可能对我们不起作用,但请让我知道是否有其他解决方案对环境有效。

问题:Kickstart clearpart无法正常工作

在kickstart文件中,我们使用clearpart命令擦除一些或者所有现有分区

在某些情况下,由于kickstart安装失败,因此无法删除现有分区时,会看到Kickstartclearpart无法正常工作的问题。

clearpart支持以下选项

  • --all-从系统中删除所有分区。

  • --drives =-指定要从中清除分区的驱动器

  • --initlabel-通过为各自的体系结构中已指定用于格式化的所有磁盘创建默认磁盘标签来初始化一个或者多个磁盘

  • --list =-指定要清除的分区。

  • --linux-擦除所有Linux分区。

  • --- none(默认)-不删除任何分区。

  • --cdl-将所有LDL DASD格式化为CDL格式。

  • --disklabel = LABEL-设置要使用的默认disklabel。

解决方案:Kickstart clearpart无法正常工作

分区可能仍在使用,这就是为什么clearpart无法删除分区的原因。
作为解决方案,我们将编写一个%pre脚本来手动删除所有现有分区,清除所有分区和文件系统标签,删除所有RAID设备

以下是我的示例%pre脚本,用于修复kickstart clearpart无法正常工作的问题。

%pre
udevadm settle
dmsetup remove_all
# De-activate any exiting Volume Groups
vgchange -an system
vgchange -an os
# Clear software raid devices if any
raid_devices=$(mktemp /tmp/mdstat.XXXXXXXXX)
cat /proc/mdstat | grep ^md | cut -d : -f 1 > $raid_devices
if [ -s $raid_devices ];then
   for raid in `cat $raid_devices`;do
       wipefs -f -a /dev/$raid
       mdadm --stop -f /dev/$raid
       if [ $? != "0" ];then
          udevadm settle
          dmsetup remove_all
          mdadm --stop -f /dev/$raid
       fi
   done
else
   echo "All raid devices are cleared"
fi
rm -vf $raid_devices
# Wipe any partitions if found
available_disks=$(mktemp /tmp/disks.XXXXXXXXX)
ls -r /dev/sd* > $available_disks
for disk in `cat $available_disks`;do
   wipefs -f -a $disk
done
rm -vf $available_disks
%end

我们可以修改此%pre脚本,以识别和删除Linux环境中的文件系统以及更多分区。

因此,我们将不依赖于clearpart来删除现有分区。