하나의 500GB 디스크로 구성된 기존 BTRFS 파일 시스템이 있고 홈 서버의 저장 용량을 늘리기 위해 2TB 디스크를 구입했으며 기존 파일 시스템에 새 디스크를 추가하려고합니다. 내가 읽은 바에 따르면 더 큰 디스크와 작은 디스크 사이의 크기 차이를 낭비하지 않고 다른 크기의 디스크를 처리 할 수있는 BTRFS 설치 프로그램이없는 것 같습니다. 공간을 낭비하지 않고 파일 시스템에서 두 개의 디스크를 결합 할 수 있습니까?
답변
Btrfs는 데이터 및 메타 데이터에 서로 다른 레이드 레벨을 사용할 수 있습니다.
메타 데이터 (디렉토리 등)의 경우 기본값 (한 디스크의 경우에도)은 raid1이고 데이터의 경우 raid0입니다.
이것을 변경하지 않으면 두 번째 디스크를 추가하고 재조정을 실행하는 데 아무런 문제가 없을 것입니다. 메타 데이터 만 두 디스크에 모두 복사되므로 메타 데이터 크기는로 볼 수 있습니다 btrfs filesystem df /
. 디스크 중 하나라도 실패하면 데이터가 손실된다는 점에 유의하십시오.
2TB 디스크가 500g보다 훨씬 큰 sooooooooo이기 때문에 새 디스크를 추가하고 이전 디스크를 제거하면 더 나은 확률을 제공 할 것입니다 (하나의 특정 드라이브의 실패 확률은 두 드라이브 중 하나의 확률보다 훨씬 적습니다) 실패).
나중에 비슷한 크기의 드라이브를 사용하여 RAID 어레이를 확보하려는 경우 데이터와 메타 데이터 모두에 대해 raid1을 사용하여 새 드라이브에서 파일 시스템을 다시 만든 다음 모든 것을 복사 할 수 있습니다. 나중에 더 많은 돈이 있으면 두 번째 2TB 드라이브를 구입하십시오.
추신 : 단일 드라이브에서 raid1을 사용하면 데이터가 해당 드라이브의 두 위치에 저장되어 손상을 방지하고 저장 공간이 줄어 듭니다 (메타 데이터에 대한 정말 좋은 아이디어).
추신 : 진지하게, 메타 데이터에 raid1을 사용하지 않으려 고 유혹하십시오. psss : btrfs가 공격 레벨을 동적으로 변경할 수있는 가능성이 매우 높습니다.
답변
다중 장치 Btrfs 파일 시스템의 데이터 블록에 사용하는 프로파일에 따라 다릅니다.
-
RAID0 (데이터 블록의 기본값)을 사용하면 각 디스크는 어레이에서 가장 작은 디스크 용량까지만 채워질 수 있습니다.
-
데이터 블록에 “단일”프로파일을 사용하면 각 디스크가 전체 용량으로 채워집니다. 예 :
mkfs.btrfs -d single /dev/sda /dev/sdb
2TB 및 3TB 디스크가있는 파일 서버가 있습니다. USB 플래시 드라이브에서 Ubuntu 12.10을 부팅합니다. 먼저 -d single
옵션 없이 Btrfs 파일 시스템을 만들었습니다 .
mkfs.btrfs /dev/sda /dev/sdb
결과는 약 4TB (3.45 바이너리 TB 파일 데이터) 만 저장할 수있었습니다.
# btrfs fi show
Label: none uuid: 3a63a407-dd3c-46b6-8902-ede4b2b79465
Total devices 2 FS bytes used 3.22TB
devid 2 size 2.73TB used 1.82TB path /dev/sdb
devid 1 size 1.82TB used 1.82TB path /dev/sda
# btrfs fi df /mnt/btrfs1/
Data, RAID0: total=3.45TB, used=3.22TB
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=264.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=94.00GB, used=4.29GB
Metadata: total=8.00MB, used=0.00
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 4.6T 3.3T 241G 94% /mnt/btrfs1
used 1.82TB
3TB 드라이브에 유의하십시오 .
그런 다음 “balance”명령을 사용하여 데이터 블록을 RAID0에서 “single”프로필로 변환했습니다.
btrfs balance start -dconvert=single /mnt/btrfs1
4TB 데이터의 균형을 맞추는 데 오랜 시간 (약 30 시간)이 걸렸습니다. 그러나 완료 후 전체 5TB (4.36 이진 TB 파일 데이터)를 사용할 수 있습니다.
# btrfs fi show
Label: none uuid: 3a63a407-dd3c-46b6-8902-ede4b2b79465
Total devices 2 FS bytes used 4.34TB
devid 2 size 2.73TB used 2.73TB path /dev/sdb
devid 1 size 1.82TB used 1.82TB path /dev/sda
# btrfs fi df /mnt/btrfs1/
Data: total=4.36TB, used=4.34TB
System, RAID1: total=40.00MB, used=500.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=94.00GB, used=4.01GB
Metadata: total=8.00MB, used=0.00
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 4.6T 4.4T 27G 100% /mnt/btrfs1
답변
우분투에서 btrfs와 함께 여러 장치를 사용했으며 정상적으로 작동했습니다. btrfs는 실제로 표준 RAID 레벨을 구현하지는 않습니다. 선택적 스트라이핑 및 미러링을 구현하지만 실제 RAID는 아닙니다.
답변
btrfs에서 다른 크기의 드라이브를 결합 할 수 있습니다.
그러나 현재 btrfs는 ENOSPC (장치에 남은 공간 없음)를 잘 처리하지 못합니다.
예를 들어 RAID0 (스트라이프) 어레이에 3 개의 드라이브를 설치했습니다. 1x500GB, 1x250GB, 1x160GB
800-900GB의 디스크 공간이 있다고 가정합니다.
이것은 df -h
다음과 같습니다 :
/ dev / sdf 848G 615G 234G 73 % / media / btrfs
그러나 어레이에 더 이상 데이터를 저장할 수 없습니다. (공백 없음)
btrfs filesystem df /media/btrfs
방송이 저 :
데이터 : 총 = 612.51GB가 사용될 = 612.51GB
메타 데이터 합계 = 1.62GB 사용 = 990.73MB
시스템 : 총 = 12.00MB가 사용될 = 48.00KB
리 밸런싱조차도 도움이되지 않았습니다.
메일 링리스트에서 나는이 호출 계산을 보았습니다 :
가장 작은 드라이브의 크기 * 배열의 드라이브 수
(공간이 더 필요하지만 160GB * 3 = 480GB 대신 612GB)
따라서 현재 개발 상태에서는 btrfs가 한 배열에서 다른 크기를 지원하더라도 모든 공간을 사용할 수는 없습니다.
2.6.35-22-generic 커널과 함께 Ubuntu 10.10을 사용하고 있습니다.
답변
업데이트 : 아래 답변은 Linux 3.0이 출시되기 전에 작성되었습니다. Linux 3.0에는 준 라운드 로빈 패치가 포함되어 있습니다.
데이터 미러링 또는 스트라이핑을 수행 할 때 여유 공간이있는 다른 장치에 두 번째 미러 또는 스트라이프 청크를 할당해야합니다. BTRFS는 라운드 로빈 방식으로 장치에 청크를 할당하므로 크기가 다른 장치가있는 경우 공간이 손실 될 수 있습니다.
이를 개선하기 위해 파이프 라인 에는 준 라운드 로빈 패치 가 있습니다. 물론 500GB와 2TB 디스크가 있으면 다른 장치의 모든 청크를 페어링하는 것은 여전히 불가능합니다. 이 패치는 1 x 1TB + 2 x 500GB와 같은 상황에서 각 작은 디스크가 다른 작은 디스크 대신 큰 디스크로 미러링 / 스트라이핑을 선호해야하는 경우에 더 적합합니다.
귀하의 상황에서는 데이터에 “단일”모드를 사용합니다 ( mkfs.btrfs -d single
). 청크는 해당 모드에서 쌍을 이루지 않으므로 크기가 다른 장치에는 문제가 없다고 생각합니다. 그래도 테스트하지 않았습니다.
답변
이 문제는 Gotchas 페이지의 btrfs-raid1 설정에만 적용됩니다 .
- 할당은 라운드 로빈 단위로 수행됩니다. 일치하지 않는 드라이브 (크기가 다른 볼륨)로 구성된 볼륨에 대한 raid1 전략이있는 경우 가장 큰 단일 드라이브에 많은 공간이 남아있는 동안 더 작은 볼륨이 채워질 수 있습니다. 이이 문제가되는 것을 확인할 수 있는 경우 사이에 차이가 ‘DF’및 ‘btrfs를 파일 시스템 DF [마운트 포인트] AND
경우 “사용”, “총”및 “데이터”라인에서 같은 것으로 후자 명령은 방송 . 균형 재조정은이 문제를 완화시킬 수 있습니다. (2.6.33)
- 볼륨이 이러한 방식으로 채워지면 재조정으로 인해 ENOSPC ( “NO SPaCe 남은 장치에 NO NO SPaCe 오류”)가 재 빠르게 발생할 수 있습니다. 이 손상을 해결하기 위해 비교적 큰 파일을 삭제해야 할 경우 재조정이 성공합니다. (2.6.33)
- 균형을 다시 맞추면 장시간 동안 CPU 사용량이 매우 높아질 수 있습니다. (2.6.34 및 2.6.35)