두 Linux 서버간에 수백만 개의 파일 동기화


10

NFS 를 통해 ~ 7 백만 개의 파일 (대부분 이미지)이 포함 된 디렉토리를 로컬 디스크에서 네트워크 클라이언트로 내보내는 서버가 있습니다 .

HA를 위해 두 번째 것을 추가하고 가능한 두 델타가 적은 첫 번째와 동기화해야합니다.

연구에 따르면 lsyncd 또는 다른 inotify 기반 솔루션 을 사용하는 것이 좋지만 inotify 시계를 만드는 파일 수가 많으면 영원합니다. 대한 똑같은 rsync를 .

다른 가능한 해결책은 drdb 또는 ceph 또는 glusterfs 와 같은 클러스터 파일 시스템 으로 보이지만 그 경험이 없으며 어느 것이 더 적합하고 많은 파일에 잘 대처하고 여전히 적절한 성능을 제공하는지 알 수 없습니다.

활동은 거의 기록되지 않고 대부분 읽습니다.


2
DRDB는 잘 작동하며 2 시스템 클러스터 설정에서 설정하고 이해하기 쉽습니다. 그러나 가까운 시일 내에 확장되지는 않을 것입니다. 주제에 대한 다른 접근 방법이있을 수도 있습니다. highscalability.com/blog/2012/6/20/…
Rui F Ribeiro

rsync데몬 모드에서 실행하려고 했습니까 ? 이렇게하면 rsync명령을 실행할 때 파일 목록의 초기 생성 속도가 빨라지 지만 파일 양에 따라 RAM이 많이 사용됩니다.
토마스

얼마나 견딜 수 있습니까? 몇 분 (또는 그 이상)을 견딜 수있는 경우 옵션을 사용 btrfs하거나 zfs옵션 일 수 있으며 크론 작업과 결합하여 스냅 노트 및 zfs send/ 또는 btrfs send백업 서버에 생성합니다. snapshot + send가 파일 타임 스탬프 또는 체크섬을 비교할 필요가 없기 때문에 rsync보다 훨씬 빠르고 훨씬 더 적은 워크로드 (송신기 및 수신자 시스템 모두).
cas

BTW에서 ceph 를 사용하면 파일 시스템 대신 객체 저장소 (예 : amazon s3 또는 openstacks의 신속)와 같은 옵션을 사용할 수 있습니다. 실제로 ceph의 fs는 실제로 객체 저장소 위에 계층화되어 있습니다.
cas

@Thomas : rsync -a데몬 (소스에서) 사용이 완료되는 데 200 분이 소요되며 이는 허용되는 것 이상입니다. @cas : btrfs send내가 살펴볼만한 가치가 있을지도 모른다. 파일을 사용하는 앱 개발자가 아니기 때문에 객체 저장소로 이동할 수 없습니다.
user60039

답변:


1

drbd와 같이 데이터에 무관 한 복제를 제안하는 경향이 있습니다. 많은 수의 파일로 인해 "block storage"보다 높은 수준에서 실행되는 모든 것이 rsync를 사용하거나 inotify watch를 만드는 것처럼 나무를 걷는 데 많은 시간을 소비하게됩니다.

