Bagaimana cara mengubah ukuran tetap VDI dengan perintah HDHD di Windows?

70

Saya mencoba mencari cara untuk mengubah ukuran file VDI. Saya baru mengenal VirtualBox, dan saya harus banyak belajar. Tapi saya pikir saya memahami dasar-dasarnya. Saya sudah menginstal Windows 7 sebagai tamu pertama saya. Tuan rumah juga Windows 7. Saya tidak yakin berapa banyak ruang disk untuk mengalokasikan, jadi saya pergi untuk ukuran VDI 40 GB dan ukuran tetap untuk peningkatan kinerja. Tapi saya sudah berubah pikiran sekarang, dan saya ingin menambahkan 10 GB lagi. Saya telah mengklik di sekitar program dan membaca konten menu Bantuan, tetapi itu tidak membantu. Ini menjelaskan pengontrol disk, SAS, SATA, SCSI, yada, yada, tetapi tidak apa yang saya cari.

Saya mencari jawaban di seluruh dunia web, forum VirtualBox mengatakan Anda seharusnya menggunakan Gparted jika Anda ingin metode termudah (beberapa mod diposting lengket). Beberapa pengguna berdiskusi menggunakan ddperintah. Tapi itu semua hal-hal Linux. Juga, ada banyak pertanyaan di sini di SU yang berhubungan dengan peningkatan dan penurunan ukuran file VDI, tetapi mereka semua tentang menggunakan Linux sebagai tuan rumah dan Windows sebagai tamu.

Saya menemukan posting blog yang bagus ini tentang cara melakukannya dengan modifyhdperintah VBoxManage. Orang ini juga melakukannya di Linux sebagai OS host. Dia bahkan menginginkan ukuran yang sama (50 GB) untuk file VDI-nya seperti yang saya lakukan untuk file saya, sungguh suatu kebetulan. Jadi saya pikir saya akan mencobanya, baik membuatnya atau menghancurkannya. Apa yang mungkin salah? ... eh? Nah, ini adalah kejutan jelek yang saya dapatkan.

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!

C:\Program Files\Oracle\VirtualBox>

Sebuah

Katakan apa sekarang?! ... tidak dapat mengubah ukuran hard disk virtual dari format VDI? Anda tidak mengatakannya? Tidak mendukung format Anda sendiri? Sekarang bagaimana dengan itu ...

Apakah benar-benar tidak ada cara sederhana untuk mengubah ukuran file VDI, lebih disukai dengan beberapa klik di dalam VirtualBox? Ada yang sedang dalam proses?

Samir
sumber
4
Saya menghapus kata-kata kasar pada kualitas VirtualBox, yang tidak menambahkan sesuatu yang berguna untuk pertanyaan itu.
sleske
1
Untuk referensi di masa mendatang, modifyhdsekarang dikenal sebagai modifymediumtetapi masih kompatibel ke belakang - lihat virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
djule5

Jawaban:

121

Ringkasan:

  • VBoxManage.exe modifyhd --resize dapat meningkatkan (tetapi tidak mengurangi) ukuran logis dari disk image (ukuran yang dilihat oleh OS tamu).
  • VBoxManage.exe modifyhd inputfile.vdi --compactdapat mengurangi ukuran gambar disk fisik (ukuran file gambar pada disk seperti yang terlihat oleh OS host). Namun ini tidak mengubah ukuran disk logis. Perhatikan bahwa ini hanya berfungsi jika ruang kosong telah diberi nol di OS tamu terlebih dahulu.
  • modifyhd hanya berfungsi hanya dengan varian format dinamis ("gambar yang dialokasikan secara dinamis").
  • modifyhd hanya bekerja dengan format gambar VDI dan VHD.
  • Jika Anda menggunakan snapshot, Anda harus mengkloning snapshot VDI terbaru dari subfolder "Snapshots".

Untuk perinciannya lihat bagian 8.23. VBoxManage memodifikasihd dalam manual.


