Problem FAQ
m (→Defragmenting a directory doesn't work: reflinks =>reflink) |
|||
Line 41: | Line 41: | ||
# find -type f -xdev -print0 | xargs -0 btrfs fi defrag | # find -type f -xdev -print0 | xargs -0 btrfs fi defrag | ||
− | '''Caveat''': Defragmenting a file which has a COW copy (either a snapshot copy or one made with '' | + | '''Caveat''': Defragmenting a file which has a COW copy (either a snapshot copy or one made with ''cp --reflink'' or ''bcp'') will produce two unrelated files. If you defragment a subvolume that has a snapshot, you will roughly double the disk usage, as the snapshot files are no longer COW images of the originals. |
== Compression doesn't work / poor compression ratios == | == Compression doesn't work / poor compression ratios == |
Revision as of 08:04, 20 April 2011
Contents |
Filesystem can't be mounted by label
See the next section.
Only one disk of a multi-volume filesystem will mount
If you have labelled your filesystem and put it in /etc/fstab, but you get:
# mount LABEL=foo mount: wrong fs type, bad option, bad superblock on /dev/sdd2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so
or if one volume of a multi-volume filesystem fails when mounting, but the other succeeds:
# mount /dev/sda1 /mnt/fs mount: wrong fs type, bad option, bad superblock on /dev/sdd2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so # mount /dev/sdb1 /mnt/fs #
Then you need to ensure that you run a btrfs device scan first:
# btrfs device scan
This should be in many distributions' startup scripts (and initrd images, if your root filesystem is btrfs), but you may have to add it yourself.
Defragmenting a directory doesn't work
Running this:
# btrfs filesystem defragment ~/stuff
doesn't defragment the contents of the directory.
This is by design. btrfs fi defrag operates on the single filesystem object passed to it. This means that the command defragments just the metadata held by the directory object, and not the contents of the directory. If you want to defragment the contents of the directory, something like this would be more useful:
# find -type f -xdev -print0 | xargs -0 btrfs fi defrag
Caveat: Defragmenting a file which has a COW copy (either a snapshot copy or one made with cp --reflink or bcp) will produce two unrelated files. If you defragment a subvolume that has a snapshot, you will roughly double the disk usage, as the snapshot files are no longer COW images of the originals.
Compression doesn't work / poor compression ratios
First of all make sure you have passed "compress" mount option in fstab or mount command.
If yes, and ratios are unsatisfactory, then you might try "compress-force" option.
This way you make the btrfs to compress everything.
The reason why "compress" ratios are so low is because btrfs very easily backs out of compress decision. (Probably not to waste too much CPU time on bad compressing data).
Copy-on-write doesn't work
You've just copied a large file, but still it consumed free space. Try:
# cp --reflink=always file1 file2