welcome: please sign in
location: MirrorsArch

镜像站架构

架构

现在镜像站的同步节点是 solar。mirrors.tuna.tsinghua.edu.cn 指向 solar。镜像数据存储在多台机器上,我们用 NFS 提供一个单一的访问入点。

同步脚本概览

修改同步脚本/配置的修改流程请看 MirrorMaintenance

solar: 同步的脚本和日志存放在 /home/mirror/{bin,etc,log}。镜像站的存储在 /mirror。HTTP Portal 的 PHP 在 /home/mirror/www

状态统计

在 solar 日志根目录目录下有一个 status.txt 文件,这是一个逗号分割文件(CSV),每行格式为

name, current, stamp, files_count, files_transferred_count, size, size_transferred, literal, matched, file_list_size, file_list_generate_time, file_list_transfer_time, bytes_sent, bytes_received

一共 14 个字段。

实现

脚本 repo: http://git.tuna.tsinghua.edu.cn/?p=mirror/scripts.git;a=summary

  1. bin/mkstatus 用于从 rsync 的日志中提取信息,生成各个同步源的 status.txt;这个文件没有第一个 name 字段。这个脚本只适用于 rsync,如果要加入其它的同步协议需要另外实现 mkstatus

  2. bin/sumstatus 用于把各个源的 status.txt 汇总成上面所说的 14 字段的文件。

这两个脚本在 bin/sync(主同步脚本)完成同步后触发。例如 FreeBSD 镜像的同步:

  1. /home/ftp/bin/sync freebsd 调用;

  2. 同步完成后调用 mkstatus,更新 /home/mirror/log/freebsd/status.txt(13-field CSV);

  3. 调用 sumstatus,更新 /home/mirror/log/status.txt(14-field CSV)。

具体实现请读源码(RTFSC)。

分流

鉴于solar上TUNET IPv4的带宽消耗远远小于CERNET IPv4的消耗。于是使用TUNET将数据分流到其他节点

需要解决的问题

上面的问题似乎可以用iptables + 虚拟局域网 搞定。


CategoryArch

MirrorsArch (2012-12-14 17:25:40由alick编辑)