Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compact disk image size #100

Open
lcmen opened this issue Feb 27, 2016 · 7 comments
Open

Compact disk image size #100

lcmen opened this issue Feb 27, 2016 · 7 comments

Comments

@lcmen
Copy link

lcmen commented Feb 27, 2016

Hi,
I'm sorry if these are stupid questions but I'm new to xhyve (and hyve in general). I decided to try this driver as I wanted to avoid VirtualBox overhead in default boot2docker installation.

How can I localise the disk image used by virtual machine created with docker-machine create --driver xhyve docker command? Can I compact the disk space so the vm will returned unused disk space to the host system?

@johanneswuerbach
Copy link
Contributor

You can find the disk image in your machine storage path (default: ~/.docker/machine/machines)

The disk image is a OS X virtual sparsebundle disk, which sadly is not compactable today for filesystems different from HFS+ :-(

@lcmen
Copy link
Author

lcmen commented Mar 27, 2016

@johanneswuerbach actually I've found a command to compact disk image - sudo hdiutil compact root-volume.sparsebundle -batteryallowed however it does not reclaim any size back.

@lcmen
Copy link
Author

lcmen commented Apr 10, 2016

@zchee @johanneswuerbach any idea why sudo hdiutil compact root-volume.sparsebundle -batteryallowed didn't work? Are there any others (even hackable) ways to reclaim the space to the host OS?

@johanneswuerbach
Copy link
Contributor

hdiutil compact only works when the filesystem used within the sparebundle is HFS+, which boot2docker doesn't support (ext4 is used).

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/hdiutil.1.html

There are ideas how to solve that machyve/xhyve#82, but nothing concrete so far.

@lcmen
Copy link
Author

lcmen commented Apr 14, 2016

@johanneswuerbach thanks for more information about. Do you know if it's to use other distro (i.e. Alpine linux) instead?

I'm just looking for a way to setup my dev env with docker but having a image which can not be compacted on SSD is a deal breaker. Basically when I create a new machine it uses around 1GB for root image. After playing with docker (downloading / building images), sparsebundle size goes to ~18GB, even tough df -h shows that only 6GB is used of that space is used. How can I be sure that after a few days it won't take another 20GB from my host, even tough it won't use it?

UPDATE: I've found that there is image size parameter for docker-machine after which it won't take more size from the host. I've tested it with basic dd command on the boot2docker and it works fine.
UPDATE2: Ok I think no matter which Linux distro I will choose it won't use HFS+ file system for its partition. Propably the only solution that can work in the future is machyve/xhyve#82

@dunkelstern
Copy link

The sparse disk support patches on my github account work. Currently you cannot shrink the images but at least they are fine grained sparse disks. (Apple uses 8MB chunks, my version uses 4KB chunks).

I am currently working on supporting qcow2 because there is already tooling for that format, but it may be a while until that works with enough performance to be usable,

@vasi
Copy link

vasi commented Dec 31, 2016

My rhfs tool allows compacting sparsebundles, without necessarily using HFS+ (though it's optimized for that case):

rhfs compact --search mydisk.sparsebundle

It would probably be better to implement real support for discard in xhyve/block_if.c, though. See BOP_DELETE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants