• slider image 168
:::
條列式新聞
新聞載入中,請稍後...

8-3 虛擬機使用 實體硬碟

參考:http://meslick.blogspot.tw/2012/05/vmdkhost.html
參考:https://www.virtualbox.org/manual/ch09.html#rawdisk 

指令:

  1. 使用整顆實體硬碟
    1. Command in Linux host:
      VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
      所創建的這個 image( /path/to/file.vmdk) (必須是絕對路徑), 而且對 /dev/sda 可以讀寫所有的資料
    2. 在Windows host 則為:
      VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk \\.\PhysicalDrive0
      sda 及 PhysicalDrive0 皆為磁碟機名稱

      Windows下:由磁碟管理工具,下方欄位的磁碟0、磁碟1,對應為 PhysicalDrive0、PhysicalDrive1,需用系統管理員身分打開命令提示字元和VirtualBox,並切換至安裝資料夾來下指令。

      ps:連結整個硬碟
      vmdk掛載至guest系統之後,guest可對此虛擬磁碟機作完整存取,甚至是重新分割磁區,所以要特別注意。

  2. 使用實體硬碟中的某些分割區
    連結至實體硬碟其中的分割區
    在上述命令最後加上 -partitions 1 ,表示該磁碟機的第一個磁區(分割區)

    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5
    (這個例子表示建立一個可以存取 /dev/sda 第1和第5個分割區的映像檔)

    VBoxManage
    VirtualBox和您的Linux主機使用相同的分區編號。


     
  3. 實作問題:
    使用vmdk方式連結至host實體硬碟
    有掛載實體硬碟的虛擬機器無法由實體機關機後重新開機,
    必需由實體機重開機才能自動開啟虛擬機器
     
  4. 解決方法:

    注意,請在實體機上的 /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        (可掛載,且虛擬機器可以開機)
     
  5. 103.02.09 ->發現問題

    有時重開機後,實體機上出現無法存取虛擬機所使用的實體硬碟:
    所以,上面的方法無法真正解決虛擬機掛載實體硬碟的問題

    =>將該實體機上的虛擬機的 實體硬碟的 .vmdk 移除(不是刪除,只是移除設定,也就是以智慧寶劍,斷開連結),
    存檔,再重新加入 .vmdk ,存檔,啟動

    =>出現 fsck 選項(看不懂的符號) => 按 c, 再按 i (f,i,c,m四個選項)

    =>開機完成,可以抓得到實體硬碟

     暫時可以啟動 虛擬機
     
  6. 103.02.20

    發現在 虛擬機裡
    /etc/fstab 裡面掛載的實體硬碟的兩個分割區後方的 0 2  要改成 0  0
    這樣就不會出現上方(103.02.09)的問題,就能直接開機。

     
  7. 103.02.20
    在實體機,將虛擬機關閉後要重開機時,會出現掛載的 .vmdk 無法存取的問題,
    導致開機受阻,請等待 crontab(也就是整分的時候)執行,.vmdk 就可以使用。

    sudo chmod a+rw /dev/sdd1        =>實體硬碟分割區
    sudo chmod 777   /dev/sdd1
    這樣,Virtualbox 才能將這個 .vmdk 掛載到虛擬機器完成正常程序的開機

    但這樣也不能解決真正的問題

     
  8. 真正解決問題的方法:

    =>把 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 的方式 可以移除。

    至此,虛擬機掛載實體硬碟的過程,終於完成了。

    還記得哪兩個步驟嗎?
    1. 虛擬機的 /etc/fstab
    2. 實體機的 /etc/group
       

 

VBoxManage storageattach WindowsXP --storagectl "IDE Controller"  --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
當這指令完成後,虛擬機器將會從指令的實體硬碟啟動開機
PS:不管是連接實體硬碟或是實體硬碟的分割區,請變更該實體硬碟或實體硬碟分割區的權限


:::
展開 | 闔起

文章類別

書籍目錄

展開 | 闔起

線上使用者

10人線上 (10人在瀏覽線上書籍)

會員: 0

訪客: 10

更多…