VirtualBox
參考:http://meslick.blogspot.tw/2012/05/vmdkhost.html
參考:https://www.virtualbox.org/manual/ch09.html#rawdisk
指令:
- 使用整顆實體硬碟
- Command in Linux host:
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
所創建的這個 image( /path/to/file.vmdk) (必須是絕對路徑), 而且對 /dev/sda 可以讀寫所有的資料 - 在Windows host 則為:
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk \\.\PhysicalDrive0
sda 及 PhysicalDrive0 皆為磁碟機名稱
Windows下:由磁碟管理工具,下方欄位的磁碟0、磁碟1,對應為 PhysicalDrive0、PhysicalDrive1,需用系統管理員身分打開命令提示字元和VirtualBox,並切換至安裝資料夾來下指令。
ps:連結整個硬碟
vmdk掛載至guest系統之後,guest可對此虛擬磁碟機作完整存取,甚至是重新分割磁區,所以要特別注意。
- Command in Linux host:
- 使用實體硬碟中的某些分割區
連結至實體硬碟其中的分割區
在上述命令最後加上 -partitions 1 ,表示該磁碟機的第一個磁區(分割區)
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5
(這個例子表示建立一個可以存取 /dev/sda 第1和第5個分割區的映像檔)
VBoxManage
VirtualBox和您的Linux主機使用相同的分區編號。
- 實作問題:
使用vmdk方式連結至host實體硬碟
有掛載實體硬碟的虛擬機器無法由實體機關機後重新開機,
必需由實體機重開機才能自動開啟虛擬機器
- 解決方法:
注意,請在實體機上的 /etc/rc.local 及 cron
寫上 /bin/chmod 777 /dev/sdd <==注意,是 sdd ,不是 sdd1 或 sdd2 , 也不能寫 sdd*
這樣, virtualbox 才能掛載這個 .vmdk
sudo chmod a+rw /dev/sdd (可掛載,但虛擬機器無法開機) =>實體硬碟
sudo chmod 777 /dev/sdd (可掛載,且虛擬機器可以開機)
- 103.02.09 ->發現問題
有時重開機後,實體機上出現無法存取虛擬機所使用的實體硬碟:
所以,上面的方法無法真正解決虛擬機掛載實體硬碟的問題
=>將該實體機上的虛擬機的 實體硬碟的 .vmdk 移除(不是刪除,只是移除設定,也就是以智慧寶劍,斷開連結),
存檔,再重新加入 .vmdk ,存檔,啟動
=>出現 fsck 選項(看不懂的符號) => 按 c, 再按 i (f,i,c,m四個選項)
=>開機完成,可以抓得到實體硬碟
暫時可以啟動 虛擬機
- 103.02.20
發現在 虛擬機裡
/etc/fstab 裡面掛載的實體硬碟的兩個分割區後方的 0 2 要改成 0 0
這樣就不會出現上方(103.02.09)的問題,就能直接開機。
- 103.02.20
在實體機,將虛擬機關閉後要重開機時,會出現掛載的 .vmdk 無法存取的問題,
導致開機受阻,請等待 crontab(也就是整分的時候)執行,.vmdk 就可以使用。
sudo chmod a+rw /dev/sdd1 =>實體硬碟分割區
sudo chmod 777 /dev/sdd1
這樣,Virtualbox 才能將這個 .vmdk 掛載到虛擬機器完成正常程序的開機
但這樣也不能解決真正的問題
- 真正解決問題的方法:
=>把 virtualbox 的 使用者名稱 加入到 disk 群組裡 -> /etc/group
因為 /dev/sd* 的 擁有者是 root disk
經檢查後,發現雖然以上面的 /etc/rc.locak 及 cron 變更 /dev/sdd 的權限,
但系統會自動地把 /dev/sdd 的權限又變回
brw-rw---- 1 root disk
也就是說, 權限,只能讓 使用者 root , 及 群組 disk 來使用,
所以,前面的 /etc/rc.local 及 cron 的方式 可以移除。
至此,虛擬機掛載實體硬碟的過程,終於完成了。
還記得哪兩個步驟嗎?- 虛擬機的 /etc/fstab
- 實體機的 /etc/group
VBoxManage storageattach WindowsXP --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
當這指令完成後,虛擬機器將會從指令的實體硬碟啟動開機
PS:不管是連接實體硬碟或是實體硬碟的分割區,請變更該實體硬碟或實體硬碟分割區的權限