I’ve had some problems with disk space for a while, so much that I was “creating space” by creating an lvm logical volume of 5GB over 3 files (through loop devices) on 3 different partitions (/usr, /var, and /home) that all had less than 5GB free. But I needed 5GB free.
So, instead of continuing relying on such brain damaged solutions, I decided to just switch everything on lvm, which, incidentally, would allow me to use lvm snapshots for pbuilder or similar tools (pbuilder doesn’t support lvm snapshot, as far as I know). Since my / partition is quite small (so small that I sometimes have space problems at kernel upgrade), I just decided to keep it and just transform my /usr, /var, and /home partitions into a big lvm physical volume.
The challenge was to move all the files without any resort to external devices. Yes, I have other devices on other PCs, but they all are in about the same shape : full as hell. No way I could possibly free 40GB for backup. I couldn’t even burn some data : my DVD burner died a few weeks ago and I still haven’t bought a new one. I could’ve waited but well, I wanted to do it.
So, the week-end before last, I decided to go on, and do it the painful way. I used my swap partition to move /usr and /var around, so that I could free the space from these 2 partitions to create the premises of the lvm physical volume. First trick: not enough space in the swap partition, so I just deleted a bunch of files (mostly /usr/share/doc/ and /usr/share/locale files) so that all would fit. After moving all around, I’d just unpack all installed debian packages so that the files are there again.
Then, I managed to move everything by packs of 4~5GB, which was laborious. It involved creating temporary lvm physical volumes on temporary partitions and then moving the logical volumes’s chunks from physical volumes to other physical volumes on the same disk. Brain damage.
Anyway, the big fright came when I had this stupid idea to delete partitions and create them again. Why ? because neither fdisk (no surprise) nor parted can resize a partition. Well, parted can, but it apparently can’t without playing around with the underlying filesystem.
So, I deleted and recreated the partitions. And guess what ? They didn’t end up on the same sectors… The second stupid idea was to run pvcreate on the newly created not quite the same partitions… I thought I just lost everything. Pictures, personal repositories (especially 6 months worth (well, it took 6 months of real time, not of work time, but still) of work on xulrunner), everything.
It’s actually not the first time I (almost) lose everything. I once did rm -rf / in a chroot… in which /home was mounted bound… and wrote a program to scan the file-system for the precious files (that’s the story of ext3rminator, which I still have to release once and for all). That was 3 years ago.
First, calm down. Second, the bits are still on the disk (except maybe the bits overwritten by pvcreate). Third, calm down. Fourth, think.
All I obviously had to do was to find the correct location of the partitions, and pray that the pvcreate didn’t blow everything. Which was almost okay. I could find 2 of the LVM volumes out of 3, while the third one seemed in a pretty bad shape. A bit of search with my friend google on another computer hinted me on vgcfgrestore. So I pvcreated once more over this broken volume, and used vgcfgrestore to get the volume group correct. It seemed okay. I could mount the volume. That was close.
Well, to be sure, let’s run a fsck… ouch… inconsistency in some inodes. Okay, correct it. Once, twice… a couple times. Waw, is it that fucked up ? It can’t be that fucked up.
So I took another look and discovered that the third volume was offsetted by a sector. 512 octets. Ouch, letting the fsck correct things was definitely not a good idea. Correcting again the partition table, pvcreating and vgcfgrestoring again, fsck, and let’s rock and roll.
- I only lost 150MB of MP3. I don’t care.
- Never ever use parted again, and never ever use fdisk in basic mode again.
- Avoid tricky procedures with stuff you are trying for the first time.
- Backups are for the weakest.