Alasan mengapa mengurangi ukuran disk logis dari VDI belum diimplementasikan adalah untuk mencegah korupsi data yang dapat terjadi dan Anda akan memiliki VM yang tidak dapat di-boot sebagai akibatnya. Oleh karena itu, ketika --resizeopsi digunakan, ukuran disk baru harus lebih besar dari ukuran saat ini. Itu tidak boleh kurang dari atau sama dengan ukuran saat ini. Dengan kata lain disk 40 GB hanya dapat diubah ukurannya menjadi 41 GB atau lebih besar dari itu, tidak dapat diubah ukurannya menjadi 40 GB (itu hanya bodoh) atau 39 GB atau kurang dari itu.

Versi lama VirtualBox membuat file VDI sebagai varian format "tetap". Pengaturan default baru sekarang untuk membuat varian format "dinamis" ketika file VDI (gambar disk virtual) baru dibuat. (Saya menduga ini adalah kasus sejak diperkenalkannya varian format dinamis, versi apa pun yang diperkenalkan.)

Jadi arti dari pesan kesalahan "operasi untuk format ini belum diterapkan" adalah bahwa file VDI Anda menggunakan varian format "tetap". Untuk mengatasi masalah ini, Anda harus mengkloning file VDI Anda menggunakan clonehdperintah. Untuk melihat varian format file VDI Anda saat ini, Anda dapat menggunakan showhdinfoperintah.

Contoh Kerja

Tampilkan informasi VDI tentang disk saat ini.

Perintah input: vboxmanage.exe showhdinfo path\inputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID:           132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity:       40960 MBytes
Size on disk:   40962 MBytes
In use by VMs:  sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)

C:\Program Files\Oracle\VirtualBox>

Lihat di mana dikatakan "default tetap"? Itu sebabnya ia memuntahkan kesalahan di atas ketika Anda mencoba untuk mengubah ukurannya.

Mengkloning file VDI lama ke file VDI baru.

Perintah input: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c

C:\Program Files\Oracle\VirtualBox>

Voa! File lama sekarang telah dikloning ke file baru. Karena pengaturan default di versi baru VirtualBox adalah menggunakan varian format "dinamis", Anda tidak perlu mendefinisikannya secara eksplisit. Meskipun, jika Anda bekerja dengan versi VirtualBox yang lebih lama, maka Anda mungkin ingin mengatur opsi menjadi "dinamis" (jika tersedia) untuk memastikan kompatibilitas dan / atau fleksibilitas yang lebih baik dengan versi VirtualBox yang akan datang.

Tampilkan informasi VDI tentang disk yang dikloning.

Perintah input: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       40960 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Lihat bagaimana sekarang mengatakan "default dinamis"? Bagusnya!

(Di samping catatan! Alasannya mengatakan 7806 MB sebagai ukuran fisik di sini adalah karena saya telah menggunakan --compactopsi pada file VDI asli dalam upaya untuk menegakkan konversi ke varian format dinamis. Hanya sesuatu yang saya baca di forum VirtualBox, konon katanya. akan bekerja dengan versi yang lebih lama, jadi saya pikir saya mungkin juga mencobanya. Tidak berhasil.)

Mengubah ukuran disk yang dikloning.

Perintah input: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:\Program Files\Oracle\VirtualBox>

Keberhasilan! Tidak ada format omong kosong lagi. Ingatlah untuk mengubah ukuran disk yang baru dan dikloning, dan bukan yang asli. Perlu diingat bahwa ukurannya dinyatakan dalam MB. Saya percaya Anda dapat menggunakan mis 51200serta 50G(atau mungkin "GB"). Ada juga opsi --resizebyteyang dapat digunakan untuk mengekspresikan ukuran dalam byte.

Tampilkan informasi VDI tentang disk klon yang diubah ukurannya.

Perintah input: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       51200 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Itu dia! Dari sini yang harus Anda lakukan adalah menambahkan drive kloning ini sebagai VDI baru Anda untuk VM. Anda melakukannya di dalam VirtualBox. Saya tidak akan membahasnya. Jika Anda sudah bisa membaca dan memahami ini sejauh ini maka Anda mungkin tidak perlu panduan lebih lanjut. Anda dapat menghapus file "tetap" lama, atau membiarkannya sebagai cadangan. Pastikan Anda menguji file VDI baru sebelum Anda menghapus file sumber asli.

