Có cách nào để theo dõi tiến trình cân bằng btrfs không?


13

Tôi đang thay thế một ổ cứng bị lỗi trong một btrfs được nhân đôi.

btrfs device delete missing /[mountpoint]đang mất rất nhiều thời gian, vì vậy tôi cho rằng nó thực sự cân bằng lại dữ liệu cho ổ đĩa thay thế.

Có cách nào để theo dõi tiến trình của một hoạt động như vậy không?

Tôi không nhất thiết mong đợi một GUI trông đẹp mắt, hoặc thậm chí là bộ đếm%; và tôi sẵn sàng viết một vài dòng kịch bản shell nếu cần thiết, nhưng tôi thậm chí không biết bắt đầu tìm kiếm dữ liệu liên quan ở đâu. btrfs filesystem showví dụ chỉ bị treo, có lẽ đang chờ hoạt động cân bằng kết thúc trước khi nó hiển thị bất kỳ thông tin nào về fs được nhân đôi.

Câu trả lời:


25
btrfs balance status /mountpoint

man 8 btrfs

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

        Options

        -v   be verbose

4
Cảm ơn, hóa ra trong trường hợp của tôi, btrfs dường như không coi hoạt động hiện tại là số dư, vì nó không trả lại gì, nhưng tôi thấy cũng có một "trạng thái thay thế", mà tôi có thể đã sử dụng, tôi đã sử dụng lệnh thay thế . Câu trả lời tốt bất kể.
user50849

Trạng thái cân bằng sẽ trông giống như : Balance on '/volume1' is running 28 out of about 171 chunks balanced (1156 considered), 84% left. Bất thường, tỷ lệ phần trăm đếm ngược.
mwfearnley

7
sudo btrfs fi show

điều này sẽ tạo ra một cái gì đó như vậy:

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

Và nếu bạn nhận thấy id thiết bị số 4 trông hơi khác so với phần còn lại. khi bạn thực hiện "xóa thiết bị btrfs bị thiếu / mntpoint" thì nó sẽ bắt đầu tạo lại meta / dữ liệu đột kích cần thiết để giải phóng ổ đĩa "mất tích" đó.

nếu bạn làm một cái gì đó như

"watch -n 10 sudo btrfs fi show"

sau đó bạn có thể thấy không gian trên thiết bị "mất tích" vi phạm dần dần nhỏ hơn và nhỏ hơn cho đến khi hoàn thành thao tác và nó sẽ bị xóa khỏi fi.


4

BTRFS có thể mất một chút thời gian để đọc hoặc sắp xếp lại dữ liệu trước khi ghi dữ liệu vào ổ đĩa mà bạn muốn nó ghi vào.

Bạn có thể thấy thời gian CPU được dành cho các hoạt động BTRFS bao gồm cân bằng lại, thêm, xóa, chuyển đổi, v.v .:

ps -ef | grep btrfs

Để xem mức độ bận rộn của mỗi ổ đĩa, hãy cài đặt sysstat và chạy:

iostat

Thêm một số tùy chọn để làm cho iostat hiển thị số liệu thống kê tính bằng megabyte và cập nhật cứ sau 30 giây:

iostat -m -d 30

Đầu ra mẫu từ chà để không ghi trong khoảng thời gian này:

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

Cài đặt và chạy munin để xem các biểu đồ lịch sử của hoạt động ổ đĩa và nhiều thông tin khác. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ub Ubuntu-14-04


1

Tôi cũng đã tự hỏi khi việc xóa kéo dài sẽ kết thúc vì vậy tôi đã đưa ra đoạn mã shell nhỏ này:

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

Điều này sẽ cung cấp cho bạn một thanh tiến trình tốt đẹp như thế này:

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

Ý tưởng chung là sử dụng pv để hiển thị tiến độ. Vì lệnh đó chỉ cho phép giám sát các byte chảy qua một đường ống mà chúng ta sử dụng ddđể tạo ra một số không thích hợp và đưa chúng vào pv.

Ưu điểm của phương pháp này là bạn có được một thanh tiến trình tốt đẹp. Tuy nhiên, vì có vẻ nhưbtrfs luôn xóa dữ liệu một GB mỗi lần, phải mất một thời gian cho đến khi có thể thấy sự khác biệt mới về kích thước byte.

Để giải quyết vấn đề này cờ -a được thêm vào các cờ mặc định pvđể làm cho nó hiển thị tốc độ truyền trung bình (vì tốc độ truyền hiện tại thông thường sẽ là 0 trong hầu hết thời gian).

Tôi nhận ra đây không phải là giải pháp tốt nhất mà là giải pháp tốt nhất tôi có thể nghĩ ra. Nếu ai đó có ý tưởng cải tiến xin vui lòng cho tôi biết! :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.