Apakah ada cara untuk memantau kemajuan keseimbangan btrfs?

13

Saya mengganti hard drive yang gagal di btrf cermin.

btrfs device delete missing /[mountpoint]butuh waktu sangat lama, jadi saya berasumsi bahwa itu sebenarnya menyeimbangkan data ke drive pengganti.

Apakah ada cara untuk memantau perkembangan operasi semacam itu?

Saya tidak perlu mengharapkan GUI yang cantik, atau bahkan penghitung%; dan saya bersedia menulis beberapa baris skrip shell jika itu perlu, tetapi saya bahkan tidak tahu harus mulai dari mana mencari data yang relevan. btrfs filesystem showmisalnya hanya hang, mungkin menunggu operasi saldo selesai sebelum menampilkan informasi apa pun tentang cermin fs.

pengguna50849
sumber

Jawaban:

25
btrfs balance status /mountpoint

man 8 btrfs

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

        Options

        -v   be verbose
llua
sumber
4
Terima kasih, ternyata dalam kasus saya btrf tampaknya tidak menganggap operasi saat ini sebagai keseimbangan, karena tidak menghasilkan apa-apa, tapi saya melihat ada juga "ganti status", yang mungkin bisa saya gunakan, seandainya saya menggunakan perintah ganti . Bagaimanapun juga jawaban yang bagus.
user50849
Status keseimbangan harus terlihat seperti: Balance on '/volume1' is running 28 out of about 171 chunks balanced (1156 considered), 84% left. Tidak seperti biasanya, persentase dihitung mundur.
mwfearnley
7
sudo btrfs fi show

ini akan menampilkan sesuatu seperti:

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

Dan jika Anda perhatikan bahwa id perangkat # 4 terlihat sedikit berbeda dari yang lain. ketika Anda melakukan "penghapusan perangkat btrfs hilang / mntpoint" maka itu akan mulai membuat kembali meta / data serangan yang diperlukan untuk membebaskan drive "hilang" itu.

jika Anda melakukan sesuatu seperti

"watch -n 10 sudo btrfs fi show"

maka Anda dapat melihat ruang pada perangkat "hilang" yang menyinggung secara bertahap semakin kecil dan lebih kecil sampai operasi selesai dan itu akan dihapus dari fi.

Kartu as
sumber
4

BTRFS mungkin perlu waktu membaca atau menyusun ulang data sebelum menulis data ke drive yang Anda harapkan.

Anda dapat melihat berapa banyak waktu CPU yang dikhususkan untuk operasi BTRFS termasuk penyeimbangan kembali, tambah, hapus, konversi, dll:

ps -ef | grep btrfs

Untuk melihat seberapa sibuk setiap drive, instal sysstat, dan jalankan:

iostat

Tambahkan beberapa opsi untuk membuat iostat menampilkan statistik dalam megabita dan memperbarui setiap 30 detik:

iostat -m -d 30

Contoh hasil dari scrub sehingga tidak ada penulisan selama interval ini:

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

Instal dan jalankan munin untuk melihat grafik historis dari aktivitas drive dan banyak info lainnya. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04

Charles Young
sumber
1

Saya juga bertanya-tanya kapan penghapusan yang tahan lama akan selesai jadi saya membuat sepotong kode shell ini:

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

Ini akan memberi Anda bilah kemajuan yang bagus seperti ini:

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

Gagasan umum adalah menggunakan pvuntuk menampilkan kemajuan. Karena perintah itu hanya memungkinkan untuk memonitor byte yang mengalir melalui pipa yang kita gunakan dduntuk menghasilkan jumlah nol yang tepat dan menyalurkannya pv.

Keuntungan dari metode ini adalah Anda mendapatkan bilah kemajuan yang bagus. Namun, karena sepertinya btrfsselalu menghapus data satu GB pada satu waktu, dibutuhkan beberapa waktu hingga perbedaan baru dalam ukuran byte dapat diamati.

Untuk mengatasi masalah ini, bendera -aditambahkan ke bendera default pvuntuk membuatnya menampilkan tingkat transmisi rata-rata (karena laju transmisi normal saat ini adalah 0 sebagian besar waktu).

Saya menyadari ini bukan solusi terbaik tetapi yang terbaik yang bisa saya dapatkan. Jika seseorang memiliki ide untuk perbaikan, beri tahu saya! :)

Erki der Loony
sumber