btrfs 재조정의 진행 상황을 모니터링하는 방법이 있습니까?


13

미러 된 btrfs에서 고장난 하드 드라이브를 교체하고 있습니다.

btrfs device delete missing /[mountpoint]걸리는 매우 내가 실제로 대체 드라이브에서 데이터를 재조정 있다고 가정하므로, 긴.

그러한 작업의 진행 상황을 모니터링 할 수있는 방법이 있습니까?

필자는 꽤 멋진 GUI 또는 % 카운터를 기대하지는 않습니다. 필요한 경우 몇 줄의 셸 스크립트를 작성하려고하지만 관련 데이터를 어디에서 찾아야할지조차 모릅니다. btrfs filesystem show예를 들어, 미러링 된 fs에 대한 정보를 표시하기 전에 밸런스 작업이 완료 될 때까지 기다리면 중단됩니다.

답변:


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
고맙습니다, 내 경우에는 btrfs가 현재 작업을 균형으로 간주하지 않는 것으로 나타 났지만 아무것도 반환하지 않지만 대체 명령을 사용했을 가능성이있는 "바꾸기 상태"도 있습니다. . 좋은 대답이다.
user50849

잔액 상태는 다음과 같아야합니다 Balance on '/volume1' is running 28 out of about 171 chunks balanced (1156 considered), 84% left. 비정상적으로 백분율이 카운트 다운됩니다.
mwfearnley

7
sudo btrfs fi show

이것은 다음과 같이 출력됩니다 :

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

그리고 장치 ID # 4가 나머지와 약간 다르게 보입니다. "btrfs device delete missing / mntpoint"를 수행하면 "missing"드라이브를 확보하는 데 필요한 RAID 메타 / 데이터가 재생성되기 시작합니다.

당신이 같은 것을하면

"watch -n 10 sudo btrfs fi show"

그러면 작업이 완료 될 때까지 문제가되는 "누락 된"장치의 공간이 점점 작아지고 Fi에서 제거됩니다.


4

BTRFS는 데이터를 쓰려는 드라이브에 데이터를 쓰기 전에 데이터를 읽거나 다시 정렬하는 데 시간이 걸릴 수 있습니다.

재조정, 추가, 삭제, 변환 등을 포함하여 BTRFS 작업에 소요되는 CPU 시간을 확인할 수 있습니다.

ps -ef | grep btrfs

각 드라이브가 얼마나 바쁜지 보려면 sysstat를 설치하고 다음을 실행하십시오.

iostat

iostat show stats를 MB 단위로 만들고 30 초마다 업데이트하는 옵션을 추가하십시오.

iostat -m -d 30

이 간격 동안 쓰기가 없도록 scrub의 샘플 출력 :

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

munin을 설치하고 실행하여 드라이브 활동 및 기타 많은 정보의 히스토리 그래프를보십시오. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04


1

또한 오래 지속되는 삭제가 언제 완료되는지 궁금 해서이 작은 셸 코드를 생각해 냈습니다.

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

이렇게하면 다음과 같은 멋진 진행률 표시 줄이 나타납니다.

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

일반적인 아이디어는 pv진행 상황을 표시하는 데 사용 하는 것입니다 . 이 명령을 사용하면 파이프를 통해 흐르는 바이트 만 모니터링 할 수 있으므로 dd적절한 양의 0을 생성하고에 파이프합니다 pv.

이 방법의 장점은 멋진 진행률 표시 줄을 얻는 것입니다. 그러나 btrfs항상 한 번에 한 GB 씩 데이터를 삭제 하는 것처럼 보이기 때문에 새로운 바이트 크기 차이가 관찰 될 때까지 시간이 걸립니다.

이 문제를 해결하기 위해 플래그 -a가 기본 플래그에 추가되어 pv평균 전송 속도를 표시합니다 (정상 전류 전송 속도는 대부분 0이므로).

나는 이것이 최선의 해결책이 아니라 내가 생각해 낼 수있는 최선이라는 것을 알고 있습니다. 누군가 개선을위한 아이디어가 있다면 알려주세요! :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.