gpt4 book ai didi

linux - 在实时挂载系统上调整根分区大小的解决方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:31 25 4
gpt4 key购买 nike

我正在编写一个 Chef 配方,以在现有系统上自动设置软件 RAID 1。基本流程是:

  1. 清除新磁盘(/dev/sdb)上的分区表
  2. 添加新分区,然后使用 parted 设置为 raid(sdb1 用于/boot,sdb2 与 LVM 用于/)
  3. 使用 mdadm --create ... missing 使用/dev/sdb 创建降级的 RAID
  4. pvcreate/dev/md1 && vgextend VolGroup/dev/md1
  5. pvmove/dev/sda2/dev/md1
  6. vgreduce VolGroup/dev/sda2 && pvremove/dev/sda2
  7. ...
  8. ...

我坚持不。 5. 对于 2 个相同大小的磁盘,我总是会出错:
可用空间不足:需要 10114 个盘区,但只有 10106 个盘区可用
无法为 pvmove0 分配镜像盘区。
无法将 pvmove LV 转换为镜像

我认为这是因为当我执行 mdadm --create 时,它​​会向磁盘添加额外信息,因此它的物理范围略小。

要解决此问题,通常会从实时发行版重新启动系统,并且:

  • e2fsck -f/dev/VolGroup/lv_root
  • lvreduce -L -0.5G --resizefs ...
  • pvresize --setphysicalvolumesize ...G/dev/sda2
  • 等等等等
  • 重启

并继续第 1 步。 5 以上。

我不能用 Chef 做到这一点,因为它无法处理重新启动到实时发行版并从中断处继续的问题。我知道这显然不是幂等的。

因此,我的要求是能够在不使用实时发行版 CD 的情况下(以某种方式)在实时系统上进行 lvreduce。

有人对如何实现这一目标有任何想法吗?

也许吧?

  • 以 root 身份挂载远程文件系统并在别处重新挂载当前 root
  • 将根文件系统重新挂载为只读(但我不知道这怎么可能,因为您一开始就无法卸载实时系统)。
  • 或者另一种解决方案以某种方式重新启动到实时发行版,编写调整大小的脚本并重新启动并继续 Chef 运行(不确定这是否可行

想法?

最佳答案

我不太确定 chef 是正确的工具。

不是确定的解决方案,但我会为这种情况做些什么:

  1. 使用 Chef 和 Recipe 创建实时系统
  2. 以此启动
  3. 以 chef-solo 的方式运行 chef,并根据菜谱进行工作(这应该在首先卸载物理磁盘时起作用)

最好的方法是编写 Recipe ,以便能够从头开始重做目标框,完成后,您可以在系统安装时使用正确的分区完全重新安装目标,然后让 Chef 重建您的应用程序堆栈。

关于linux - 在实时挂载系统上调整根分区大小的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com