I have my /home
on a BTRFS
partition and I need to shrink it.
Unfortunately, Gparted
does not have the resize option for this FS.
Can I resize it in any other way without losing my data?
I have my /home
on a BTRFS
partition and I need to shrink it.
Unfortunately, Gparted
does not have the resize option for this FS.
Can I resize it in any other way without losing my data?
According to this page in the btrfs wiki:
To shrink the filesystem by 4 GiB:
btrfs filesystem resize -4g /mnt
orbtrfsctl -r -4g /mnt
Set the FS size . To set the filesystem to a specific size, omit the leading + or - from the size.
The btrfs
and btrfsctl
commands in Ubuntu is provided by the package called btrfs-utils
, which you can install in the Software Center. You run these commands in the Terminal (Ctrl+Alt+T). Replace 4g
by however much you really want to shrink the partition, and /mnt
by the mount point of the partition. For example, to shrink a btrfs partition mounted at /media/Alpha by 500 MiB, you would run:
btrfs filesystem resize -500m /media/Alpha
Or:
btrfsctl -r -500m /media/Alpha
Assuming the guidelines for resizing btrfs filesystems are the same as for other filesystems, you should avoid resizing a partition that is on the same physical disk as the running system. So, if necessary, boot from a live system to resize a partition on the drive that has your installed Ubuntu system. (This applies to resizing done in GParted, too.)
If some utilities or applications don't see the results of the resizing operation when it is performed, rebooting is a good idea.
See the btrfs
and btrfsctl
manual pages for more details about the use of these commands. And hopefully the btrfs wiki will be back up soon.
I am not personally very familiar with btrfs filesystems, but it seems strange to me that these resize commands take the mount point of the filesystem rather than the device name. If anyone can explain that, please comment or feel free to edit this answer to improve it.
parted -a opt /dev/sdX "resizepart 3 -500m"
. The 3
is the partition number, i.e. /dev/sdX3
.
According to the GParted features page, btrfs shrink is supported. If the option isn't available, installing the btrfs-tools package may fix it. If that doesn't work, it could be because Ubuntu includes an older version of GParted, in which case you could use the GParted Live CD:
http://gparted.sourceforge.net/livecd.php
(which is also how Ubuntu recommends using it anyway)
This isn't a direct answer to the question, it's for people who land here from a google search, wondering if you can do an online shrink of /
- yes, you can
I needed more swap, and btrfs doesn't allow you to run swap from a file, so I had to shrink / and recreate partitions (carefully). Here is what I did, bearing in mind I wanted an extra 64G of swap:
sudo btrfs filesystem resize -96g /
sudo fdisk /dev/nvme0n1
I had 2 partitions, 1 for / and the other for swap. Deleted both, then recreated (before a reboot!). Old size of partition 1 was 867.5G and new size was 803.5, giving an extra 64G for the swap partition. When it asks if you want to overwrite the btrfs signature, say NO! If you're doing swap as I was, you'll need to change "type" of the swap partition to "82", either when creating, or afterwards using the "t" command
After reboot, I ran
sudo btrfs filesystem resize max /
df -h
then reports:
/dev/nvme0n1p1 804G 498G 305G 63% /
So, the reason I shrank the filesystem by 96G initially, was because different tools calculate G and M slightly differently, so it's to make super sure the filesystem doesn't get clobbered by the new partition being slightly smaller than the filesystem on it!
After reboot, if you've changed your swap partition, you will also need to run mkswap on it e.g. sudo mkswap /dev/nvme0n1p2
and either "swapon" or reboot again
This should possibly go at the top of the answer, but needless to say, you run a set of the above commands at your own risk, and you should make sure any important files are backed up in case something goes wrong and you lose the whole filesystem! I hope this helps someone!
Use this command to install btrfs
support in GParted
:
sudo apt install btrfs-progs
After that you can easily shrink and resize your partition in GParted
. This way you can do all the work in GUI. No command line needed