Bir btrfs yeniden dengesinin ilerlemesini izlemenin bir yolu var mı?


13

Yansıtılmış bir btrfs'de başarısız bir sabit sürücüyü değiştiriyorum.

btrfs device delete missing /[mountpoint]alıyor çok ben aslında yedek sürücüye üzerinden veri yeniden dengeleme oluyor varsayalım, böylece uzun.

Böyle bir operasyonun ilerlemesini izlemenin bir yolu var mı?

Mutlaka hoş görünen bir GUI, hatta% sayacı beklemiyorum; ve gerekliyse birkaç satır kabuk komut dosyası yazmaya hazırım, ancak alakalı verileri nerede aramaya başlayacağımı bile bilmiyorum. btrfs filesystem showörneğin sadece kilitleniyor, muhtemelen denge işleminin yansıtılmış fs hakkında herhangi bir bilgi görüntülemeden önce bitmesini bekliyorum.

Yanıtlar:


26
btrfs balance status /mountpoint

man 8 btrfs

 [filesystem] balance status [-v] <path>
        Show status of running or paused balance.

        Options

        -v   be verbose

4
Teşekkürler, benim durumumda btrfs'nin geçerli işlemi bir denge olarak görmediği anlaşılıyor, çünkü bu hiçbir şey döndürmüyor, ancak replace komutunu kullanmış olsaydım muhtemelen kullanmış olabileceğim bir "değiştirme durumu" da var . Ne olursa olsun iyi cevap.
user50849

Denge durumu gibi görünmelidir: Balance on '/volume1' is running 28 out of about 171 chunks balanced (1156 considered), 84% left. Alışılmadık şekilde, yüzde geri sayım yapar.
mwfearnley

7
sudo btrfs fi show

bu şöyle bir şey çıkarır:

Label: none  uuid: 2c97e7cd-06d4-4df0-b1bc-651397edf74c
        Total devices 16 FS bytes used 5.36TiB
        devid    1 size 931.51GiB used 770.48GiB path /dev/sdc
        devid    2 size 931.51GiB used 770.48GiB path /dev/sdg
        devid    3 size 931.51GiB used 770.48GiB path /dev/sdj
        devid    4 size 0.00 used 10.02GiB path
        devid    5 size 931.51GiB used 770.48GiB path /dev/sdh
        devid    6 size 931.51GiB used 770.48GiB path /dev/sdi
        devid    7 size 931.51GiB used 770.48GiB path /dev/sdd
        devid    8 size 931.51GiB used 770.48GiB path /dev/sdo
        devid    9 size 465.76GiB used 384.31GiB path /dev/sdn
        devid    10 size 931.51GiB used 770.48GiB path /dev/sdp
        devid    11 size 931.51GiB used 770.48GiB path /dev/sdr
        devid    12 size 931.51GiB used 770.48GiB path /dev/sdm
        devid    13 size 931.51GiB used 769.48GiB path /dev/sdq
        devid    14 size 931.51GiB used 770.48GiB path /dev/sdl
        devid    15 size 931.51GiB used 770.48GiB path /dev/sde
        devid    16 size 3.64TiB used 587.16GiB path /dev/sdf

Btrfs v3.12

Ve eğer cihaz kimliği # 4'ün diğerlerinden biraz farklı göründüğünü fark ederseniz. "btrfs cihazı eksik / mntpoint'i sil" yaptığınızda, o "eksik" sürücüyü boşaltmak için gerekli baskın meta / verilerini yeniden oluşturmaya başlayacaktır.

eğer böyle bir şey yaparsan

"watch -n 10 sudo btrfs fi show"

işlem tamamlanıncaya kadar sorun yaratan "eksik" cihazdaki alanın giderek küçüldüğünü ve fi'den kaldırılacağını görebilirsiniz.


4

BTRFS, yazmayı beklediğiniz sürücüye veri yazmadan önce verileri okumak veya yeniden düzenlemek biraz zaman alabilir.

Yeniden dengeleme, ekleme, silme, dönüştürme vb. Dahil BTRFS işlemlerine ne kadar CPU zamanı ayrıldığını görebilirsiniz:

ps -ef | grep btrfs

Her sürücünün ne kadar meşgul olduğunu görmek için sysstat'ı yükleyin ve çalıştırın:

iostat

Iostat istatistiklerini megabayt olarak göstermek ve her 30 saniyede bir güncellemek için bazı seçenekler ekleyin:

iostat -m -d 30

Fırçalamadan örnek çıktısı, bu nedenle bu aralıkta yazma yapılmaz:

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda             700.30       170.10         0.00       6804          0
sdb               0.78         0.00         0.01          0          0
sdc             520.20       127.98         0.00       5119          0
sdd             405.72        92.02         0.00       3680          0
sde             630.05       153.66         0.00       6146          0
sdf             627.43       153.60         0.00       6144          0

Sürücü aktivitesinin geçmiş grafiklerini ve diğer birçok bilgiyi görmek için munin yükleyin ve çalıştırın. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04


1

Ben de bu kadar küçük bir kabuk kodu parçası ile geldi bu yüzden uzun ömürlü bir silmek ne zaman biteceğini merak ediyordum:

get_bytes() {
  btrfs device usage --raw /mnt/data | egrep -- '-[0-9]+' | sed -E 's/[^0-9]+([0-9]+)/\1/'
}

prev=$(get_bytes)

while [ 1 ]; do
  current=$(get_bytes)
  diff=$((current-prev))
  if [ "$diff" -gt 0 ]; then
    dd if=/dev/zero iflag=count_bytes count="$diff" 2>/dev/null
  fi
  prev="$current"
  sleep 1
done | pv -petraW -s $(get_bytes) >/dev/null

Bu size böyle güzel bir ilerleme çubuğu verecektir:

0:13:54 [0,00 B/s] [16,0MiB/s] [>                             ]  1% ETA 19:23:19

Genel fikir pvilerlemeyi göstermek için kullanmaktır . Bu komut yalnızca kullandığımız bir borudan akan baytların izlenmesine izin verdiği içindd , uygun miktarda sıfır oluşturmak ve bunları içine borulamak için kullanırız pv.

Bu yöntemin avantajı, güzel bir ilerleme çubuğu elde etmenizdir. Ancak, göründüğü içinbtrfs her zaman bir kerede bir GB veri sildiğinden, bayt boyutlarında yeni bir farkın görülmesi biraz zaman alır.

Bu sorunu gidermek için bayrak -a , pvortalama bir iletim hızı görüntülemesi için varsayılan bayraklarına eklenir (çünkü normal akım iletim hızı çoğu zaman 0 olacaktır).

Bunun en iyi çözüm değil, bulabileceğim en iyi çözüm olduğunun farkındayım. Birisi iyileştirmeler için fikirleri varsa lütfen bana bildirin! :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.