前兩天想練習 LVM,所以試著在既有的 RHEL VM 裡加磁碟,但是事情沒有想的那麼簡單。原本以為就是照 Vagrant Disk Usage 文件的說明,在 Vagrantfile 裡加入
config.vm.disk :disk, size: "100GB"
就可以,但這樣不行,vagrant reload 以後,並沒有磁碟出現。
上網找解決方法,找到這篇:Add a second disk to system using vagrant
才知道是要用 provider 的 customize() 去建立磁碟並加載才行 (參考資料:Add a second disk to system using vagrant):
tower.vm.provider "virtualbox" do |v|
file_to_disk1 = "mydisk1.vmdk"
unless File.exist?(file_to_disk1)
v.customize [
"createmedium", "disk", "--filename", file_to_disk1, "--format", "vmdk", "--size", 1024 * 1
]
end
file_to_disk2 = "mydisk2.vmdk"
unless File.exist?(file_to_disk2)
v.customize [
"createmedium", "disk", "--filename", file_to_disk2, "--format", "vmdk", "--size", 1024 * 1
]
end
v.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk1]
v.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 2, '--device', 0, '--type', 'hdd', '--medium', file_to_disk2]
end
在建立前,先使用 File.exists? 去做檢查磁碟映像檔是否存在,不存在,就呼叫 createmedium 來建立。接著再用 storageattach 加載到 VM 上就可以了。
如果有錯誤訊息,說沒有 SATA Controller,請開啟 VirtualBox 去看該 VM 是不是有 SATA Controller。
參考資料:
沒有留言:
張貼留言