02.03.2019 22:06, Stéphane Lesimple пишет: > Hi! > > I've been using btrfs as my main NAS filesystem for a bunch of years > now, and I always found that managing dozens of subvolumes having dozens > of snapshots each was not really straightforward, especially when trying > to get an overview of "what's taking space on my filesystem". I was > missing the niceness of the "zfs list" command, which does that quite well. > > So I've started to write a wrapper around btrfs qgroup show and btrfs fi > df (then btrfs fi usage when it got out), to implement this broad > overview of my filesystem I was missing so much. > Adding some features along the way, I thought that after all it might > also be useful to others than me! > > As stdout is better than a thousand words, here's for example how it can > show you a complex hierarchy of intricated snapshots: > > root@nas:~# btrfs-list /mnt/a > NAME TYPE REFER USED > MOUNTPOINT > 4582dacf fs - 0.00 > (1002.88M free) > [main] mainvol 16.00k 16.00k /mnt/a > sub1 subvol 16.00k 16.00k > sub1/.snap1 snap 16.00k 16.00k > sub1/.snap2 snap 16.00k 16.00k > sub1/subsub1 snap 16.00k 16.00k > sub1/subsub1/.snap3 snap 16.00k 16.00k > sub1/subsub1/subsubsub1 snap 16.00k 16.00k > sub1/subsub1/subsubsubsub1 snap 16.00k 16.00k > > btrfs does not have anything resembling USED in zfs, so I'm afraid this will be confusing to anyone coming from zfs. In zfs datasets are hierarchical (including snapshots) so USED on every level is exactly the amount of space that will become available in parent dataset if this one is destroyed. This does not matter much without quota (as all datasets share one common pool of free space) but becomes quite visible as soon as you restrict dataset space consumption. In btrfs every subvolume is independent; what you show as USED is exclusive space; deleting subvolume does not mean its exclusively consumed space will be now accounted as available in another subvolume. Showing hierarchical list with USED column creates false expectations; I'd rather call it EXCL to make its meaning clear. That said, tool that lists qgroups with volume names is surely welcome. > Or how it can help you find big snapshots that you might want to get rid > of if you're running out of space: > > root@nas:~# btrfs-list --snap-min-used 4G --snap-only /tank > NAME TYPE > REFER USED MOUNTPOINT > backups/.snaps/skyline/20130213_231649_lastskyline rosnap > 22.52G 19.58G > backups/.snaps/box/20171231_221207_monthly.12 rosnap > 88.73G 4.96G > backups/.snaps/box/20180130_221209_monthly.11 rosnap > 91.25G 4.90G > backups/.snaps/box/20180307_154215_monthly.10 rosnap > 96.28G 10.72G > backups/.snaps/box/20190120_193004_weekly.3 rosnap > 56.45G 4.25G > backups/.snaps/nasroot/20180122_091325_monthly.12 rosnap > 34.65G 10.79G > backups/.snaps/nasroot/20180221_092311_monthly.11 rosnap > 31.96G 4.98G > backups/.snaps/nasroot/20180323_092734_monthly.10 rosnap > 33.69G 7.05G > backups/.snaps/nasroot/20180820_205559_monthly.5 rosnap > 31.74G 5.37G > .syncthing-bkp rosnap > 40.48G 8.15G > > Want to give it a try? Here you are: > https://github.com/speed47/btrfs-list > > There are a couple snapshots there too, to give you a rough idea of how > it looks like (yes, it also has nice colors) > > Happy btrfs weekend! >