내 개인적인 이야기를 뒷받침하는 짧은 버전 : 나는 Ceph를 사용하지 않았지만 이것이 Gluster와의 유사성에 기초한 주요 시장 목표가 아니라고 확신합니다. 그러나 지난 몇 년 동안 Gluster를 사용하여 이러한 종류의 솔루션을 구현하려고했습니다. 몇 가지 주요 버전 업데이트가 있었지만 대부분의 시간 동안 작동하고 있었지만 문제는 없었습니다. 목표보다 성능이 중복되는 경우 Gluster가 좋은 해결책이 아닐 수 있습니다. 특히 사용 패턴에 stat () 호출이 많은 경우 Gluster는 복제를 제대로 수행하지 않습니다. 이는 복제 된 볼륨에 대한 통계 호출이 모든 복제 된 노드 (실제로는 "브릭")로 이동하지만 호스트 당 하나의 브릭을 가지기 때문입니다. 예를 들어 양방향 복제본이있는 경우 클라이언트의 각 stat ()는 현재 데이터를 사용하고 있는지 확인하기 위해 두 브릭의 응답을 기다립니다. 그런 다음 중복을 위해 기본 Gluster 파일 시스템을 사용하는 경우 FUSE 오버 헤드가 발생하고 캐싱이 부족합니다 (Gluster를 NFS로 백엔드로 사용하고 중복을 위해 자동 마운터를 사용하는 대신 stat () 이유 때문에 여전히 짜증납니다) . 그러나 Gluster는 여러 서버에 데이터를 분산시킬 수있는 대용량 파일을 실제로 사용합니다. 데이터 스트라이핑 및 배포는 실제로 작동하기 때문에 잘 작동합니다. 최신 RAID10 유형 복제는 기존의 직선 복제 볼륨보다 성능이 우수합니다. 그러나 내가 추측하는 것은 귀하의 사용 모델이므로, 나는 그것에 반대하는 것이 좋습니다. 그런 다음 중복을 위해 기본 Gluster 파일 시스템을 사용하는 경우 FUSE 오버 헤드가 발생하고 캐싱이 부족합니다 (Gluster를 NFS로 백엔드로 사용하고 중복을 위해 자동 마운터를 사용하는 대신 stat () 이유 때문에 여전히 짜증납니다) . 그러나 Gluster는 여러 서버에 데이터를 분산시킬 수있는 대용량 파일을 실제로 사용합니다. 데이터 스트라이핑 및 배포는 실제로 작동하기 때문에 잘 작동합니다. 최신 RAID10 유형 복제는 기존의 직선 복제 볼륨보다 성능이 우수합니다. 그러나 내가 추측하는 것은 귀하의 사용 모델이므로, 나는 그것에 반대하는 것이 좋습니다. 그런 다음 중복을 위해 기본 Gluster 파일 시스템을 사용하는 경우 FUSE 오버 헤드가 발생하고 캐싱이 부족합니다 (Gluster를 NFS로 백엔드로 사용하고 중복을 위해 자동 마운터를 사용하는 대신 stat () 이유 때문에 여전히 짜증납니다) . 그러나 Gluster는 여러 서버에 데이터를 분산시킬 수있는 대용량 파일을 실제로 사용합니다. 데이터 스트라이핑 및 배포는 실제로 작동하기 때문에 잘 작동합니다. 최신 RAID10 유형 복제는 기존의 직선 복제 볼륨보다 성능이 우수합니다. 그러나 내가 추측하는 것은 귀하의 사용 모델이므로, 나는 그것에 반대하는 것이 좋습니다. stat () 이유 때문에 여전히 짜증납니다. 그러나 Gluster는 여러 서버에 데이터를 분산시킬 수있는 대용량 파일을 실제로 사용합니다. 데이터 스트라이핑 및 배포는 실제로 작동하기 때문에 잘 작동합니다. 최신 RAID10 유형 복제는 기존의 직선 복제 볼륨보다 성능이 우수합니다. 그러나 내가 추측하는 것은 귀하의 사용 모델이므로, 나는 그것에 반대하는 것이 좋습니다. stat () 이유 때문에 여전히 짜증납니다. 그러나 Gluster는 여러 서버에 데이터를 분산시킬 수있는 대용량 파일을 실제로 사용합니다. 데이터 스트라이핑 및 배포는 실제로 작동하기 때문에 잘 작동합니다. 최신 RAID10 유형 복제는 기존의 직선 복제 볼륨보다 성능이 우수합니다. 그러나 내가 추측하는 것은 귀하의 사용 모델이므로, 나는 그것에 반대하는 것이 좋습니다.

머신간에 마스터 선거를하거나 분산 잠금을 구현할 수있는 방법을 찾아야 할 수도 있습니다. 공유 블록 장치 솔루션에는 다중 마스터 인식 (GFS와 같은) 파일 시스템이 필요하거나 하나의 노드 만 파일 시스템 읽기 / 쓰기를 마운트해야합니다. 파일 시스템은 일반적으로 그 아래의 블록 장치 수준에서 데이터가 변경 될 때 싫어합니다. 즉, 고객이 어느 마스터인지, 직접 쓰기 요청을 할 수 있어야합니다. 그것은 큰 성가신 것으로 판명 될 수 있습니다. GFS 및 모든 지원 인프라가 옵션 인 경우 다중 마스터 모드 ( "이중 기본"이라고 함)의 drbd가 제대로 작동 할 수 있습니다. 이에 대한 자세한 내용은 https://www.drbd.org/en/doc/users-guide-83/s-dual-primary-mode 를 참조하십시오.

당신이가는 방향에 상관없이, 이것은 SAN 회사에 돈을 싣지 않고 실시간으로하는 것이 여전히 큰 고통이라는 것을 알게 될 것입니다.


cron의 rsync 명령에서 분산 파일 시스템을 사용하는 것으로 마이그레이션하는 초기 단계에 있습니다. Gluster가 모든 브릭에서 stat ()를 실행하면 솔루션으로 다시 고려해야 할 수도 있습니다.
Jesusaur

1
이는 복제 된 파일 시스템의 경우에만 해당됩니다. stat()보고있는 특정 블록의 복제본이있는 모든 브릭에서 실행됩니다 . 예를 들어, 2x2 스트라이프 복제본이있는 경우 stat복제 된 블록이있는 두 개의 브릭에서 실행되지만 다른 블록에서는 실행되지 않습니다. 작은 파일이 많은 응용 프로그램 (각각 4K 데이터 아래에있는 백만 개의 파일)에서 NFS 나 FUSE는 복제 된 볼륨에서 우수한 성능을 제공하지 않았습니다. 그리고 여러 구성에서 ~ 20 대의 컴퓨터에 대한 지리 복제는 매우 신뢰할 수 없었습니다.
dannysauer

1
귀하의 마일리지는 다를 수 있지만 기본 파일 시스템에서 rsync로 전환하기 위해 Gluster에서 모든 곳 (Gluster가 실제로 잘 수행하는 다른 멋진 기능은 아니지만 복제를 위해 독점적으로 사용하고 있음)으로 옮겼습니다. :) 이제 cron 대신 lsyncd ( github.com/axkibe/lsyncd ) 로 이동하려고 하므로 Gluster 오버 헤드없이 거의 실시간에 도달 할 수 있습니다.
dannysauer

0

Proxmox VE 설정을 통해 rsync에서 ceph로 전환했습니다.

이제 라이브 복제로 하나의 클러스터에서 14TB를 관리하고 있습니다. 거의 4 년 동안.

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