Catatan! Anda tidak akan langsung melihat ukuran baru dari disk yang dikloning. Anda harus mem-boot VM dengan itu, dan kemudian Anda harus menggunakan alat manajemen partisi Anda untuk memperluas partisi Anda untuk mengisi disk virtual (atau membuat lebih banyak partisi). Untuk Windows, jalankan saja diskmgmt.mscdan Anda akan dapat memperluas partisi di sana.

Tangkapan layar

Sebuah b c d e f g

Referensi

Samir
sumber
1
superuser.com/review/suggested-edits/227029 (saya mencoba.)
tigapuluhdot
Mata yang bagus! Saya telah mengoreksi parameter yang memodifikasi. Terima kasih untuk mengingatkan saya pada hal ini.
Samir
2
Jawaban yang ditulis dengan sangat baik! IMHO ini harus mendapatkan banyak suara.
Johan Karlsson
+1: Orang-orang seperti Anda dan pengetahuan yang Anda bagikan secara bebas, yang menjadikan ekosistem StackExchange sumber daya yang fantastis!
Homunculus Reticulli
1
Jika Anda memiliki masalah karena Anda menggunakan snapshot , lihat di virtualbox.org/ticket/9103 . Pada dasarnya, Anda perlu menerapkan modifymedium/ modifyhdoperasi pada file snapshot itu sendiri.
djule5
11

Berikut adalah proses yang cukup sederhana yang berhasil bagi saya untuk mengubah ukuran disk ukuran tetap VirtualBox (v. 4.3.16) menjadi disk dinamis 60GB pada Mac saya (OS X 10.9.4) dengan Linux (Ubuntu 14.04) yang berjalan sebagai OS tamu:

Di Terminal pada Mac, CD ke direktori dengan file VDI dan ketik yang berikut ini:

VBoxManage showhdinfo mydisk.vdi  
VBoxManage clonehd mydisk.vdi mydiskClone.vdi  
VBoxManage modifyhd mydiskClone.vdi --resize 61440  
VBoxManage showhdinfo mydiskClone.vdi

Di bagian penyimpanan aplikasi VirtualBox, tambahkan mydiskClone.vdi sebagai HD kedua, kemudian mulai VM secara normal.

Dalam shell di OS tamu, ketik:

sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

Nyalakan ulang tamu. Saat muncul kembali, buka shell lagi dan ketik:

sudo resize2fs /dev/sdb1

Matikan OS tamu.

Di bagian penyimpanan aplikasi VirtualBox lagi, atur mydiskClone.vdi menjadi disk boot. Kemudian mulai OS tamu dan verifikasi ukuran disk baru menggunakan properti "Komputer" di browser file.

Grant Braught
sumber
Jawaban ini tidak masuk akal. Anda pertama-tama membuat satu partisi besar di / dev / sdb, kemudian mengubah ukurannya, tetapi Anda tidak membuat sistem file terlebih dahulu. Apakah Anda mungkin lupa langkah menyalin di partisi asli?
sleske
5

Kloning sebenarnya adalah solusi yang lebih baik dan ada cara yang lebih mudah untuk melakukannya.

Dari menu File, pilih Virtual Media Manager, lalu klik Salin. Sumber akan menjadi hard disk vdi ukuran tetap asli Anda dan tujuan Anda akan menjadi sesuatu yang baru yang Anda pilih (termasuk opsi yang baru).

Taky Djarou
sumber
Ini adalah bagian dari jawaban dari sammyg.
Efren
4

OK, jadi saya mewujudkannya tanpa kloning .

Saya punya file VDI 100GB (format tetap) dengan Ubuntu di atasnya. Bekerja dengan baik. Saya ingin membebaskan beberapa ruang di host dengan menyusutkan VM.

Langkah:

  1. Membersihkan

Menghapus file yang tidak diinginkan. 45GB gratis. Saya hanya perlu 30GB untuk dibebaskan.

  1. Perbaiki OS tamu

Saya hanya memiliki satu partisi, jadi tidak dapat melakukan apa pun dari dalam guest Ubuntu. Pasang Ubuntu Live di VM dan boot dari sana.

Digunakan gparteduntuk mengecilkan partisi menjadi 70GB. Membuat partisi baru di ruang yang tidak digunakan di ext4.

  1. Bersihkan ruang kosong

