Un dos problemas cos que me atopo acotio durante os cursos é o xeito de compartir ficheiros de tamaño considerable entre os alumnos. Imaxes de discos de diferentes tipos e ficheiros de máquinas virtuais son ferramentas básicas en según que tipo de cursos, e movelos pola rede local non resulta sinxelo cando están aloxados nun único ordenador e 15 alumnos desexan acceder a eles, todos á vez.
Só por curiosidade podemos facer a estimación:
100Mibitseg / 15 PC = 6,66Mibitseg
6,66Mibitseg - 5% = 6,61Mibitseg optimistas despues de descontar cabeceiras
700MiB * 8 = 5600Mibit
5600Mibit / 6,61Mibitseg = 847 seg = 14 minútos para copiar un CD-ROM de 700MiB
4GiB * 1024 * 8 = 32768Mibit
32768Mibit / 6,61Mibitseg = 4957 seg = 82 minútos para un DVD
E é un calculo moi optimista para unha rede ideal. Quen o teña feito algunha vez xa sabe que os tempos reais adoitan ser “algo” máis longos.
Como o mercores empezo un curso longo no que vou ter que mover este tipo de ficheiros moi decotío, púxenme a buscar unha solución. Pasarme un dia copiando as imaxes antes do inicio do curso no é unha solución. É unha putada. Ademáis, sempre xurde algú “imprevisto que estaba sen preveer” e é necesario pasar algun ficheiro a maiores.
Entón pensei no P2P. É unha boa solución para Internet, así que nunha rede local ten que ser a caña. Mirando nos repositorios da Ubuntu Hardy atopo que están dispoñibles dous trackers de BitTorrent. O nativo e un módulo para Apache2. O nativo proporciona máis ferramentas e parce máis facil de empregar, así que despois de probar os dous quédome con el:
#aptitude update
# aptitude install bittorrent
Arrancamos o tracker
$ cd $HOME
$ bttrack --port 6969 --dfile dstate
Creamos os ficheiros de metadatos (.torrent)
$ cd /directorio/das/imaxes
$ btmakemetafile nomedaimaxe.ext http://meuordenador.local:6969/announce
Se a aula está montada con Ubuntu ou outro sistema compatible con mDNS/DNS-SD poderás empregar o nome do teu equipo dentro da zona .local, como no exemplo. Se non podes empregar o nome do teu equipo e desexas conservar os torrents dun aula a outra, co conseguinte cambio de IP e demáis problemas, poderás solucionalo con btreannounce, incluido no paquete que instalamos ó principio.
Agora iniciamoso noso cliente de BitTorrent, que fará de primeiro seed. Podes empregar o cliente gráfico preferido ou podes empregar as ferramentas de CLI incluidas no paquete bittorrent. Por exemplo:
$ cd /directorio/das/imaxes
$ btlaunchmanycurses ./ --max_uploads 8
Esto lanzará un cliente con tódalas imaxes que xeneramos anteriormente. É importante lanzar o programa desde o directorio no que se atopan as imaxes orixinais, para que as localice e empece a compartilas cara a rede no canto de tentar descargalas. Realizará unha comprobación da integridade das imaxes atopadas. Esta comprobación pode tardar en rematar, así que si desexamos que as imaxes estén dispoñibles de xeito inmediato agregaremoso modificador
--check_hashes 0
A opción –max_uploads define o número de subidas simultaneas que desexamos ter. Por defecto son 4, que me parécen poucas. Poñer o total de ordenadores na aula pode ser demasiado. Probaréi con 8 a ver que tal é o resultado. Teñamos en conta que á sua vez, os oito que descarguen serviran de fonte para o resto. Xa vos comentarei cal é o número óptimo.
Xa temos todo listo. Só temos que distribuir os ficheiros .torrent para que os abran nos equipos dos alumnos (se temos algún sistema inoperativo instalado teremos que instalar previamente un cliente de BitTorrent no mesmo) e agardar a que as imaxes baixen a una velocidade punta teórica de 11,8MiB por segundo nunha rede a 100Mibits (6 minutos para un DVD, 1 minuto para un CD, repito, teóricos para unha rede ideal) ¡independentemente do número de clientes!.
Algún apuntamento final. Nin sequera intentes probar esto nunha rede con ancho de banda compartido (redes wifi ou que dependan de hubs). O rendemento máximo dependetá non só do tipo de rede (100Base-T ou 100Base-TX) senon tamén da velocidade de barebone interno do switch. Nos switchs de gana baixa esta velocidad non chega nin de lonxe ó ideal (200Mibits multiplicados polo número de bocas) así que no momento en que se sature empezarán a producirse colisións e perderse paquetes, reducindose o rendemento. Tamén existirá moita diferencia no rendemento dunha rede full-duplex e unha half-duplex. Vamos, que probando este sistema podes descubrir facilmente que a tua rede local non é tan boa como crias.
O luns agardo poder facer unha proba na aula e falar dos resultados.
