btrfs quota
Ve btrfs qgroups
(kota grupları) 'na bir göz atmalısınız .
Temel qgroups
olarak tam olarak istediğinizi yapın, alt hacimler tarafından ne kadar alan ayrıldığını takip ederler. qgroup
Bir btrfs
dosya sistemi için işlevselliği etkinleştirmek için aşağıdakileri yapmanız gerekir:
# btrfs quota enable /path/to/btrfs/filesystem
Ancak, bunu yapmadan önce, özellikle de birçok alt hacimli büyük dosya sistemleri için biraz zaman alacak olan verilerin tam bir yeniden hesaplanmasını tetiklediği konusunda uyarılmalıdırqgroup
. Bu işlem arka planda eşzamansız olarak çalışır. Zaten durumunu kontrol edebilirsiniz qgroups
ile
# btrfs qgroup show /path/to/btrfs/filesystem
Bu size böyle bir çıktı verecektir:
WARNING: rescan is running, qgroup data may be incorrect
qgroupid rfer excl
-------- ---- ----
0/5 843.69GiB 61.91MiB
0/4881 811.06GiB 9.34GiB
0/7990 867.32GiB 329.91MiB
0/8400 867.17GiB 37.64MiB
(İlk satırdaki uyarı, yeniden tarama devam ettiği sürece mevcuttur.)
Btrfs qgroup
her alt hacim için otomatik olarak bir a oluşturur . Bu durumda, alt hacim kimlikleri 4881, 7990 ve 8400 olan üç alt hacim vardır. Ön eğik çizgiden önceki kısım, seviyesidir qgroup
. Her alt hacim qgroup
0 seviyesindedir. Ek olarak qgroup
, her zaman ID 5'e sahip olan ve btrfs dosya sisteminin köküne karşılık gelen özel bir seviye 0 vardır.
qgroup
Yukarıdaki her çıktı için ne kadar alanın başvurduğunu gösterir. Bu, karşılık gelen alt hacmin, toplam boyutu gösterilen sayıya eşit olan dosyalar içerdiği anlamına gelir.
Ancak, anlık görüntüler ve btrfs alt hacimlerinin yazma-kopyalama özelliği nedeniyle dosyalar paylaşılabilir. Bu, dosyaların içeriğine (veya aslında uzantılarına) birden fazla alt hacim tarafından referans verilebileceği anlamına gelir. Bu, her bir alt hacim tarafından sadece ne kadar alan tahsis edildiğini ve başka herhangi bir alt hacim ile paylaşılmadığını gösteren ikinci sayı ile ifade edilir . Bir alt birimi silerseniz, bu gerçekten serbest bırakılacak alandır.
Birden fazla alt hacmi silerseniz ne kadar alanın boşaltılacağını öğrenmek istiyorsanız, yukarıda belirtilen seviyeleri kullanabilirsiniz. bir hiyerarşiqgroups
içinde düzenlenir ve üst düzeylerdeki gruplar (0'dan yüksek) alt düzeylerin bilgilerini toplar .
Böylece, 4881 ve 7990 alt hacimlerinin (yukarıdaki örnekte) silinmesi durumunda ne kadar alanın serbest bırakılacağını bulmak için qgroup
, seviye 1'de yeni (keyfi olarak ID 0 ile, ancak burada istediğinizi seçebilirsiniz) oluşturun
# btrfs qgroup create 1/0 /path/to/btrfs/filesystem
Ardından, yeni oluşturulan öğeyi silmek istediğiniz alt hacimlere qgroup
üst qgroups
öğe olarak atayın
# btrfs qgroup assign 0/4881 1/0 /path/to/btrfs/filesystem
# btrfs qgroup assign 0/7990 1/0 /path/to/btrfs/filesystem
Bu, kota bilgilerinin bir süre sonra yeniden taranmasını tetikler. Eğer bitmişse ve şimdi yayınlıyorsanız
# btrfs qgroup show -p /path/to/btrfs/filesystem
şöyle bir çıktı alırsınız:
qgroupid rfer excl parent
-------- ---- ---- ------
0/5 1.38TiB 2.51GiB ---
0/4881 1.11TiB 10.86GiB 1/0
0/7990 1.23TiB 502.41MiB 1/0
0/8400 1.34TiB 1.69GiB 1/0
1/0 1.51TiB 132.23GiB ---
( Üst / alt ilişkisini gösteren çıktıya sütun -p
eklemek için bayrağı ekledim .)parent
qgroups
Şimdi ile satır, qgroup
1/0
silmek istediğiniz her iki alt hacim tarafından ne kadar alanın başvurulduğunu söyler ve daha da önemlisi, yalnızca onlar tarafından ne kadar alan ayrıldığını gösterir . Bu, her iki alt birimi de silerseniz boşaltılacak alan miktarıdır.
Acaba neden bu kadar yavaş olacağını söylüyorlar?
Bunun nedeni, anlık görüntülerin yanı sıra btrfs'nin yazma üzerine kopyalama özelliğidir. Btrfs'de (normalde) bir anlık görüntü oluşturursanız, yeni oluşturulan alt hacimdeki anlık görüntüyü içeren tüm gerçek veriler anlık görüntünün kaynağı ile paylaşılır. Yalnızca kaynakta bir dosya değiştirildiğinde veya değiştirildiğinde farklı içeriğe (uzantılara) işaret eder. Bu, bir alt hacim silindiğinde gerçekte ne kadar alanın boşaltılacağını değerlendirmeyi çok zorlaştırır, çünkü diğer alt hacimlerle paylaşılan tüm alanı hesaba katmanız gerekir.