Ruang kosong di partisi baru (30GB).

Ikuti panduan ini: Kecilkan hard drive virtual pada Ubuntu sebagai OS Guest and Host menggunakan zerofree

Partisi baru saya adalah /dev/sda3.

$ sudo apt-get install zerofree
$ sudo init 1

...

# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
  1. Padatkan VDI

    VBoxManage memodifikasihd "ubuntu.vdi" compact

Butuh beberapa saat, tetapi berhasil!

ATOzTOA
sumber
1
Apakah Anda yakin ini berhasil? Menurut manual VirtualBox, --compacthanya berfungsi untuk gambar yang dialokasikan secara dinamis, bukan untuk yang berukuran tetap.
sleske
1
@ ATOzTOA: Jika file gambar disk tumbuh, maka itu bukan gambar "format tetap", tetapi gambar "dialokasikan secara dinamis", yang adalah apa yang Anda tulis dalam jawaban Anda.
sleske
3
Tidak, itu gambar yang dialokasikan secara dinamis . Mengutip manual: "Jika Anda membuat gambar ukuran tetap, file gambar akan dibuat pada sistem host Anda yang kira-kira memiliki ukuran yang sama dengan kapasitas disk virtual." Virtualbox.org/manual/ch05.html#vdidetails
sleske
1
"Gambar berukuran tetap berarti gambar itu tidak bisa tumbuh melampaui ukuran yang ditentukan." TIDAK. "Ukuran tetap" berarti ukurannya tetap, jadi selalu sama. Baca dokumen.
sleske
1
Jika ada yang membaca ini dan tidak yakin siapa yang benar. @sleske benar. Gambar dengan ukuran tetap persis seperti yang mereka katakan. Diperbaiki ke ukuran yang ditentukan saat membuat gambar. Dalam tolok ukur ini memberikan kinerja yang jauh lebih besar daripada gambar yang dialokasikan secara dinamis, sehingga siapa pun yang menggunakan VBox untuk tugas intensif HD mungkin harus mempertimbangkan format ini meskipun ada keterbatasan.
Jack
2

Agak terlambat ke pesta di sini tapi saya akan menambahkan 2 sen saya. Pertama saya akan mengatakan bahwa ini adalah proses berbelit-belit yang akan mendorong sebagian besar pengguna biasa mencoba untuk mencari tahu. Mengapa Oracle tidak memasukkan ini dalam GUI VBox adalah sebuah misteri.

Langkah 1: Gunakan baris perintah windows (VBoxmanage) untuk menambah ukuran drive. Kiat di sini adalah menggunakan ID drive vdi alih-alih tanpa henti mencoba memasukkan lokasi file dan mendapatkan pesan kesalahan.

Langkah 2: Anda kemudian perlu memperluas partisi utama Anda untuk menggunakan ruang baru. Unduh iso gparted dan buat mesin virtual baru di VBox dengan menggunakannya sebagai sumber IDE. Kemudian gunakan drive VDI yang ada sebagai sata disk. Jangan membuat drive virtual untuk mesin ini. Boot mesin baru dan Anda akan memiliki Gui gparted berjalan. Ini mungkin membutuhkan beberapa reboot untuk menyelesaikannya.

Setelah gparted berjalan, Anda akan melihat partisi drive vdi yang ingin Anda ubah ukurannya. PENTING: Anda harus menghapus partisi extended dan menukar ruang file untuk dapat meningkatkan ukuran partisi primer sehingga tidak mengalokasikan semua ruang baru untuk PP. Setelah Anda melakukan ini, Anda harus menunjuk ruang yang tersisa untuk partisi extended baru dan membuat ruang swap file baru di dalamnya. Saya menemukan ini jauh lebih mudah daripada melenceng dengan baris perintah.

Bukan sepotong kue tapi itu bisa dilakukan ... butuh sekitar setengah hari untuk meneliti web untuk mencari tahu. Menjalankan win8.1 / Ubuntu di VBox

Willie

Willie
sumber
2

