2015-03-02 22 views
1

我正在寫一個廚師食譜來自動設置現有系統上的軟件RAID 1。其基本做法是:解決方案調整實時安裝的系統上的根分區

  1. 新磁盤清除分區表(的/ dev/sdb的)
  2. 添加新的分區,並設置然後使用parted的(SDB1的/ boot和sdb2使用LVM爲/)襲擊
  3. 創建使用的mdadm --create ...的/ dev/sdb的缺失
  4. 使用pvcreate的/ dev/MD1 & & vgextend將VolGroup的/ dev/MD1
  5. pvmove的的/ dev/sda2中的/ dev/MD1
  6. 降級的RAID
  7. vgreduce VolGroup/dev/s DA2 & & pvremove的/ dev/sda2上
  8. ...
  9. ...

我卡上沒有。 5.用同樣大小的2盤我總是得到一個錯誤: Insufficient free space: 10114 extents needed, but only 10106 available Unable to allocate mirror extents for pvmove0. Failed to convert pvmove LV to mirrored

我想這是因爲當我做的mdadm --create,它增加了額外的信息到磁盤所以它有略少的物理盤。

爲了解決這個問題,人們通常會重新啓動系統掀起了現場發行和:

  • e2fsck的-f的/ dev/VolGroup /即lv_root
  • lvreduce -L -0.5G --resizefs .. 。
  • pvresize --setphysicalvolumesize ... G/dev的/ SDA2
  • 等等等等
  • 重啓

並繼續步驟編號。 5以上。

我不能這樣做與廚師,因爲它不能處理重新啓動到現場發行,並繼續它停止。我明白這顯然不會是冪等的。

所以我的要求是能夠在現場系統上不使用現場發行光盤的情況下減少(以某種方式)。

任何人有任何想法如何可以完成?

也許?:

  • 掛載遠程文件系統的根目錄並重新安裝當前的根在別處
  • 重新掛載爲只讀(但我不知道那是有可能做的根文件系統,你可以不首先卸載現場系統)。
  • 或者另一種解決方案以某種方式重新引導到一個活的發行,腳本,調整大小和重新啓動返回並繼續運行廚師(不知道這是連popssible

想法?

回答

1

我很不確定的廚師是正確的工具。

沒有一個明確的解決方案,但我會爲這種情況做:

  1. 創建一個廚師的現場系統,並在此
  2. 運行廚師作爲廚師獨奏與菜譜
  3. 啓動配方做的工作(這應該作爲物理磁盤首先卸載)

最好的辦法是寫食譜,能夠從頭重做目標盒,一旦完成你c在系統安裝時重新安裝完整的目標並進行正確的分區,然後讓廚師重建應用程序堆棧。

+0

不是我一直在尋找的解決方案,但這仍然是正確的答案。 – Dru 2015-04-26 01:16:18

相關問題