먼저, Rocky Linux의 미러링을 시작하기 위해서는 최소 350GB(현재 저장소 용량이 300GB정도 됩니다) 정도 용량을, 안정적인 미러링을 위해서는 400GB정도 용량을 확보해 두어야 합니다. 개인이 사용할 미러라면 이정도 요건만 만족해도 되지만 구성한 미러를 public list에 올리기 위해서는 다음 조건 역시 만족해야 합니다.
- 서버는 IDC 등 24/7 운영이 가능한 곳에 위치해야 합니다.
- 고정 아이피가 필요합니다.
- 최소 100Mbps의 대역폭은 확보되어야 합니다.(대표적으로 오라클의 경우 VM.Standard.E2.1.Micro 인스턴스는 최대 public 대역폭이 50Mbps뿐입니다)
- IPv4 & IPv6을 동시에 지원하는 것이 권장됩니다(필수는 아닙니다)
- 클라우드플레어 등 CDN 사용은 권장되지 않습니다.(dnf에서 빠른 미러 검색시 ping을 이용하는데 CDN 사용시 ping은 낮으면서 실 접속속도는 매우 느릴 수 있습니다)
- 쿠바, 이란, 북한, 시리아 등 미국 수출 관리 규정에서 금지하고 있는 국가에서는 공개 미러링 서버 운영이 불가능합니다.(물론 여기 접속하시는 분이라면 해당사항은 없겠습니다만)
즉 사실상 홈서버로는 갖추기 힘든 요건입니다.
또한 공용 미러의 경우 미러링은 최소 하루에 6회 이상 이루어져야 합니다. 단순한 미러링 작업의 경우
rsync -aqH --delete 미러주소 대상경로
와 같이 미러링이 가능하나 이경우 모든 파일에 대해 비교를 수행하므로 서버에 무리가 갈 수 있습니다.(특히 Rocky Linux 메인 rsync 서버를 소스로 사용하는 경우)
따라서 다음 절차에 따라 미러링 서버를 초기 구성하는 것이 권장됩니다
- https://github.com/rocky-linux/rocky-tools/tree/main/mirror 에서 미러링을 위한 스크립트 mirrorsync.sh를 다운로드합니다.
- 파일 내용 중 src와 dst를 적절히 수정합니다. 특히 초기 미러링의 경우 msync 대신 근처 미러링 서버를 이용합니다.(한국의 경우 사실상 rsync://mirror.anigil.com/rocky 가 유일합니다) dst의 경우 ${mirrormodule} 형태로 자동으로 폴더명이 붙으니 그 앞부분만 적당히 수정하면 됩니다(예. /var/www/mirror/${mirrormodule})
- 초기 미러링을 수행합니다. 네트워크 상태에 따라 시간이 걸릴 수 있습니다.
- 초기 미러링이 완료되었다면 스크립트의 src를 원복합니다.(공용 미러로 사용하는 경우) 혹은 그대로 둡니다(사설 미러로 사용하는 경우)
- https://github.com/rocky-linux/rocky-tools/blob/main/mirror/example.crontab 파일을 참고해 crontab에 등록합니다. 당연하다면 당연하겠지만 /path/to/your 부분은 스크립트가 있는 폴더로 적당히 수정해주셔야 합니다. 앞서서 다운로드한 스크립트를 사용하는 경우 맨 아래 위치한 매 시간 15분 미러링을 사용할 수 있습니다.(변경사항이 있을때만 전체 미러링을 수행합니다)
- 스크립트 사용시 로그 파일이 생기는데 이를 공개하면 미러 운영시 투명성이 확보될 수 있습니다.(필자가 운영중인 미러의 경우 과기원 미러처럼 로그 및 현재 동기화 상태를 제공하고 있습니다)
이후 mirrorlist에 등록하는 과정은 다음 글에서 알아보도록 하겠습니다.
Github @YJSoft