Inilah cara saya mengubah ukuran / memperbesar / memperluas gambar VDI tetap (proses saya untuk mengecilkannya ada di jawaban lain):

  1. Gunakan VirtualBox untuk membuat disk baru dengan ukuran yang diinginkan (ukuran HARUS setidaknya sama dengan yang asli). Lakukan ini dengan membuka Pengaturan VirtualBox untuk VM tamu, arahkan ke Storage, klik HDD Controller (mis. "SATA"), lalu klik "+" untuk menambahkan hard disk. Kemudian konfigurasikan disk baru seperti yang diinginkan.
  2. Unduh live ISO gparted dan konfigurasikan VM tamu untuk mem-boot darinya (lagi, Pengaturan penyimpanan).
  3. Cadangkan penyimpanan VM tamu Anda saat ini.
  4. Boot VM tamu (harus boot ke lingkungan live gparted). Dari dalam lingkungan gparted:
    1. Gunakan aplikasi gparted untuk memverifikasi bahwa disk Anda yang ada adalah "/ dev / sda", dan bahwa disk Anda yang baru (lebih besar) adalah "/ dev / sdb" (drop-down kanan atas).
    2. Tutup aplikasi gparted.
    3. Buka terminal dengan root privs (klik kanan pada desktop -> Terminal -> terminal dengan privilege root).
    4. Ketik perintah berikut: dd if=/dev/sda of=/dev/sdb status=progress bs=128Mdan tunggu sampai selesai. Ini akan menyalin disk asli ke disk byte-untuk-byte baru, termasuk MBR dll. (Catatan: Ini mungkin membutuhkan waktu beberapa saat untuk menyelesaikan tergantung pada ukuran disk asli, kecepatan disk pada host, dll). (Catatan: jika VM tamu Anda memiliki> 1GB RAM yang dialokasikan untuk itu, Anda dapat mengubah param 'bs' menjadi "bs = 256M" yang mungkin sedikit mempercepat salinan).
    5. Buka kembali aplikasi gparted
    6. Pilih drive baru (lebih besar) (harus / dev / sdb) dari drop-down kanan atas.
    7. Perluas partisi sesuai keinginan. Untuk memperluas partisi yang tidak ada di bagian akhir, Anda mungkin harus memindahkan partisi yang setelah partisi yang ingin Anda kembangkan. Bergantung pada spesifikasi skema partisi Anda, Anda mungkin perlu melakukan ini dalam beberapa langkah seperti menumbuhkan partisi terakhir hingga akhir dan kemudian mengecilkannya dengan memindahkan semuanya ke ujung. Dalam kasus saya, partisi terakhir saya adalah linux-swap jadi saya cukup menghapusnya, memperluas partisi utama saya seperti yang diinginkan, dan kemudian menciptakan kembali partisi swap pada akhirnya (berhati-hati untuk mereplikasi skema partisi aslinya).
    8. Menerapkan perubahan.
    9. Pada titik ini Anda harus memiliki disk berukuran tetap baru dengan semua konten asli, dan lebih banyak ruang daripada yang asli. Anda dapat memasang disk baru di env live gparted dan memverifikasi.
    10. Matikan VM tamu (gparted live) dan hapus ISO dari drive VM.
  5. Buka Pengaturan VBox untuk VM tamu, navigasikan ke Penyimpanan, dan hapus disk asli dari daftar (klik kanan dan pilih "Hapus Lampiran"). Ini akan meninggalkan disk Anda yang baru dibuat untuk VM. Catatan: Langkah ini hanya menghapus disk dari konfigurasi VM tamu - disk VM tamu asli Anda (mis. Yang kecil) masih tersedia di mesin host.
  6. Boot VM dan nikmatilah!
  7. (Setelah semuanya dikonfirmasi berfungsi seperti yang diharapkan, Anda dapat menghapus disk VM asli.)

