enospc 오류로 인해 btrfs 잔액 실패

enospc 오류로 인해 btrfs 잔액 실패

[아마도 잘못된 장소라고 생각했기 때문에 stackoverflow에서 인계받았습니다.]

현재 ZFS를 실행하는 NAS의 가능한 대체품으로 btrfs를 테스트하고 있습니다. 각각 20GB씩 4개의 장치를 생성하고 balance -dconvert=raid5옵션을 사용하여 btrfs 파일 시스템을 생성했습니다. 그런 다음 5GB 파일을 사용하여 FS를 채우기 시작했습니다(현재는 9개가 있습니다). ddfrom 을 사용하여 이러한 파일을 만든 후 dev/zero시작했습니다 balance btrfs balance start. 잠시 후 오류가 발생합니다 error during balancing '.' - No space left on device. syslog에 다음 오류가 표시됩니다 btrfs: 4 enospc errors during balance.

-dusage=0(예상대로) 성공적으로 완료되었지만 balance -dusage=90단순히 필터 없이 균형을 다시 실행하면 balance작동하지 않습니다. 내가 왜 이 일에 이렇게 신경을 쓰는 걸까? 데이터 손상이 발생하지 않는지 확인하기 위해 raid5 btrfs 볼륨에서 하드 디스크를 제거하면 어떤 일이 발생하는지 테스트했습니다. 하드디스크를 제거한 후 다른 하드디스크를 추가하고 실패한 하드디스크를 제거하고 싶었습니다. enospc 오류로 인해 이 프로세스도 실패했습니다.

아래 추가 정보:

(FS의 마운트 지점은 입니다 /mnt/raid/)

linux:/mnt/raid # btrfs filesystem show
Label: 'test_raid5'  uuid: 8b137115-974e-4f91-a243-ec6239c34761
    Total devices 4 FS bytes used 45.06GiB
    devid    4 size 20.00GiB used 16.03GiB path /dev/sde
    devid    3 size 20.00GiB used 17.00GiB path /dev/sdd
    devid    2 size 20.00GiB used 17.00GiB path /dev/sdc
    devid    1 size 20.00GiB used 16.04GiB path /dev/sdb

Label: none  uuid: 69c33622-1c80-4dc3-9c01-24c27def730c
    Total devices 1 FS bytes used 1.04GiB
    devid    1 size 18.92GiB used 3.04GiB path /dev/sda2

linux:/mnt/raid # btrfs filesystem df /mnt/raid/
Data, RAID5: total=48.00GiB, used=45.01GiB
System, RAID1: total=32.00MiB, used=12.00KiB
System: total=4.00MiB, used=0.00
Metadata, RAID1: total=1.00GiB, used=53.69MiB


linux:/mnt/raid # btrfs version
Btrfs v0.20-rc1+20130701


linux:/mnt/raid # uname -a
Linux linux 3.11.6-4-default #1 SMP Wed Oct 30 18:04:56 UTC 2013 (e6d4a27) x86_64 x86_64 x86_64 GNU/Linux


linux:/mnt/raid # cat /etc/os-release
NAME=openSUSE
VERSION="13.1 (Bottle)"
VERSION_ID="13.1"
PRETTY_NAME="openSUSE 13.1 (Bottle) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:13.1"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"

내 btrfs 볼륨의 균형을 재조정할 수 있도록 여기에 더 많은 공간을 추가해야 한다는 것을 믿을 수 없습니다. 이것에 대한 아이디어가 있나요?

답변1

나는 "NAS"를 위해 zfs 대신 btrfs의 길을 택하기로 결정했습니다. 이전에 두 가지를 모두 테스트했는데 ZFS가 훨씬 더 잘 문서화되어 있다는 것을 인정해야 합니다. 명령줄 인터페이스에 정말 매료되었기 때문에 저에게는 ZFS가 "더 나은" 선택이었습니다.

하지만 놀라운 일이 있었습니다. RAID-5에 ZFS용 3개의 2TB HDD가 있고 이를 4개의 TB HDD로 늘리려는 경우 이는 쉽지 않습니다. ZFS 풀을 3HDD로 풀하고 새 HDD를 추가하려면 3개를 더 추가해야 합니다(총 6x 2TB). 6개의 HDD가 있고 FS를 늘리려면 6개를 더 추가해야 합니다. NAS 인클로저가 4개 이상의 디스크를 수용할 수 없고 아직 4개의 HDD를 구입할 여유가 없다는 문제가 있었습니다. 이런 점에서 Btrfs는 훨씬 더 유연합니다.

하지만 제가 시작했을 때 RAID-5/6은 정말 제대로 지원되지 않았습니다. 나도 당신처럼 몇 가지 테스트를 했는데, 결국 파일 시스템이 손상되었습니다. RAID-1에서도 동일한 테스트를 수행했는데 문제가 없었습니다! 그래서 저는 RAID-1에서 Btrfs를 사용하기로 결정했고 Ubuntu LTS를 사용하는 대신 항상 최신 Ubuntu 릴리스를 사용하여 최신 커널 및 btrfs-tools 패키지를 가져오고 있습니다(저는 Ubuntu 15.04를 사용하고 있으며 전환할 준비를 하고 있습니다) ~15.10). Ubuntu 16.04가 출시되면 아마도 (테스트 후) 마침내 RAID-5로 이동하고 이를 고수할 것입니다. 최근 커널 변경 로그에서 RAID-5/6의 코드 기반이 훨씬 더 성숙하다는 것을 확인했습니다.

그래서 당신의 문제에. 특히 RAID-5 또는 6에서 Btrfs를 사용해보고 싶다면,최신 Linux 배포판을 사용하세요.(예: Arch Linux, 최신 Ubuntu, Fedora 등) 다른 배포판의 안정성이 부족할 수 있지만 Btrfs의 경우 훨씬 더 안정적일 수 있습니다.

"사용 사례"에 대한 한 가지 참고 사항: Btrfs 파일 시스템은 넣은 파일 크기에 비해 다소 작습니다. 아마도 실제 시나리오를 잘 반영하지 못할 것입니다. 큰 파일(비디오)과 작은 파일(사진, 문서)을 생성하고 파일 시스템을 최대 80%까지 채워야 합니다. 이를 테스트하는 한 가지 좋은 방법은 파일 시스템에 많은 파일을 넣은 다음 벤치마킹 자체가 아니라 이로 인해 발생하는 스트레스에 대해 파일 시스템 벤치마크를 실행하는 것입니다. 당신은 사용할 수 있습니다포로닉스 테스트 스위트이를 위해(예 phoronix-test-suite benchmark pts/disk: ).

관련 정보