Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have the following situation:

My current Ubuntu installation is running from an external HDD (250 GB) because I was to lazy to buy an new internal hdd. Now i've got a new internal (120GB) and i want to move everything to the internal. Installing Ubuntu new is out of disscussion because its to peronalized.

Luckily (i hope so) the root partition is partitioned with LVM, so i hope i can move the partition to the smaller internal HDD.

Is this possible? And where do i find help?

share|improve this question
up vote 9 down vote accepted

As you suspect, this is extremely elegant to do using LVM.

Shrink the existing installation to fit the smaller disk.

Physically install the new harddisk, format and pvcreate it, use vgextend to add it to the same vg as your root partition

Use pvmove to transparently move all data away from the old partition

Use vgreduce to remove your external hd from your vg. Unplug the old disk /dev/sdOLD.

In the example below:

  • /dev/sdOLD stands for the old partition to replace
  • /dev/sdNEW stands for the new partition to take its place.
  • vgX stands for the volume group

Example: Of course, you have to be 100% sure that your are using the right devices. Also, having complete and up-to-date backups, removed from the system, is essential.

pvcreate /dev/sdNEW
vgextend vgX /dev/sdNEW
pvmove /dev/sdOLD
vgreduce vgX /dev/sdOLD

Use update-grub and grub-install to make your new root disk bootable


share|improve this answer
thank you thats really great... – NotANormalNerd Jul 8 '12 at 20:29
It would have been nice if you had provided concrete examples. – isaaclw Jan 5 '13 at 0:50
Ah, that's nice voting down a valid accepted post with helpful information. I intentionally did NOT give a concrete example, because the danger is that someone will mindlessly copy-paste that and destroy his/her data. If you do anything with lvm, you should be able to find you bearing with the pointers i give. – Floyd Jan 5 '13 at 14:28

First, if you used the whole 250GB disk for your current installation, you'll need to shrink it to fit the 120GB disk. You can only shrink an ext4 filesystem while it's unmounted, so you'll need to boot off an Ubuntu live system (CD or USB), or a specialized maintenance live system such as GParted live. You can use resize2fs or GParted to resize the existing filesystem.

Once you've shrunk the filesystem(s) of your existing installation to fit on the new disk, you can do the rest of the move with the filesystem mounted if you like. If the existing filesystem fits on the new disk, you can do the transfer without unmounting anything or rebooting.

In the following description, I'll show how to move from the physical volume /dev/sdb1 to the physical volume /dev/sda1, with an existing volume group called oldvg. Be sure to adjust the disk letters and partition numbers to match your system.

To do a live transfer:

  1. Partition the new disk, using the partitioning tool of your choice (cfdisk, fdisk, parted, …). See e.g. How do I add an additional hard drive?
  2. Create a physical volume on the new disk: pvcreate /dev/sda1
  3. Add this physical volume to the existing volume group containing the logical volume(s) you want to move: vgextend oldvg /dev/sda1
  4. Move the logical volumes from one physical volume to another: pvmove /dev/sdb1 /dev/sda1
  5. Split the existing volume group in two: vgsplit oldvg newvg /dev/sda1

Another method is to make the existing logical volume(s) a mirror volume with lvconvert --mirror, set up a mirror on the new disk, then split the mirrors with lvconvert --splitmirrors. This way, you end up with two copies of your data, and after the split each copy leads its own life.

After you've done the copy, you'll need to make the new disk bootable. Mount the filesystem for this. Assuming it's mounted on /mnt, run these commands as root:

chroot /mnt
# if the name of the volume group has changed, edit /etc/fstab
grub-install /dev/sda

Alternatively, you might be able to use Clonezilla. This is a powerful disk manipulation and cloning tool, and I think it covers your situation, but I have no experience with it.

share|improve this answer
How an answer that basically says pvadd, pvmove, pvremove gets accepted over THIS is beyond me... – izx Jul 8 '12 at 21:01
Much too complicated and not what he needs – Floyd Jul 9 '12 at 5:19

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.