Sementara hal di atas telah bekerja sangat baik untuk saya beberapa kali, sepertinya beberapa langkah lagi diperlukan jika LVM digunakan. (CATATAN: Jika LVM digunakan, Anda cukup menambahkan disk baru dengan ukuran yang diinginkan dan kemudian menambahkan disk itu ke grup volume.) Dengan CentOS 6.6 di mana LVM digunakan, saya harus menambah ruang di dalam LVM juga. Jadi setelah mem-boot disk baru yang dibuat di atas, saya melakukan sesuatu di sepanjang baris ini (berbagai bagian ini akan bervariasi berdasarkan nama pengaturan Anda):

  1. Dapatkan info tentang pengaturan LVM:

    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  31.51g    0 
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 31.51g    0 
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 28.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  2. Memperpanjang volume fisik (PV) (grup volume (VG) akan secara otomatis mencerminkan kenaikan yang sama):

    # pvresize /dev/sda2
      Physical volume "/dev/sda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  39.51g 8.00g
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 39.51g 8.00g
    
  3. Perpanjang volume logis (LV):

    # lvextend /dev/vg_rhel6bm1/lv_root /dev/sda2
      Size of logical volume vg_rhel6bm1/lv_root changed from 28.31 GiB (7247 extents) to 36.31 GiB (9295 extents).
      Logical volume lv_root successfully resized
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 36.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  4. Perpanjang sistem file:

    Sebelum:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             28G   24G  3.1G  89% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

    Perintah:

    # resize2fs /dev/mapper/vg_rhel6bm1-lv_root
      resize2fs 1.41.12 (17-May-2010)
      Filesystem at /dev/mapper/vg_rhel6bm1-lv_root is mounted on /; on-line resizing required
      old desc_blocks = 2, new_desc_blocks = 3
      Performing an on-line resize of /dev/mapper/vg_rhel6bm1-lv_root to 9518080 (4k) blocks.
      The filesystem on /dev/mapper/vg_rhel6bm1-lv_root is now 9518080 blocks long.
    

    Setelah:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             36G   24G   11G  69% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    
codeniffer
sumber
Jawaban bagus! Selamat datang di situs ini!
djsmiley2k
1

Inilah cara saya mengubah ukuran / menyusutkan / mengurangi gambar VDI tetap (proses saya untuk memperluasnya adalah jawaban lain dalam topik yang sama):

Pertama latar belakang singkat tentang mengapa saya membutuhkan ini (karena ada banyak skenario untuk mengecilkan VDI, beberapa di antaranya mungkin tidak layak dengan pendekatan ini): Bertahun-tahun yang lalu saya membuat VDI tetap untuk tamu Windows Server dan mengukurnya pada 600GB. Saya tidak ingat mengapa saya memilih ukuran ini tetapi pada hari ini saya hanya mengkonsumsi 100GB pada tamu itu dan saya ingin mendapatkan kembali sebagian besar ruang yang tersisa. Jadi dalam kasus saya, saya ingin menyimpan semua data di tamu dan saya hanya ingin membebaskan ruang yang tidak digunakan di tamu.

