Re: snapshot space use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 9, 2015 at 5:32 PM, Dongsheng Yang
<yangds.fnst@xxxxxxxxxxxxxx> wrote:
> On 04/10/2015 07:39 AM, Hugo Mills wrote:
>>
>> On Thu, Apr 09, 2015 at 04:27:08PM -0700, Justin Maggard wrote:
>>>
>>> On Thu, Apr 9, 2015 at 3:24 PM, Hugo Mills <hugo@xxxxxxxxxxxxx> wrote:
>>>>
>>>> On Thu, Apr 09, 2015 at 03:01:55PM -0700, Justin Maggard wrote:
>>>>>
>>>>> On Wed, Apr 8, 2015 at 5:45 PM, Qu Wenruo <quwenruo@xxxxxxxxxxxxxx>
>>>>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> You can use btrfs quota feature to do it.
>>>>>> Like this:
>>>>>>
>>>>>> # btrfs quota enable <MNT_POINT>
>>>>>> # btrfs quota rescan -w <MNT_POINT>
>>>>>> # btrfs qgroup show -prce <MNT_POINT>
>>>>>> qgroupid rfer    excl    max_rfer max_excl parent  child
>>>>>> -------- ----    ----    -------- -------- ------  -----
>>>>>> 0/5      2248704 12288   0        0        ---     ---
>>>>>> 0/256    5509120 3272704 0        0        ---     ---
>>>>>>
>>>>>>
>>>>>> rfer is all the space the subvolume takes.
>>>>>> excl is the exclusive space the subvolume takes.
>>>>>>
>>>>> Yes, but this isn't as useful as it sounds if you have more than one
>>>>> snapshot.  Because if a file is included in at least two snapshots,
>>>>> it's no longer exclusive.  So AFAICT even with btrfs qgroups, you
>>>>> still cannot answer the question "How much space are my snapshots
>>>>> using?" for a given subvolume, unless you have only one snapshot.  But
>>>>> I'd be happy to be informed otherwise. :-)
>>>>
>>>>     There are basically two useful answers to that question, depending
>>>> on how the question is specified, exactly:
>>>>
>>>> 1) How much space would I use if I copied this subvolume to a
>>>>     different filesystem?
>>>>
>>>> 2) How much space would I free up if I deleted this subvolume?
>>>>
>>>>     Part 1 is the rfer answer. Part 2 is the excl answer.
>>>>
>>>>     Which of these do you mean by "How much space are my snapshots
>>>> using?". The question as posed is highly ambiguous, and needs
>>>> considerably more precision before it can be answered.
>>>>
>>>>     If you can pose the question more precisely, you might wish to ask
>>>> one of those questions about N subvolumes as a group -- this is
>>>> where(*) you would define a qgroup covering the subvols you're
>>>> interested in, and then use the above interface to ask the question
>>>> for the group of subvols as a whole.
>>>
>>> To be more precise, let's consider an example, where we have a
>>> subvolume named "stuff"; and two snapshots of "stuff", "snap1" and
>>> "snap2".  So the question I'm posing is:
>>>
>>> How much space would I free up if I were to remove my snapshots,
>>> "snap1" and "snap2", but keep "stuff" intact?
>>>
>>> I can't use the rfer value from snap1 and snap2, because in general
>>> most of that space is shared by "stuff" and would not be freed.  I
>>> could look at the excl column for snap1 and snap2 and add them up; but
>>> if they shared extents with each other (and not with "stuff"), those
>>> extents are no longer exclusive, and thus not accounted for.  So I
>>> would have to delete either snap1 or snap2 in order to answer my
>>> question using qgroups.
>>>
>>> I can't think of a way to define a qgroup that would be able to answer
>>> my question, although I'm admittedly no expert in qgroups either.
>>
>>     I think you'd define a qgroup comtaining snap1 and snap2, and look
>> at the excl value.
>
>
> Agreed, This is a possible method to get what you want. We can create a
> qgroup
> in a higher level, as a pool.
> # btrfs qgroup create 1/0 /MNT
>
> And then assign your snapshots into this qgroup.
> # btrfs qgroup assign 0/xxx 1/0 /MNT
> # btrfs qgroup assign 0/xxx 1/0 /MNT
>
> *Considering we can not update the quota number automatically in moving
> qgroup
> we need a rescan here.
> # btrfs quota rescan -w /MNT
>
> Then you can get the information you want by
> #btrfs qgroup show -prce /MNT
>

Nice, thanks for the input Hugo and Yang!  I'll play with that a bit.
I was assuming the excl value wouldn't be effective since the extents
are still shared by the original subvolume.

-Justin

> Thanx
> Yang
>
>> Anyone out there with qgroups experience who can
>> tell us how/whether that would do the job?
>>
>>     Hugo.
>>
>>> -Justin
>>>
>>>>     Hugo.
>>>>
>>>> (*) I'm not an expert in qgroups. I may have the idea completely
>>>> wrong, but I think this is the right kind of approach.
>>>>
>>>>
>>>>> -Justin
>>>>>
>>>>>> You can also refer to 'btrfs-quota'(8) and 'btrfs-qgroup'(8),
>>>>>> Also the following wiki can help:
>>>>>> https://btrfs.wiki.kernel.org/index.php/Quota_support
>>>>>>
>>>>>> NOTE: quota is not so stable and has some problem, but should give
>>>>>> you enough info.
>>>>>>
>>>>>> Thanks,
>>>>>> Qu
>>>>>>
>>>>>>> # zfs list -t snapshot
>>>>>>> NAME                        USED  AVAIL  REFER  MOUNTPOINT
>>>>>>> hetz0/be0-mail@2015-03-10  2.88G      -   387G  -
>>>>>>> hetz0/be0-mail@2015-03-11  1.12G      -   388G  -
>>>>>>> hetz0/be0-mail@2015-03-12  1.11G      -   388G  -
>>>>>>> hetz0/be0-mail@2015-03-13  1.19G      -   388G  -
>>>>>>> hetz0/be0-mail@2015-03-14  1.02G      -   388G  -
>>>>>>> hetz0/be0-mail@2015-03-15   989M      -   386G  -
>>>>>>>
>>>>>>> Is there any way to do something similar to the above ZFS command?
>>>>>>> It's
>>>>>>> handy
>>>>>>> to know which snapshots are taking up the most space, especially when
>>>>>>> multiple
>>>>>>> subvols are being snapshotted.
>>>>>>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux