insomnihack

When sleep eludes, the keyboard beckons

Shrink VMWare Virtual Disks formatted with ext4

July 18, 2010 Dale 12 Comments

If you’re running a Linux distribution under VMWare that uses disks formatted with ext4 (as Ubuntu does by default), you may have had some problems shrinking the resulting virtual disks files your VM uses. This is because ext4 is a journaling file system. It protects your file system in case of a system crash or power failure.

Unfortunately, the current version of VMWare’s tools (I’m using Workstation 7.1 currently) hasn’t been updated to completely handle journaling file systems like ext4. Your disk won’t appear on the shrink tab of vmware-toolbox or be listed when using vmware-toolbox-cmd. This can be frustrating when your virtual disk grows to several gigabytes large than the actual data you’re using under Linux.

However, the good news is that you can reclaim the unused space with a little preliminary work inside your guest OS. First, execute the following commands from within the Linux guest.

[plain]
sudo apt-get clean
sudo dd if=/dev/zero of=/0bits bs=20971520 # bs=20m
sudo rm /0bits
[/plain]

This will manually clear unused space. Note that the first call to apt-get is not required, and only applicable if you’re running a distribution that uses Debian’s advanced packaging tool for package management.

After you’ve executed these commands, shutdown your VM and use vmware-vdiskmanager to shrink the virtual drive file.

[plain]
cd "C:\Program Files\VMware\VMware Workstation"
vmware-vdiskmanager -k path\to\your\VirtualDisk.vmdk
[/plain]

You should see a noticeable reduction in file size after this.

Computers Linux, vmware

R&D Week One Wrap Up

January 9, 2010 Dale Leave a Comment

Its a new year, and at work, the emphasis is definitely on the ‘new’. I’ve joined a new team, social media, in a new department: R&D. I have a new desk (to be honest, its just a new spot in the cube farm), and new operating system: Linux. We’re working with what is for most of the team a new programming language, Python, and a new continuous integration server: Hudson.

Hudson

Hudson is pretty impressive. I’d never even heard about it before Ed found it last Tuesday. In addition to continuous integration, it can also monitor executions of externally-run jobs. We’re trying to favor simpler cron jobs running scripts over the complex service-oriented architectures we’ve worked with on previous projects, so this is a nice bonus. Hudson comes with a ton of plug-ins that enable it to integrate with SCMs such as git, execute scripts of various languages including Python, and run an assortment of tools including nose, coverage, and pylint (just to name a few we’re using). Hudson is written in Java, and it is pretty easy to set up.

VMWare

We’re running all of our Linux systems on VMWare: Workstation 7.0 on our desktops and ESXi on the server. Workstation’s easy install makes setting up Ubuntu 9.10 with an initial user and VMWare toolkit a snap. However, I did notice that for some reason it didn’t install the shared folders driver, so I had to run VMWare tools setup manually anyway to get shared folders working. I still have Windows on my desktop with Visual Studio, IIS, and SQL Server installed in case I have to go back and fix a Studio bug.

Why Python?

The reasons behind the switch from C# and .NET to Python were faster development and easier scalability. I’m not saying we couldn’t achieve scalability with .NET, IIS, and SQL Server. I’m saying for what we’ll be doing, its easier to accomplish with Python, Tornado, and nginx. Since we’re new team, any budget increases have to be earned by achieving specific milestones, so it doesn’t hurt that all of our software tools with the exception of VMWare Workstation are now free.

Small Team

Finally, its really nice to be back on a small development team. I only have to report to one person, so those CC’d email sh*t storms where you’re trying to keep several stake holders informed of your status is no longer an issue. The other two developers I work with are on either side of me and both highly skilled, so most design and implementation discussions are usually resolved pretty quickly. We even pair programmed a few days last week. It was occasionally frustrating as everyone gets up to speed on Python, but there was definitely value in it. We’re being pretty aggressive with our milestones, so I don’t think we’ll be pairing all the time.

Programming Linux, Python, tools

About Me

Hi, my name's Dale, and this is my tech blog. Read More…

Search

Tags

blogging c# database Django documentation Email furniture git hacks htpc IPython Linux mac nas packaging PyCharm Python Roleplaying tools twitter unit tests virtualenv Visual Studio vmware Windows

Copyright © 2025 · Equilibre Theme on Genesis Framework · WordPress · Log in