(Langkah-langkah berikut sebagian besar dari ingatan saya telah melakukan ini selama 2 jam terakhir, jadi minta maaf jika saya melewatkan sesuatu di sini.)

  1. Tentukan seberapa besar ukuran yang Anda inginkan. Tentu Anda mungkin ingin meninggalkan tamu dengan ruang ekstra di luar apa yang saat ini dikonsumsi. Ukurannya harus setidaknya sama dengan data di disk sumber / asli, dibulatkan ke GB terdekat.
  2. Gunakan VirtualBox untuk membuat disk berukuran tetap baru dengan ukuran seperti yang ditentukan pada langkah sebelumnya. Lakukan ini dengan membuka Pengaturan VirtualBox untuk VM tamu, navigasikan ke Storage, klik HDD Controller (mis. "SATA"), lalu klik "+" untuk menambahkan hard disk. Kemudian konfigurasikan disk baru seperti yang diinginkan.
  3. Unduh live ISO gparted dan konfigurasikan VM tamu untuk mem-boot darinya (lagi, Pengaturan penyimpanan).
  4. Cadangkan penyimpanan VM tamu Anda saat ini.
  5. Boot VM tamu (harus boot ke lingkungan live gparted). Dari dalam lingkungan gparted:

    1. Gunakan aplikasi gparted untuk menentukan disk mana yang "asli" dan mana yang "baru". Dokumen asli akan memiliki setidaknya satu partisi, sedangkan yang baru akan kosong sama sekali. (Biasanya "asli" adalah disk pertama yang ditugaskan / dev / sda, dan disk "baru" adalah disk kedua yang ditugaskan / dev / sdb.)
    2. Gunakan aplikasi gparted untuk mengecilkan partisi sumber asli ke ukuran yang Anda inginkan. Ingatlah untuk mengklik tombol "Terapkan" setelah Anda merencanakan semua operasi. (Ini mungkin butuh sedikit untuk diselesaikan tergantung pada ukuran partisi Anda dan kecepatan disk.)
    3. Gunakan aplikasi gparted untuk membuat tabel partisi pada disk baru (Perangkat -> Buat Tabel Partisi ..., biarkan tipe sebagai MSDOS).
    4. Gunakan aplikasi gparted untuk membuat partisi identik pada disk baru. (Untuk memastikan mereka sama, saya menarik informasi terperinci untuk setiap partisi pada disk asli dengan menggunakan opsi menu Partition-> Information ... dan menyimpan tangkapan layar untuk digunakan ketika saya membuat partisi yang sama ( s) pada disk baru / tujuan.) Pastikan untuk:
      • Buat setiap partisi tujuan dengan ukuran yang sama dengan aslinya (baru disesuaikan).
      • Atur bendera apa saja pada partisi agar sesuai (mungkin perlu dilakukan setelah partisi dibuat).
      • Atur label apa saja pada partisi yang cocok.
      • (CATATAN: UUID akan diatur secara otomatis ketika data disalin.)
    5. Klik tombol "Terapkan" untuk melakukan semua perubahan.
    6. Catat disk mana yang "asli" dan mana yang "baru", dan catat nomor partisi yang sesuai (mis. / Dev / sda1 -> / dev / sdb1, / dev / sda2 -> / dev / sdb2, ...)
    7. Tutup aplikasi gparted.
    8. Buka terminal dengan root privs (klik kanan pada desktop -> Terminal -> terminal dengan privilege root).
    9. Dengan asumsi disk "asli" Anda adalah / dev / sda dan "baru" adalah / dev / sdb (jika tidak, sesuaikan perintah berikut dengan tepat), maka kami akan menyalin setiap partisi, satu per satu. Untuk setiap partisi yang dicatat dari langkah di atas, masukkan perintah berikut di terminal:

      # dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
      

      dan tunggu sampai selesai. Ini akan menyalin partisi 1 dari disk asli ke partisi 1 pada disk byte-untuk-byte yang baru.
      Ulangi perintah untuk setiap partisi yang tersisa:

      # dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
      # dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
      # ...
      

      Catatan:

      • Ini mungkin memakan waktu cukup lama untuk diselesaikan tergantung pada ukuran partisi, kecepatan disk pada host, dll).
      • Jika VM tamu Anda memiliki RAM> 1GB yang dialokasikan untuk itu, Anda dapat mengubah param 'bs' menjadi "bs = 256M" yang mungkin sedikit mempercepat salinan.
    10. Pada titik ini Anda harus memiliki disk berukuran tetap baru dengan semua konten asli, dan file VDI yang lebih kecil dari aslinya. Anda dapat memasang disk baru di env live gparted dan memverifikasi semua data ada di sana.
    11. Matikan VM tamu (gparted live) dan hapus ISO gparted dari drive VM.
  6. Buka Pengaturan VBox untuk VM tamu, navigasikan ke Penyimpanan, dan hapus disk asli dari daftar (klik kanan dan pilih "Hapus Lampiran"). Ini akan meninggalkan disk Anda yang baru dibuat untuk VM. Catatan: Langkah ini hanya menghapus disk dari konfigurasi VM tamu - disk VM tamu asli Anda (mis. VDI besar) masih tersedia di mesin host.
  7. Langkah terakhir yang harus saya lakukan untuk tamu Windows saya adalah mengatur / memperbaiki MBR dan / atau BCD. (Saya tidak tahu apakah ini diperlukan untuk tamu Linux karena saya belum melakukannya.) Jika saya hanya mem-boot dari VDI baru saya, saya mendapat layar kesalahan Windows Boot Mgr dengan konten ini (sayangnya saya tidak tahu t ambil tangkapan layar sebelum saya memperbaiki masalah):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Dapatkan ISO untuk instalasi atau perbaikan Windows (idealnya yang cocok dengan versi OS Anda) dan konfigurasikan VM tamu untuk mem-boot darinya (sekali lagi, pengaturan Storage).

  9. Mulai VM tamu dan pilih untuk boot dari CD / DVD.

    1. Karena setiap versi instalasi / perbaikan Windows berbeda, saya tidak dapat memberikan langkah-langkah tepat di sini untuk semua orang. Tetapi idenya adalah untuk memilih opsi "Perbaikan" dan menemukan jalan Anda ke prompt perintah. Dalam kasus Windows Server 2012 saya harus: (a) Pilih bahasa / lokal saya; (B) Pilih "Perbaiki komputer Anda" di sudut kiri bawah; (c) Pilih "Pemecahan Masalah"; (d) Pilih "Command Prompt".
    2. Setelah Anda berada di prompt perintah, jalankan perintah berikut (terima kasih kepada http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html untuk informasinya!):

      > bootrec /fixmbr
      > bootrec /fixboot
      > bootrec /rebuildBcd
      

      Perintah terakhir ini harus menemukan instalasi Windows Anda dan meminta untuk menambahkannya ke BCD. Jawab 'Y'.

    3. Keluar dari command prompt dan kemudian Matikan VM tamu.
  10. Buka Pengaturan VBox untuk VM tamu, navigasikan ke Storage, dan hapus Windows Install / Repair ISO dari drive CD / DVD.
  11. Boot VM dan nikmatilah!
  12. (Setelah semuanya dikonfirmasi berfungsi seperti yang diharapkan, Anda dapat menghapus disk VM asli.)
codeniffer
sumber
0

Saya memberikan jawaban yang diperluas untuk semua sistem operasi host yang berjalan pada sistem operasi host mana pun. Jawaban ini mengasumsikan Anda ingin menambah ukuran (untuk memperpanjang).

Catatan: Seperti yang ditunjukkan oleh djule5 (lihat komentar setelah pertanyaan), modifyhdsekarang dikenal sebagai modifymedium(tetapi tetap kompatibel ke belakang). Di sini saya gunakan modifymedium.

1. Keluar dari VM Anda yang berjalan

Ya jawaban ini untuk file VDI yang sudah digunakan oleh VM VirtualBox.

2. Buka terminal pada host Anda untuk mengubah ukuran gambar disk

Baris perintah VBoxManage tidak ingin mengubah ukuran gambar disk menggunakan nama file VDI.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage modifymedium my_disk_image.vdi --resizebyte 16260316160                                                                      VBoxManage: error: Cannot register the hard disk '/home/user/vm/my_disk_image.vdi' {181540c7-b791-4b2f-8e01-5feaff04a6eb} because a hard disk '/home/user/vm/my_disk_image.vdi' with UUID {181540c7-b791-4b2f-8e01-5feaff04a6eb} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp

Oleh karena itu identifikasi UUID gambar disk Anda.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage list hdds
UUID:           181540c7-b791-4b2f-8e01-5feaff04a6eb
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/vm/my_disk_image.vdi
Storage format: VDI
Capacity:       10240 MBytes
Encryption:     disabled

Perpanjang ukuran gambar disk.

$ vboxmanage modifymedium 181540c7-b791-4b2f-8e01-5feaff04a6eb --resizebyte 16260316160
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

3. Gunakan alat partisi untuk memperluas partisi logis

Jalankan VM yang dihosting. Kemudian gunakan alat partisi .

Beberapa alat untuk GNU / Linux yang dihosting:

Jika sistem yang dihosting menggunakan Windows:

4. Periksa ruang kosong partisi

Ukuran file VDI Anda (pada sistem host Anda) mungkin tidak berubah karena VM Anda belum menggunakan ruang ekstra. Selamat bersenang-senang.

olibre
sumber
-1

Ini akan bekerja untuk saya dan harus menentukan jumlah total Kapasitas Hard Disk. Bukan ruang yang kita butuhkan untuk bertambah ...

C: \ Program Files \ Oracle \ VirtualBox> VBoxManage.exe memodifikasihd "D: \ Mesin Virtual \ VirtualBox VMs \ Windows 7 (FileZilla Server) \ Windows 7 (FileZilla Server) .vdi" --resize 15360

saman
sumber