facultat d’informatica de barcelona` universitat
TRANSCRIPT
Facultat d’Informatica de Barcelona
UNIVERSITAT POLITECNICA DE
CATALUNYA (UPC) BarcelonaTech
TFG
Implementacio d’un sistema de
comparticio de fitxers
Autor: Aniol Gamiz Quer
Director: Sergi More Codina
Ponent: Xavier Martorell Bofill
Departament d’Arquitectura de Computadors
ResumEn un centre de recerca com el BSC es va identificar que la comparticio de
fitxers no estava ben solucionada en el model implantat actualment. S’ha fet
una recerca entre diferents solucions i s’ha trobat que Nextcloud es el producte
que compleix mes requeriments pel que fa al producte que busquem. S’hi ha
realitzat un disseny del sistema final que inclou un backend i un frontend. El
backend esta compost pels diferents serveis que necessita la plataforma per fun-
cionar, que son Apache, MariaDB, PHP i Redis. Dintre del backend tambe hem
afegit un servei de Docker per poder executar un contenidor de paquets amb la
plataforma OnlyOffice de manera que els diferents usuaris de Nextcloud puguin
editar fitxers concurrentment. Tambe dintre del backend s’ha habilitat la con-
nexio amb el servidor de LDAP del centre per utilitzar els usuaris ja existents.
En la part del frontend tenim les diferents interfıcies web que es trobaran els
usuaris quan es connectin amb el navegador sigui per compartir arxius o per
poder editar documents.
S’ha realitzat el pas a produccio aplicant un monitoreig als diferents serveis de
manera que en cas d’alguna fallada ens salta una alarma i podem actuar en
consequencia.
Una vegada testejat amb usuaris s’ha comprovat que la majoria de requeriments
que tenıem al principi del projecte es compleixen correctament exceptuant dos
casos determinats: el bloqueig de fitxers no es suportat per aquesta plataforma
i el mapeig a Windows d’una unitat per protocol de xarxa DAV es problematic
perque la implementacio d’aquest protocol en Windows es defectuosa.
Finalment s’han fet diferents tests d’usuaris per comprovar que la interfıcie web
funciona correctament i tests d’escalabilitat comprovant mesures de rendiment
de CPU, memoria i xarxa per veure que l’aplicacio no carrega el servidor exces-
sivament.
ResumenEn un centro de investigacion como el BSC se identifico que la comparticion de
ficheros no estaba bien solventada en el modelo implantado actualmente. Se ha
hecho una busqueda de diferentes soluciones y se ha encontrado que Nextcloud
es el producto que cumple mas requisitos. Se ha realizado un diseno del sistema
final que incluye un backend y un frontend. El backend esta compuesto por los
diferentes servicios que necesita la plataforma para funcionar, que son Apache,
MariaDB, PHP y redis. Dentro del backend tambien hemos anadido un servicio
de Docker para poder ejecutar un contenidor de paquetes con la plataforma
OnlyOffice, de este modo los usuarios podran editar ficheros concurrentemen-
te. Tambien dentro del backend se ha habilitado la conexion con el servidor de
LDAP del centro para utilizar los usuarios ya existentes.
En la parte del frontend tenemos las diferentes interfaces web que se van a en-
contrar los usuarios cuando se conecten con el navegador sea para compartir
archivos o para editar documentos.
Se ha realizado el paso a produccion aplicando un monitoreo a los diferentes
servicios de modo que en caso de fallo de alguno de ellos nos va a saltar una
alarma y vamos a poder actuar en consecuencia.
Una vez testeado con usuarios se ha comprobado que la mayorıa de requeri-
mientos que tenıamos al principio del proyecto se cumplen correctamente ex-
ceptuando dos casos determinados: el bloqueo de ficheros no es soportado por
esta plataforma y el mapeo en Windows de una unidad por protocolo de red
DAV es problematico porque la implementacion de este protocolo en Windows
es defectuosa.
Finalmente se han hecho diversos tests de usuarios para comprobar que la in-
terfaz web funciona correctamente y otros de escalabilidad comprobando que
medidas de rendimiento de CPU, memoria y red para ver que la aplicacion no
carga el servidor excesivamente.
AbstractWe have identified that the file-sharing between users is not working correctly in
BSC. Research has been done between different solutions and it has been found
that Nextcloud is the product that fits best with our problem. The design of the
system includes the backend and the frontend. The backend is composed of all
the different services the platform needs to work, which are Apache, MariaDB,
PHP, and Redis. Inside backend, we can also find Docker service, to execute
OnlyOffice software where the users can edit concurrently among other users,
and connection to the LDAP server, where we take the information users.
Inside the frontend, we have different web interfaces that users found when they
connect to the system.
The transition to production has been done applying monitoring to the different
services so in the case one of them fails we will receive an alarm.
Once tested with users, we can say that the majority of the initial requirements
we had at the beginning of the project are fulfilled correctly except in two cer-
tain cases: file locking is not supported on this platform and network mapping
using the DAV protocol because of the implementation of this protocol in cer-
tain operating systems.
Finally, we’ve done many user tests to prove the web interface and some scala-
bility tests to check the status of CPU, memory, and network and see how the
system charge is affected.
Index
1 Introduccio 3
1.1 Context d’aplicacio . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Marc teoric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Problema a resoldre . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Actors implicats . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Justificacio 5
3 Abast 6
3.1 Objectiu principal . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Subobjectius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.1 Suport del servei . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.2 Obtenir feedbac constant . . . . . . . . . . . . . . . . . . 6
3.3 Requeriments funcionals . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.1 Client Web . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3.2 Edicio compartida de documents . . . . . . . . . . . . . . 7
3.3.3 Bloqueig de documents . . . . . . . . . . . . . . . . . . . 7
3.3.4 Muntatge local . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3.5 Suport d’aplicacions desktop . . . . . . . . . . . . . . . . 7
3.3.6 Creacio d’espais compartits . . . . . . . . . . . . . . . . . 7
3.3.7 Quotes d’usuari i grup . . . . . . . . . . . . . . . . . . . . 7
3.3.8 Suport per autenticar-se . . . . . . . . . . . . . . . . . . . 7
3.3.9 Suport de grups per LDAP . . . . . . . . . . . . . . . . . 8
3.4 Possibles obstacles i riscos . . . . . . . . . . . . . . . . . . . . . . 8
4 Metodologia i rigor 8
4.1 Metodologia escollida . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Seguiment del projecte . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3 Metode de validacio . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Estimacio del temps necessari 9
6 Tasques 10
6.1 Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.2 Descripcio de les tasques . . . . . . . . . . . . . . . . . . . . . . . 11
6.3 Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Gestio del risc 16
8 Pressupost 16
8.1 Identificacio dels costos . . . . . . . . . . . . . . . . . . . . . . . 16
8.1.1 Cost del personal . . . . . . . . . . . . . . . . . . . . . . . 16
8.1.2 Costos de les tasques . . . . . . . . . . . . . . . . . . . . . 17
8.1.3 Costos generics . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1.4 Contingencies . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.1.5 Imprevistos . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.2 Cost final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.3 Control de gestio . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
9 Sostenibilitat 22
9.1 Reflexio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.2 Matriu de sostenibilitat . . . . . . . . . . . . . . . . . . . . . . . 22
9.3 Aspectes ambientals . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.4 Aspectes economics . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.5 Aspectes socials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10 Desviacions 25
10.1 Canvis a les tasques del projecte . . . . . . . . . . . . . . . . . . 25
10.2 Canvis en els objectius del projecte . . . . . . . . . . . . . . . . . 26
11 Gestio de recursos 27
11.1 [T6] Obtencio dels recursos hardware . . . . . . . . . . . . . . . . 27
11.2 [T7] Obtencio dels recursos software . . . . . . . . . . . . . . . . 28
12 Disseny 29
12.1 Esquema de disseny . . . . . . . . . . . . . . . . . . . . . . . . . 29
12.2 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
12.3 Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
13 Implementacio 32
13.1 [T8] Afegir el domini al DNS . . . . . . . . . . . . . . . . . . . . 32
13.2 [T9] Generacio dels certificats SSL . . . . . . . . . . . . . . . . . 32
13.3 [T10] Instal·lar el software al servidor . . . . . . . . . . . . . . . 33
13.3.1 Instal·lacio dels requisits de Nextcloud . . . . . . . . . . 34
13.3.2 Instal·lacio de Nextcloud . . . . . . . . . . . . . . . . . . 35
13.3.3 Configuracio d’Apache2 . . . . . . . . . . . . . . . . . . . 38
13.3.4 Instal·lacio d’OnlyOffice . . . . . . . . . . . . . . . . . . 40
13.4 Logica de l’autenticacio . . . . . . . . . . . . . . . . . . . . . . . 42
13.5 [T11] Integracio del software amb LDAP . . . . . . . . . . . . . . 43
13.6 [T12] Integracio del software amb el CAS del centre . . . . . . . 44
13.7 [T13] Optimitzacions del software . . . . . . . . . . . . . . . . . . 45
13.7.1 Configuracio del cron de PHP . . . . . . . . . . . . . . . . 45
13.7.2 Configuracio de la cache . . . . . . . . . . . . . . . . . . . 46
13.7.3 Backup de Nextcloud . . . . . . . . . . . . . . . . . . . . 48
13.8 Upgrade de la versio de Nextcloud . . . . . . . . . . . . . . . . . 49
14 Testing 53
14.1 Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
14.1.1 Autenticacio: . . . . . . . . . . . . . . . . . . . . . . . . . 53
14.1.2 Sincronitzacio amb usuari de LDAP: . . . . . . . . . . . . 54
14.1.3 Pujada de fitxers: . . . . . . . . . . . . . . . . . . . . . . . 54
14.2 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
14.2.1 CPU i memoria: . . . . . . . . . . . . . . . . . . . . . . . 55
14.2.2 Xarxa: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
15 Passar el servei a produccio 63
15.1 Monitoritzacio dels serveis . . . . . . . . . . . . . . . . . . . . . . 63
15.2 Manteniment dels usuaris . . . . . . . . . . . . . . . . . . . . . . 65
16 Lleis i regulacions 66
17 Sostenibilitat 67
17.1 Aspectes ambientals . . . . . . . . . . . . . . . . . . . . . . . . . 67
17.2 Aspectes economics . . . . . . . . . . . . . . . . . . . . . . . . . . 68
17.3 Aspectes socials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
18 Conclusions 71
18.1 Objectius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
18.2 Personalment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
18.3 Treball futur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
18.4 Scripts utilitzats en el tests . . . . . . . . . . . . . . . . . . . . . 76
18.5 Taules de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Index de taules
1 Caracterıstiques dels diferents productes. Font: [8] . . . . . . . . 6
2 Tasques del projecte. Font: Propi . . . . . . . . . . . . . . . . . . 14
3 Costos d’un departament de sistemes. Font: Propi . . . . . . . . 17
4 Costos de les tasques. Font: Propi . . . . . . . . . . . . . . . . . 18
5 Costos d’infraestructures. Font: Propi . . . . . . . . . . . . . . . 19
6 Costos de hardware. Font: Propi . . . . . . . . . . . . . . . . . . 19
7 Costos generics. Font: Propi . . . . . . . . . . . . . . . . . . . . . 20
8 Costos de les contingencies Font: Propi . . . . . . . . . . . . . . 20
9 Costos dels imprevistos Font: Propi . . . . . . . . . . . . . . . . 20
10 Cost total del projecte Font: Propi . . . . . . . . . . . . . . . . . 21
11 Matriu de sostenibilitat. Font: [12] . . . . . . . . . . . . . . . . . 22
12 Tasques del projecte. Font: Propi . . . . . . . . . . . . . . . . . . 25
13 Matriu de sostenibilitat. Font: [12] . . . . . . . . . . . . . . . . . 67
15 Rendiment de la CPU amb en l’experiment 1 . . . . . . . . . . . 83
17 Rendiment de la memoria en l’experiment 1 . . . . . . . . . . . . 86
19 Rendiment de la CPU en l’experiment 2 . . . . . . . . . . . . . . 91
21 Rendiment de la memoria en l’experiment 2 . . . . . . . . . . . . 96
22 Ample de banda en l’experiment 3 . . . . . . . . . . . . . . . . . 96
Index de figures
1 Esquema de la metodologia d’un projecte - Font:Propi . . . . . . 9
2 Diagrama de Gantt-1 - Font:Propi . . . . . . . . . . . . . . . . . 15
3 Diagrama de Gantt-2 - Font:Propi . . . . . . . . . . . . . . . . . 15
4 Diagrama de Gantt-3 - Font:Propi . . . . . . . . . . . . . . . . . 15
5 Comandes per la descarrega del software - Font:Propi . . . . . . 28
6 Arquitectura del sistema - Font:Propi . . . . . . . . . . . . . . . 29
7 Estructura del registre del DNS - Font:Propi . . . . . . . . . . . 32
8 Estructura de la configuracio del certificat - Font:Propi . . . . . . 32
9 Comanda per generar el certificat xifrat - Font:Propi . . . . . . . 33
10 Comanda per generar el certificat desxifrat - Font:Propi . . . . . 33
11 Instal·lacio d’Apache2 - Font:Propi . . . . . . . . . . . . . . . . 34
12 Instal·lacio de MariaDB - Font:Propi . . . . . . . . . . . . . . . 34
13 Instal·lacio de MariaDB - Font:Propi . . . . . . . . . . . . . . . 35
14 Acces a MariaDB - Font:Propi . . . . . . . . . . . . . . . . . . . 35
15 Instal·lacio de paquets - Font:Propi . . . . . . . . . . . . . . . . 35
16 Instal·lacio de phpMyAdmin - Font:Propi . . . . . . . . . . . . . 35
17 Creacio de la taula a MariaDB - Font:Propi . . . . . . . . . . . . 36
18 Configuracio de PHP - Font:Propi . . . . . . . . . . . . . . . . . 36
19 Habilitacio dels diferents moduls d’Apache2 - Font:Propi . . . . . 37
20 Creacio del directori per emmagatzemar temporalment - Font:Propi 37
21 Desplegament dels arxius - Font:Propi . . . . . . . . . . . . . . . 37
22 Instal·lacio de Nextcloud - Font:Propi . . . . . . . . . . . . . . . 38
23 Configuracio de /etc/hosts - Font:Propi . . . . . . . . . . . . . . 38
24 Configuracio d’Apache2 - Font:Propi . . . . . . . . . . . . . . . . 39
25 Activacio de SSL a Apache2 - Font:Propi . . . . . . . . . . . . . 40
26 Redireccionament de ports a Docker - Font:Propi . . . . . . . . . 41
27 Configuracio del certificat a Docker - Font:Propi . . . . . . . . . 41
28 Aixecament dels contenidors Docker - Font:Propi . . . . . . . . . 41
29 Comprovacio dels contenidors Docker - Font:Propi . . . . . . . . 41
30 Contenidors executant-se - Font:Propi . . . . . . . . . . . . . . . 41
31 Instal·lacio de l’aplicacio que integra OnlyOffice a Nextcloud-
Font:Propi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
32 Configuracio d’OnlyOffice - Font:Propi . . . . . . . . . . . . . . . 42
33 Configuracio de l’aplicacio que integra LDAP - Font:Propi . . . . 43
34 Instal·lacio de l’aplicacio que integra el CAS - Font:Propi . . . . 44
35 Activacio de l’aplicacio del CAS - Font:Propi . . . . . . . . . . . 44
36 Configuracio de l’aplicacio del CAS - Font:Propi . . . . . . . . . 45
37 Configuracio del cron per l’usuari wwwrun - Font:Propi . . . . . 46
38 Instal·lacio de Redis - Font:Propi . . . . . . . . . . . . . . . . . 46
39 Configuracio de Redis - Font:Propi . . . . . . . . . . . . . . . . . 47
40 Configuracio de Nextcloud/Redis - Font:Propi . . . . . . . . . . . 47
41 Instal·lacio del modul de cache local de PHP - Font:Propi . . . 48
42 Configuracio d’OPcache per PHP - Font:Propi . . . . . . . . . . 48
43 Activacio del mode manteniment - Font:Propi . . . . . . . . . . . 48
44 Backup dels arxius del server - Font:Propi . . . . . . . . . . . . . 49
45 Backup de les dades dels usuaris - Font:Propi . . . . . . . . . . . 49
46 Backup de la base de dades - Font:Propi . . . . . . . . . . . . . . 49
47 Stop de Apache2 - Font:Propi . . . . . . . . . . . . . . . . . . . . 50
48 Stop del cron de l’usuari wwwrun - Font:Propi . . . . . . . . . . 50
49 Guardar les dades antigues del servidor - Font:Propi . . . . . . . 50
50 Descarrega de l’ultima versio - Font:Propi . . . . . . . . . . . . . 50
51 Manteniment del fitxer de configuracio antic - Font:Propi . . . . 50
52 Manteniment de les aplicacions instal·lades - Font:Propi . . . . 51
53 Manteniment dels permisos en els fitxers - Font:Propi . . . . . . 51
54 Restart d’Apache2 - Font:Propi . . . . . . . . . . . . . . . . . . . 51
55 Activacio del cron de l’usuari wwwrun - Font:Propi . . . . . . . . 51
56 Portal d’autenticacio del CAS - Font:Propi . . . . . . . . . . . . 53
57 Nextcloud - Font:Propi . . . . . . . . . . . . . . . . . . . . . . . . 54
58 Importacio de dades dels usuaris de LDAP - Font:Propi . . . . . 54
59 Fitxer pujat a Nextcloud - Font:Propi . . . . . . . . . . . . . . . 55
60 Quota d’usuari - Font:Propi . . . . . . . . . . . . . . . . . . . . . 55
61 Generacio dels fitxers d’1GByte corresponents - Font:Propi . . . 56
62 Carrega de la CPU amb 1 fitxer per usuari - Font:Propi . . . . . 57
63 Carrega de la memoria amb 1 fitxer per usuari - Font:Propi . . . 57
64 Carrega de la CPU amb 2 fitxers per usuari - Font:Propi . . . . . 60
65 Carrega de la memoria amb 2 fitxers per usuari - Font:Propi . . . 60
66 Ample de banda - Font:Propi . . . . . . . . . . . . . . . . . . . . 62
67 Check de Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
68 Check de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
69 Check de Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
70 Script per eliminar usuaris inexistents . . . . . . . . . . . . . . . 65
71 Extraccio de dades de memoria i CPU - Font:Propi . . . . . . . . 77
72 Generacio de la grafica de memoria - Font:Propi . . . . . . . . . 78
73 Generacio de la grafica de CPU - Font:Propi . . . . . . . . . . . . 78
74 Extraccio de dades d’ample de banda - Font:Propi . . . . . . . . 79
75 Generacio de la grafica d’ample de banda - Font:Propi . . . . . . 80
Glossari
• Backend: Es la part de l’arquitectura des d’on es gestiona el servei i
s’emmagatzema la informacio.
• CAS: Sigles de Central Authentication Service, es un protocol per centra-
litzar els logins d’un conjunt de serveis i oferir-lo en un mateix login i que
ens conservi les credencials [9].
• Certificat SSL: Es un fitxer que acredita l’autenticitat del servidor.
• Connexio SSH: Es un protocol per poder connectar a un servidor remot
via terminal.
• Cron: Es un servei de Linux per poder programar execucions de scripts.
• Diagrama de GANTT: Es una eina per poder fer un esquema del temps
i de les tasques a fer d’un projecte.
• DNS: Es un servidor que donat un nom ens torna l’adreca IP d’un servi-
dor.
• Frontend: El frontend es la part de l’aplicacio que interactua amb l’usu-
ari.
• HA: Sigles de High Availability, ens assegura que un sistema podra seguir
operant encara que falli.
• HDD: Son els discs durs fısics que en el nostre cas farem servir per em-
magatzemar les dades.
• LDAP: Sigles de Lightweight Directory Access Protocol, que es un protocol
que ens ofereix un servei de directori ordenat organitzat de manera logica
i jerarquica [4].
• Bloqueig de fitxers: Ens referim al fet que el sistema pugui bloquejar
un fitxer quan usuari estigui treballant-hi dintre.
• Maquina virtual (VM): Entorn de computacio hostejat i aıllat dintre
d’una maquina fısica.
1
• Open source: Es el terme de codi lliure. Quan parlem de codi lliure
podem modificar el codi, podem executar-lo sota les circumstancies que
vulguem i podem redistribuir-lo.
• SAMBA: Es un sistema d’emmagatzematge de codi lliure.
• Script: Es un programa per l’automatitzacio d’un servei.
2
1 Introduccio
1.1 Context d’aplicacio
El projecte en questio es centra en el marc del Barcelona Supercomputing Cen-
ter - Centro Nacional de Supercomputacion (BSC-CNS) [1], que es un centre
situat a Barcelona especialitzat en High Performance Computing (HPC) i que
gestiona el Marenostrum, un dels supercomputadors mes potents d’Europa.
El BSC es actualment el centre que gestiona la RES (Xarxa Espanyola de Su-
percomputacio) i forma part de PRACE (Partnership for Advanced Computing
in Europe), amb un equip de mes de 700 persones distribuıdes en departaments
de recerca, operacions, gerencia i administracio.
Dintre del BSC, el departament d’operacions es qui s’encarrega de gestionar
tota l’infraestructura per aconseguir que les diferents maquines HPC siguin ac-
cessibles les 24 hores del dia durant els 365 dies de l’any. Tambe s’encarrega de
que els diferents serveis interns del centre estiguin sempre disponibles i es d’es
d’on es gestionara aquest nou servei.
Una de les practiques habituals dels investigadors es la creacio de projectes in-
terdepartamentals, pel que una eina com aquesta permetria la comparticio de
fitxers entre membres de diferents projectes. Aquest servei ha d’estar dispo-
nible internament i permetre la correcta fluidesa de fitxers entre el personal i
l’emmagatzematge de manera que s’hi pugui accedir remotament. El projecte
sera en modalitat B, la de practiques en empresa amb un conveni de cooperacio
educativa
1.2 Marc teoric
Un sistema de comparticio de fitxers es una eina que ens permet gestionar les
nostres dades emmagatzemades en un servidor i poder-les compartir amb dife-
rents usuaris. Aquest tipus d’eina utilitza l’arquitectura client - servidor.
L’arquitectura client servidor es un tipus d’arquitectura de sistemes distribuits
que es basa en que el servidor ofereix un servei i els clients l’usen mitjancant un
tipus de comunicacio request-reply entre els dos agents. [2]
3
L’autenticacio del servei que ens gestioni la comparticio de fitxers es fara mit-
jancant els usuaris de LDAP (Lightweight Directory Access Protocol), que es un
protocol que ens ofereix un servei a de directori ordenat organitzat de manera
logica i jerarquica [4] contra el CAS del BSC. El CAS (Central Authenticati-
on Service) es un protocol per centralitzar els logins d’un conjunt de serveis i
oferir-lo en un mateix login i que ens conservi les credencials [9].
El servei que volem reemplacar actualment es un Samba, que es un protocol que
ofereix un servei de sistema de fitxers i d’impressio. [5]
1.3 Problema a resoldre
La problematica del nostre cas decau en aspectes diferents: hem de trobar el
producte adequat que ens ofereixi solucio a totes les nostres dependencies i
que es pugui implementar al BSC. Aixo significa que hem de trobar una eina
ja desenvolupada amb versions estables i amb constant manteniment que ens
ofereixi un servei de comparticio i emmagatzematge de fitxers capac de substituir
l’actual Samba. L’entorn en que ha de treballar aquest servei ha de ser un
servidor, amb possibilitat de HA (High Availability) ja que el centre hi treballen
mes de 700 persones i ha de poder fer front a totes les caracterıstiques que ja te
el servidor Samba actualment i millorar el seu rendiment de cara a l’usuari.
1.4 Actors implicats
En aquest projecte tenim clarament tres actors diferenciats. Els primers son
aquells que instal·len el software al servidor i configuren, monitoritzen i posen
en produccio el servei. Aquestes primeres tasques recauen sobre el departament
d’operacions, que son qui controlen els servidors interns del centre.
La segona part implicada del projecte son els usuaris finals, aquells que mit-
jancant una interfıcie d’usuari en un navegador o en un directori muntat en un
PC han de poder accedir a l’emmagatzematge que tenen assignat al servidor.
Els ultims actors implicats son el Director del Projecte, Sergi More, el Ponent
del Projecte, Xavier Martorell i el Projectista, en aquest cas jo mateix, Aniol
4
Gamiz Quer.
2 Justificacio
En el nostre cas, no desenvolupem un producte nou perque seria fer feina de
mes ja que actualment al mercat existeixen una gran diversitat d’eines que te-
nen un objectiu molt similar al que tenim nosaltres i que son open source, per
tant buscarem una solucio ja existent que compleixi amb les nostres premises.
El que canviem respecte les solucions proposades es la forma d’implementar-ho,
ja que estem tenint en compte les caracterıstiques que te el centre i per tant
es particular per aquest. Fent una recerca de diferents opcions que no siguin
la que tenim actualment ara mateix al centre, hem pogut trobar eines que ens
ofereixen solucions que hem d’analitzar de quina manera compleixen els nostres
requisits, si es que ho fan. La majoria de productes que hem trobat desenvo-
lupats al mercat son o pretenen ser sistemes de comparticio de fitxers basats
en servidor, on hi ha l’storage de dades i on els clients a traves d’una aplicacio
Desktop o d’una aplicacio Web hi poden accedir, sincronitzar els seus fitxers
amb els de la web i treballar-hi.
El que hem trobat al mercat tenint en compte els requisits anteriors son Next-
cloud [3], Seafile [6] i Syncthing [7]. Els tres son sistemes de comparticio de
fitxers [8], pero Syncthing funciona amb connexions Peer to Peer entre clients,
per tant l’hem tret de la llista ja que volem que estigui centralitzat en un ser-
vidor. Seafile seria una bona opcio pero no totes les funcionalitats que ens pot
oferir son gratuıtes i s’han de pagar amb la versio enterprise, com per exemple
el bloqueig de fitxers per evitar que s’editin concurrentment o la sincronitzacio
amb els usuaris i grups de LDAP. Com que son features que necessitem, hem
de renunciar a aquestes dues possibilitats i centrar-nos amb Nextcloud ja que
te tot el codi Open Source.
5
NEXTCLOUD SEAFILE SYNCTHING
Tipus de host Server Server Peer To Peer
Llicencia Open source Open source/Enterprise Open source
Aplicacio Desktop Mac/Windows/Linux Mac/Windows/Linux Mac/Windows/Linux
Edicio de documents Si Versio Enterprise No
Connexio amb LDAP Si Si No
Taula 1: Caracterıstiques dels diferents productes. Font: [8]
3 Abast
3.1 Objectiu principal
L’objectiu del projecte es fer una avaluacio de les necessitats que te l’empresa
per a la implantacio d’un sistema de comparticio de fitxers de codi obert, veure
quines possibilitats tenim actualment, implementar-ho i finalment avaluar la
seva posada en produccio.
3.2 Subobjectius
3.2.1 Suport del servei
Mantenir un suport constant es un aspecte primordial ja que l’usuari final ha
de poder accedir en tot moment als seus arxius i ha de tenir garantida la no
perdua de dades.
3.2.2 Obtenir feedbac constant
Tenir diferents punts de vista dels usuaris finals i que ens diguin en tot moment
si el servei que els hi oferim els satisfa o no.
3.3 Requeriments funcionals
El projecte te una serie de requeriments no tant primordials pero tambe molt
importants que son les caracterıstiques que han acabat definint el producte
escollit.
6
3.3.1 Client Web
L’eina en questio ha de tenir un client web disponible per poder accedir-hi a
traves d’un navegador.
3.3.2 Edicio compartida de documents
S’ha de poder compartir un document amb diferents usuaris i que aquests el
puguin editar a la vegada sense problemes.
3.3.3 Bloqueig de documents
S’ha de poder compartir un document amb diferents usuaris i que un usuari el
bloquegi de manera que nomes el pugui editar un usuari atomicament.
3.3.4 Muntatge local
S’ha de poder muntar l’emmagatzematge compartit com una particio local del
nostre equip i poder-la mapejar en un directori.
3.3.5 Suport d’aplicacions desktop
Els usuaris han de poder instal·lar-se una aplicacio desktop en qualsevol dels
diferents sistemes operatius que s’usen al centre (Windows, MacOSX, Linux).
3.3.6 Creacio d’espais compartits
S’han de poder crear espais compartits entre els diferents usuaris per part dels
usuaris i per part dels administradors i permetre la gestio a traves de grups.
3.3.7 Quotes d’usuari i grup
S’han de poder definir quotes (lımits en l’us de dades) pels diferents usuaris i
grups per part dels administradors.
3.3.8 Suport per autenticar-se
S’ha de poder autenticar si es possible contra el servidor mitjancant CAS al
servei web i LDAP en el muntatge local.
7
3.3.9 Suport de grups per LDAP
S’ha de poder tenir les caracterıstiques dels grups que ja estan definides al
servidor de LDAP.
3.4 Possibles obstacles i riscos
Els possibles obstacles que ens podem anar trobant al llarg del desenvolupament
del projecte poden ser complexos i de severitat mes o menys crıtica.
Per comencar, ens podem trobar que la planificacio del projecte sigui incorrecta
i que el temps que tenim disponible per acabar el projecte sigui insuficient i
haguem de renunciar a certs requeriments.
Relacionat amb la mala planificacio, tambe ens podrıem trobar que l’eina que
ens proposem per posar en produccio no sigui l’adequada per al projecte o no
convenci a l’usuari final perque la funcionalitat que li dona no es l’esperada i
haguem de tornar al punt de partida i triar-ne una altra.
Tambe ens podem trobar amb que els desenvolupadors de l’eina en questio
deixin de donar manteniment i que per tant quedi obsolet i haguem de canviar
de sistema.
Tenint en compte tots aquests aspectes i els que segurament aniran sortint al
llarg del desenvolupament del projecte, s’aniran tractant per trobar-hi solucio i
poder tirar-ho tot endavant.
4 Metodologia i rigor
4.1 Metodologia escollida
La metodologia del projecte segueix el proces d’implementacio d’una tecnologia
nova. Per la correcta gestio de versions s’utilitza Git i les tasques a fer segueixen
el diagrama de Gantt i es gestiona amb Kanban per poder tenir-les controlades.
El curs que segueix el projecte es com el de la figura seguent:
8
Figura 1: Esquema de la metodologia d’un projecte - Font:Propi
4.2 Seguiment del projecte
El seguiment del projecte es realitza amb reunions setmanals amb el Director
per comprovar l’estat en que es troba el desenvolupament del projecte. Tambe
es fan reunions cada dues setmanes amb el ponent per mirar si l’enfocament del
projecte es l’adequat.
4.3 Metode de validacio
El metode de validacio son les reunions amb el tutor i el ponent, de manera que
es valida si la feina que s’esta fent va en el camı correcte al que s’ha pressuposat
que es fara.
5 Estimacio del temps necessari
Un cop procedim a la gestio del temps dins del projecte, hem de poder definir
uns perıodes correctes que formaran un conjunt de dates que haure de seguir:
9
• Data d’inici: 10 de febrer de 2020
• Data de finalitzacio: 31 de maig de 2020
• Duracio: La duracio aproximada es de 540 hores repartides entre imple-
mentar el projecte, fer reunions, elaborar el projecte i redactar tota la
documentacio. Aquestes 540 hores estan repartides aproximadament en-
tre 90 dies de treball.
• Data prevista de lectura: la data prevista de lectura es el dilluns 29 de
juny 2020.
• Nombre d’hores al dia: la carrega de treball diaria es de 6 hores.
6 Tasques
Pel compliment de les tasques es defineixen objectius. Per assegurar la bona
comunicacio amb el director del projecte es realitza mınim una reunio setmanal
de revisio general.
6.1 Recursos
Els recursos que es necessiten per realitzar el projecte son:
• Humans: Els grups de persones afectades o participants del projecte son:
– [P] Ponent del projecte: Es qui mira que el rumb que porta el pro-
jecte es el correcte, en aquest cas Xavier Martorell, del Departament
d’Arquitectura de Computadors.
– [CP] Cap de projecte / Director: Es qui gestiona que el desen-
volupament del projecte es du a terme correctament, en aquest cas
Sergi More, System Team Manager del BSC.
– [SO] Sysadmins i Operador: L’operador, en aquest cas jo mateix,
soc qui desenvolupa el projecte amb alguna part tutoritzada pels
Sysadmins del centre.
– [UF] Usuaris finals: Son els que veuen reflectit el servei en les seves
tasques rutinaries i l’utilitzen.
10
• Fısics: Per la realitzacio del projecte necessitem un lloc de treball, en
aquest cas es la Capella de la Torre Girona del Campus Nord amb tots els
recursos necessaris com mobiliari, llum, aigua, telefon o Internet.
• Hardware: Per comencar, es necessari un PC per desenvolupar el pro-
jecte. Requerim tambe d’una maquina virtual allotjada en una maquina
fısica capac de suportar el servei 24/7. Aquesta maquina necessita de
connexio a internet i ha d’estar allotjada en un rack d’un CPD. Necessi-
tem una gran quantitat de discs fısics per a l’emmagatzematge i discs de
recanvi per realitzar manteniment.
• Software: Necessitem l’aplicacio escollida que realitza el servei, que es
Nextcloud, aixı com una eina de control de versions com pot ser GitLab
i una eina per gestionar les tasques, que sera Kanban. Per realitzar el
GANTT fem servir GanttProject.
6.2 Descripcio de les tasques
Per poder diferenciar les tasques, les hem dividit entre quatre subtipus. Cada
tipus de tasques esta marcat per la naturalesa de les tasques associades.
1. Planificacio
• [T1] Coneixement del BSC: Coneixer el funcionament del centre,
aixı com la metodologia de treball i les maquines. No requereix cap
tasca previa. 100h
• [T2] Abast i contextualitzacio: Conte l’abast i la contextualitza-
cio del projecte. No requereix cap tasca previa. 20h
• [T3] Planificacio temporal: Conte la planificacio temporal del
projecte. Requereix la tasca [T2]. 20h
• [T4]Gestio economica i sostenibilitat: Conte la gestio economica
i la sostenibilitat. Requereix les tasques [T2,T3]. 10h
• [T5]Planificacio final: Conte els tres documents anteriors finalit-
zats. Requereix les tasques [T2,T3,T4]. 15h
2. Gestio de recursos
11
• [T6] Obtencio dels recursos hardware: Demanar als sysadmins
una maquina virtual on poder desenvolupar el projecte. No requereix
cap tasca previa. 10h
• [T7] Obtencio dels recursos software: Descarregar el software a
la maquina virtual. Requereix la tasca [T6]. 2h
3. Implementacio
• [T8] Afegir el domini al DNS: Incloure al registre del DNS el
domini de la maquina. Requereix la tasca [T7]. 3h
• [T9] Generacio dels certificats SSL: Generar el certificat i in-
cloure’l a la maquina. Requereix la tasca [T8]. 3h
• [T10] Instal·lar el software al servidor: Un cop descarregat
el software podem procedir a la instal·lacio d’aquest al servidor.
Requereix la tasca [T9]. 10h
• [T11] Integracio del software amb LDAP: Connectar el servei
amb LDAP. Requereix la tasca [T10]. 20h
• [T12] Integracio del software amb el CAS: Connectar el servei
amb el servei d’autenticacio CAS. Requereix la tasca [T10]. 20h
• [T13] Optimitzacions del software: Afegir possibles modificaci-
ons al servei per aconseguir funcionalitats addicionals i un rendiment
millor. Requereix les tasques [T11,T12]. 15h
4. Testing
• [T14] Obrir el servei a testing: Passar el servei a test en un petit
entorn que emula la realitat per veure si el servei compleix amb els
requisits. Requereix les tasques [T8,T9,T10,T11,T12,T13]. 40h
• [T15] Seguiment de logs del servei: Revisar logs d’errors i veure
si el funcionament del servei es correcte. Requereix la tasca [T14].
20h
• [T16] Reunio de seguiment: Fer una reunio de seguiment amb el
ponent i el director del projecte. Requereix les tasques [T14,T15].
2h
12
5. Produccio
• [T17] Passar el servei a produccio: Obrir el servei al personal
del centre pel seu funcionament. Requereix la tasca [T16]. 30h
6. Documentacio
• [T18] Obtenir feedbac del projecte: Recopilacio de dades del
projecte i saber quin es el grau de satisfaccio de l’usuari amb el nou
servei implementat. Requereix les tasques [T17]. 40h
• [T19] Redactar la memoria del projecte: Redactar tota la in-
formacio del projecte. Es una tasca que es va fent al llarg del desen-
volupament del projecte, per tant les hores estan molt repartides.
Requereix la tasca [T18]. 100h
• [T20] Preparar la defensa de la lectura: Estudiar i preparar la
defensa del projecte davant del tribunal. Requereix la tasca [T18].
60h
13
TASCA HORES DEPENDENCIES PERSONAL
[T1] Coneixement del BSC 100h [CP] [SO]
[T2] Abast i contextualitzacio 20h [P] [CP]
[T3] Planificacio temporal 20h [T2] [P] [CP]
[T4] Gestio economica i sostenibilitat 10h [T2,T3] [P] [CP]
[T5] Planificacio final 15h [T2,T3,T4] [P] [CP]
[T6] Obtencio dels recursos hardware 10h [CP] [SO]
[T7] Obtencio dels recursos software 2h [T6] [CP] [SO]
[T8] Afegir el domini al DNS 3h [T7] [CP] [SO]
[T9] Generacio dels certificats SSL 3h [T8] [CP] [SO]
[T10] Instal·lar el software al servidor 10h [T9] [CP] [SO]
[T11] Integracio del software amb LDAP 20h [T10] [CP] [SO]
[T12] Integracio del software amb el CAS 20h [T10] [CP] [SO]
[T13] Optimitzacions del software 15h [T11,T12] [CP] [SO]
[T14] Obrir el servei a testing 40h [T8,T9,T10,T11,T12,T13] [CP] [SO]
[T15] Seguiment de logs del servei 20h [T14] [CP] [SO]
[T16] Reunio de seguiment 2h [T14,T15] [CP] [P]
[T17] Passar el servei a produccio 30h [T16] [CP] [SO] [UF]
[T18] Obtenir feedbac del projecte 40h [T17] [CP] [SO] [P] [UF]
[T19] Redactar la memoria del projecte 100h [T18] [SO]
[T20] Preparar la defensa de la lectura 60h [T18] [SO]
TOTAL 540h
Taula 2: Tasques del projecte. Font: Propi
6.3 Gantt
L’esquema de Gantt generat i esperat pel projecte es el seguent. Possiblement
hi hagi variacions de dates que puguin canviar per causes varies.
14
Figura 2: Diagrama de Gantt-1 - Font:Propi
Figura 3: Diagrama de Gantt-2 - Font:Propi
Figura 4: Diagrama de Gantt-3 - Font:Propi
15
7 Gestio del risc
Fent mencio als possibles riscos definits a la primera entrega, trobem:
• Mala planificacio: En el cas que les hores destinades al projecte fossin
insuficients, s’ampliaria l’horari per part meva a casa. Addicionalment, si
no fos suficient es renunciaria a algun requeriment. La durada del projecte
no es veuria afectada, ja que ha d’estar acabat el dia 31 de maig, data en
que finalitza el meu contracte.
• Software incorrecte: En el cas que ens trobem que l’eina utilitzada no
compleix els requisits proposats, si som a temps de canviar de software
(aproximadament un mes despres del comencament del projecte), se’n pot
buscar una millor que compleixi els requisits. Si ha passat massa temps
(mes d’un mes), es suprimiran requeriments funcionals per poder arribar
al termini.
8 Pressupost
8.1 Identificacio dels costos
Per la realitzacio del pressupost del projecte, primer hem d’identificar els costos
dels recursos humans que anem tenint al llarg del desenvolupament per cada
tasca. Aquests costos venen donats pels sous dels empleats que tenen tasques
destinades en el projecte, pel que majoritariament sere jo.
8.1.1 Cost del personal
Tenint en compte el mercat laboral actual, s’ha fet una recerca a internet dels
costos d’un departament d’operacions. A la consultoria Payscale [13] hem trobat
que els costos incloent la seguretat social de les posicions en un departament
d’operacions d’una empresa que treballa amb sistemes son:
16
POSICIO COST PROMIG ANUAL COST PROMIG PER HORA
Systems Manager 79.596e 44,22e
SysAdmin 58.104e 32,28e
Junior SysAdmin 21.060e 11,7e
Taula 3: Costos d’un departament de sistemes. Font: Propi
8.1.2 Costos de les tasques
Tenint en compte els costos mencionats anteriorment i que la persona que re-
alitza les tasques esta en la posicio de Junior Sysadmin, podem fer un calcul
aproximat dels costos de les tasques ja definides en el document anterior.
17
TASCA HORES COSTOS
[T1] Coneixement de l’entorn de treball del BSC 100h 1170e
[T2] Abast i contextualitzacio 20h 234e
[T3] Planificacio temporal 20h 234e
[T4] Gestio economica i sostenibilitat 10h 117e
[T5] Planificacio final 15h 175,5e
[T6] Obtencio dels recursos hardware 10h 117e
[T7] Obtencio dels recursos software 2h 23,4e
[T8] Afegir el domini al DNS 3h 35,1e
[T9] Generacio dels certificats SSL 3h 35,1e
[T10] Instal·lar el software al servidor 10h 117e
[T11] Integracio del software amb LDAP 20h 234e
[T12] Integracio del software amb el CAS 20h 234e
[T13] Optimitzacions del software 15h 175,5e
[T14] Obrir el servei a testing 40h 468e
[T15] Seguiment de logs del servei 20h 234e
[T16] Reunio de seguiment 2h 23,4e
[T17] Passar el servei a produccio 30h 351e
[T18] Obtenir feedbac del projecte 40h 468e
[T19] Redactar la memoria del projecte 100h 1170e
[T20] Preparar la defensa de la lectura 60h 702e
TOTAL 540 6318e
Taula 4: Costos de les tasques. Font: Propi
8.1.3 Costos generics
Hi ha una serie de costos que tambe s’han de comptabilitzar en el nostre pro-
jecte. La majoria d’aquests no depenen de les hores d’us que els hi fem, sino
d’una quantitat fixa que s’haura d’abonar directament, com pot ser una factura.
Aquests costos es poden veure reflectits a la taula seguent, on:
• Infraestructura: Son els costos derivats del servei d’electricitat, lloguer
d’oficines, internet, manteniment, etc.
18
INFRAESTRUCTURA COST/ANY COST/HORA HORES COST
Lloguer 5000e 2,8e 540 1512e
Internet 500e 0,28e 540 151.2e
Electricitat 600e 0,3e 540 180e
Aigua 220e 0,12e 540 66e
TOTAL 1909,2e
Taula 5: Costos d’infraestructures. Font: Propi
• Hardware: El Hardware requerit pel projecte, on s’inclou el PC on tre-
ballo, la maquina virtual on s’allotja el servidor i els discos fısics d’emma-
gatzematge. Seguim una polıtica d’amortitzacio en quatre anys. Aproxi-
madament necessitarem 25 discs de 1TB a un preu de 300e cadascun +
500e de la controladora (maquina virtual).
HARDWARE PREU UNITATS COST/ANY COST/HORA HORES COST
PC 700e 1 175e 0,0972e 540 52,49e
Controladora 500e 1 125e 0,069e 540 37,26e
Discos fısics 300e 25 1875e 1,04e 540 561,6e
TOTAL 651,35e
Taula 6: Costos de hardware. Font: Propi
• Software: A l’utilitzar Nextcloud, estem fent servir un software Open Source
de manera que es gratuıt. Per treballar al meu PC ho fem amb Ubuntu que
tambe es gratuıt.
19
• Cost generic total
PARTIDA COST
Infraestructura 1909,2e
Hardware 651,35e
Software 0e
TOTAL 2560,55e
Taula 7: Costos generics. Font: Propi
8.1.4 Contingencies
Es reserva un 15% del total del pressupost per possibles contingencies al llarg
del projecte.
PARTIDA COST CONTINGENCIA
Recursos humans 6318e 947,7e
Costos generics 2560,55e 384,1e
TOTAL 1331,8e
Taula 8: Costos de les contingencies Font: Propi
8.1.5 Imprevistos
Pel que fa als imprevistos, tenim que cada partida depen del pressupost al que
estigui assignat.IMPREVIST PARTIDA PROBABILITAT AUGMENT DEL TEMPS COST
Mala planificacio 6318 15% 25% 236.9e
Software incorrecte 2560,55 20% 20% 102.4e
TOTAL 339,3e
Taula 9: Costos dels imprevistos Font: Propi
20
8.2 Cost final
El cost final esperat sumant totes les partides que hem analitzat es de:
PARTIDA COST
Recursos humans 6318e
Costos generics 2560,55e
Contingencies 1331,8e
Imprevistos 339,3e
TOTAL 10.549,65e
Taula 10: Cost total del projecte Font: Propi
8.3 Control de gestio
Per fer un control del pressupost de manera que sigui correcte i no hi hagi
desviacions, es fan controls de com esta el projecte en la finalitzacio de cada
tasca. En el cas que hi hagi problemes amb el compliment de les tasques o
tinguem algun imprevist, es poden aplicar els plans de contingencia per mirar
de corregir el problema i que la desviacio no sigui crıtica.
Les desviacions poden venir donades per:
• Variacio del cost per hora: El cost per hora de l’empleat en questio
ha incrementat o a disminuıt respecte el que s’havia pressupostat.
• Variacio del nombre d’hores treballades: El nombre d’hores emple-
ades en realitzar una certa tasca ha augmentat o disminuıt respecte les
hores pressupostades.
• Variacio del preu d’un producte: El preu d’un producte pot variar
substancialment depenent de moltes variables que no controlem.
Per calcular la desviacio exacta podem calcular:
desviacio total = cost total estimat− cost total real (1)
Si la desviacio total es negativa haurem de fer servir les partides de con-
tingencies.
21
9 Sostenibilitat
9.1 Reflexio
Quan parlem de la realitzacio d’un projecte tecnologic on les Tecnologies de la
Informacio i la Comunicacio hi tinguin un paper important, cal no nomes pen-
sar en tots els possibles beneficis que tindra sobre l’empresa sino que tambe es
necessari analitzar quines implicacions tindra en la societat.
Abans de comencar el projecte, segurament soc poc conscient de quins efec-
tes tindra ambientalment, socialment i economicament, per tant s’ha de ga-
rantir que la seva realitzacio tingui el mınim impacte ambiental possible.
Economicament cal analitzar quines consequencies tindra la creacio d’un pro-
ducte mes car en l’augment de les desigualtats socials.
9.2 Matriu de sostenibilitat
La matriu de sostenibilitat seguent esta desenvolupada en la seccio seguent.
PARTIDA PPP VIDA UTIL
Ambiental [A-PPP] [A-VU]
Economic [E-PPP] [E-VU]
Social [S-PPP] [S-VU]
Taula 11: Matriu de sostenibilitat. Font: [12]
9.3 Aspectes ambientals
• [PPP] Has estimat l’impacte ambiental que tindra la realitzacio
del projecte? T’has plantejat minimitzar l’impacte, per exemple
reutilitzant recursos? [A-PPP] Encara no s’ha fet un estudi de l’impac-
te ambiental, pero el cost mes important sera el de la fabricacio dels discs
durs que haurem de comprar. Per minimitzar l’impacte generat podrem
reutilitzar discs que hi ha en altres serveis i que no estan obsolets.
• [Vida util] Com es resol actualment el problema que vols abordar
(estat de l’art)? En que millora ambientalment la teva solucio
a les existents? [A-VU] Actualment, per resoldre el problema d’una
22
manera senzilla podrıem contractar una empresa que ens mantingues el
servei i ho tingues al cloud. Per fer-ho d’una forma Open Source, la
millor manera es la que hem triat nosaltres. Ambientalment, el software
triat es mes eficient que l’anterior i per tant necessita menys recursos per
executar-se, tot i aixı te el cost d’una maquina virtual connectada a la
xarxa electrica les 24 hores del dia.
9.4 Aspectes economics
• [PPP] Has estimat el cost de realitzacio del projecte (recursos
humans i materials)? [E-PPP] Sı, el cost total es de 9617,96e, que
es un preu alt pero perfectament justificat per a un projecte d’aquestes
caracterıstiques.
• [Vida util] Com es resol el problema actualment que vols abordar
(estat de l’art)? En que millorara economicament la teva solucio
a les existents? [E-VU] Per a la vida util del projecte es necessari un
manteniment de la maquina virtual i dels discos de dades. La meva solucio
es economicament mes viable gracies al software Open Source, ja que es
gratuıt.
9.5 Aspectes socials
• [PPP] Que creus que t’aportara en l’ambit personal la realitzacio
d’aquest projecte? [S-PPP] Personalment crec que em donara una visio
del mon laboral de la gestio de serveis i l’aprenentatge d’aspectes tecnics
necessaris per poder procedir en aquest mon.
• [Vida util] Com es resol el problema actualment que vols abordar
(estat de l’art)? En que millorara socialment la teva solucio
a les existents? [S-VU] Actualment es fa servir un software privatiu
allotjat en un cloud, mentre que nosaltres el tindrem un emmagatzematge
local compartit. Implicara una millora en la comunicacio dins l’empresa
entre els investigadors perque puguin compartir fitxers mes facilment que
actualment.
23
• [Vida util] Existeix una necessitat real del projecte? Fins ara s’ha
tingut un altre sistema que ha anat solucionant el problema i per tant no
es totalment necessari.
24
10 Desviacions
10.1 Canvis a les tasques del projecte
L’ordre de les tasques ha variat substancialment degut a que mentre s’ha anat
implementant la solucio adoptada m’he trobat que era necessari realitzar algunes
tasques en un ordre diferent del que havia planejat inicialment. Aixo es tradueix
en que el nou ordre de les tasques es el seguent, on les que estan en negreta son
les que han canviat d’ordre
TASCA
[T1] Coneixement del BSC
[T2] Abast i contextualitzacio
[T3] Planificacio temporal
[T4] Gestio economica i sostenibilitat
[T5] Planificacio final
[T6] Obtencio dels recursos hardware
[T7] Obtencio dels recursos software
[T8] Afegir el domini al DNS
[T9] Generacio dels certificats SSL
[T10] Instal·lar el software al servidor
[T11] Integracio del software amb LDAP
[T12] Integracio del software amb el CAS
[T13] Optimitzacions del software
[T14] Obrir el servei a testing
[T15] Seguiment de logs del servei
[T16] Reunio de seguiment
[T17] Passar el servei a produccio
[T18] Obtenir feedbac del projecte
[T19] Redactar la memoria del projecte
[T20] Preparar la defensa de la lectura
Taula 12: Tasques del projecte. Font: Propi
25
10.2 Canvis en els objectius del projecte
A mesura que la implementacio ha anat avancant, s’ha vist que els objectius
i sub-objectius que es van determinar en la planificacio del projecte en gran
mesura es poden fer. L’unic cas que trobem que no podrem satisfer un requisit
sera el de poder bloquejar documents per a us exclusiu (requisit funcional 3.3.3).
L’unica opcio que hi ha i que tampoc no acaba de convencer es una aplicacio
que permet bloquejar fitxers a nivell de web, pero aquesta es l’unica part que ja
tenim resolta perque quan obrim un document via web se’ns obra amb Onlyoffice
i amb edicio compartida no hi ha problemes. La solucio en tot cas es intentar
editar els fitxers sempre que es pugui amb Onlyoffice, aixı ens assegurem que
en cas que algu altre editi el fitxer ens trobarem els dos usuaris editant-lo a la
vegada. Per ultim, afegir que quan mapegem els nostres directoris de Nextcloud
al nostre PC mitjancant l’aplicacio client (es a dir, que creem una copia local
que es va sincronitzant contra el servidor), quan dos persones obrin un fitxer
que tinguin compartit a la vegada es trobaran que quan un dels dos hagi fet un
canvi a l’altre li apareixera un fitxer de conflicte amb els canvis de l’altre.
26
11 Gestio de recursos
11.1 [T6] Obtencio dels recursos hardware
Per l’elaboracio del projecte necessitem un espai on instal·lar els nostres serveis.
Aquest espai es una maquina virtual i esta allotjada fısicament en un servidor de
maquines virtuals al mateix BSC. La nostra maquina te com a especificacions
inicials les seguents caracterıstiques:
• Distribucio Linux: Suse Linux Enterprise Server (SLES) 15.1 x86 64
GNU/Linux
• Memoria RAM: 8GB
• Cores: 4 a 2 GHz
• HDD: 100GB
• Connexio SSH: Activada amb sudo pel meu usuari
Totes aquestes especificacions son necessaries per poder procedir a la ins-
tal·lacio del software que usarem. Per la instal·lacio del software de Nextcloud
[14], els desenvolupadors ens recomanen els seguents prerequisits hardware:
• Sistema operatiu: SUSE Linux Enterprise Server 15
• Memoria RAM: Mınim 128MB, 512MB recomanats
Per al servei de l’edicio online de documents, necessitem instal·lar el Docu-
mentServer d’OnlyOffice. Es un software Open Source que podem instal·lar
al mateix servidor i que esta connectat amb Nextcloud de manera que l’edicio
de documents online es fa amb aquest altre servei. OnlyOffice [15] necessita les
seguents especificacions:
• Processador: frequencia de 2GHz o superior
• Memoria RAM: 2GB o mes
• Emmagatzematge: 40GB o mes
• Memoria SWAP: 4GB o mes
27
Com podem veure, per al servei d’OnlyOffice necessitem mes capacitat per al
servidor que la que necessita Nextcloud, pero amb les especificacions que hi hem
posat sera suficient. Un cop disposem de la maquina virtual podrem procedir a
la seguent tasca, en aquest cas la descarrega del software necessari a la maquina
virtual.
11.2 [T7] Obtencio dels recursos software
Per l’obtencio del software de Nextcloud tenim dos possibilitats:
• A traves dels repositoris d’SLES: Implica importar el repositori i
instal·lar-lo. El problema d’aquest metode es que no podem customitzar
el producte, per tant descartem aquesta possibilitat.
• Fer una instal·lacio manual: Implica anar a la pagina de descarregues
de Nextcloud i baixar-nos l’ultima versio estable del producte, en aquest
cas la 18.02.
Per la descarrega del software a la maquina, anirem a la pagina oficial de Next-
cloud i OnlyOffice i ens baixarem lels arxius
$ wget https://download.nextcloud.com/server/releases/
↪→ nextcloud-18.0.2.tar.bz2
$ wget https://raw.githubusercontent.com/ONLYOFFICE/
↪→ Docker-DocumentServer/master/docker-compose.yml
Figura 5: Comandes per la descarrega del software - Font:Propi
28
12 Disseny
En aquesta seccio s’explica l’arquitectura del sistema que volem portar a terme.
L’arquitectura consta d’un backend molt marcat des d’on es gestiona tot el servei
i un frontend web on els usuaris utilitzen les seves funcionalitats.
12.1 Esquema de disseny
La logica de tot aquest esquema es que quan entrem a Nextcloud ens redirigeix
a la interfıcie d’autenticacio unica del CAS i un cop fa la comprovacio ens torna
a Nextcloud i ja ens incorpora al sistema. Un cop dins, el nostre usuari fa match
amb l’usuari de la copia de la base de dades de LDAP que hi ha al servidor i
ens col·loca en els grups que toqui. Des d’aquı podem accedir al contingut dels
directoris del nostre departament, podem compartir fitxers amb altres usuaris i
podem editar documents mitjancant Onlyoffice.
Figura 6: Arquitectura del sistema - Font:Propi
29
12.2 Backend
El backend es la part de l’arquitectura des d’on es gestiona el servei i s’emma-
gatzema la informacio. La logica d’aquesta part de l’esquema es la seguent:
• Servidor opsnextcloud01: Es la maquina virtual on s’executa tota l’ar-
quitectura, conte tots els servidors i esta dintre de la xarxa interna del
BSC.
• MySQL: Es la base de dades interna on es guarden tots els parametres
de configuracio de Nextcloud i les seves aplicacions.
• Redis: Servidor per fer de cache local del servidor i optimitzar el frontend
web.
• Apache: Servidor web per publicar el frontend web.
• Docker: Servidor on s’executen tots els contenidors que necessita Onlyof-
fice.
– RabbitMQ: Servei de cua de missatges per comunicar aplicacions.
– Nginx: Servidor web per publicar el frontend web.
– Redis: Servidor per fer de cache local del servidor i optimitzar el
frontend web.
– PostgreSQL: Base de dades internes on es guarden tots els
parametres de configuracio d’Onlyoffice.
– Onlyoffice-data: Contenidor per guardar les dades d’Onlyoffice
– DocumentServer: Contenidor on corre el servidor de deocuments.
• Connectivitat amb LDAP: Aplicacio de Nextcloud que ens permet la
sincronitzacio amb els usuaris i grups de LDAP.
12.3 Frontend
El frontend es la part de l’aplicacio que interactua amb l’usuari. Les parts que
formen part del frontend son:
30
• Interfıcie de login del CAS: Punt d’entrada dels usuaris a la platafor-
ma, un cop s’autentiquin contra el servidor del CAS son redirigits cap a
Nextcloud.
• Interfıcie Web https://nextcloud.bsc.es: Pagina inicial on els usuaris
poden compartir fitxers amb altres usuaris i desar-hi els seus documents.
Des d’aquı es pot accedir a la interfıcie web d’Onlyoffice quan haguem de
modificar documents en lınia.
31
13 Implementacio
13.1 [T8] Afegir el domini al DNS
Aquesta tasca abans era la numero [T11] i anava precedida per la instal·lacio
del software, la integracio amb LDAP i la integracio amb el CAS. S’ha vist que
aquest ordre no es correcte i que es necessari que primer s’afegeixi al DNS el
domini amb els seus alies perque un cop ens trobem amb la instal·lacio del
software veurem que es necessari tenir ja configurats els diferents dominis per
poder accedir-hi. La maquina opsnextcloud01.bsc.es sera el nom principal que
respon a la @IP mentre que els altres seran alies del primer.
opsnextcloud01 A @IP
nextcloud CNAME opsnextcloud01
onlyoffice.nextcloud CNAME opsnextcloud01
Figura 7: Estructura del registre del DNS - Font:Propi
13.2 [T9] Generacio dels certificats SSL
La generacio dels certificats SSL originalment era la tasca [T12] pero mentre
he estat fent el desenvolupament del projecte he vist que era necessari fer-ho
abans que tota la instal·lacio del software perque en la configuracio Apache2
necessito el certificat per poder redirigir el port :80 (HTTP) al :443 (https).
Per realitzar la generacio dels certificats hem de generar un fitxer amb extensio
.conf. Les caracterıstiques mes destacades del fitxer opsnextcloud01.bsc.es.conf
son:
0.commonName_default = opsnextcloud01.bsc.es
[alt_names]
DNS.1_default = opsnextcloud01.bsc.es
DNS.2_default = nextcloud.bsc.es
DNS.3_default = onlyoffice.nextcloud.bsc.es
DNS.4_default = of.nextcloud.bsc.es
Figura 8: Estructura de la configuracio del certificat - Font:Propi
32
Amb aquest fitxer generat podem crear el fitxer amb extensio.req, que es el que
ens servira per demanar que una entitat externa ens validin els dominis. Per
generar el fitxer amb extensio .req haurem de fer.
$ openssl req -new -config ./opsnextcloud01.bsc.es.conf -
↪→ out ./opsnextcloud01.bsc.es.req
Figura 9: Comanda per generar el certificat xifrat - Font:Propi
Aquesta comanda ens demana una clau i genera dos fitxers, el .req mencionat
anteriorment i un .key que sera la clau privada xifrada amb la clau que hem escrit
nosaltres. Per establir el certificat al servidor necessitem la clau desxifrada, ho
fem amb la comanda seguent, que ens torna a demanar la nostra clau per poder
desxifrar la clau privada i genera un fitxer .decrypt.key.
$ openssl rsa -in opsnextcloud01.bsc.es.key -out
↪→ opsnextcloud01.bsc.es.decrypt.key
Figura 10: Comanda per generar el certificat desxifrat - Font:Propi
Un cop tinguem tots aquests fitxers, podem procedir a demanar a l’entitat
externa que ens validin els dominis, per fer aixo nomes necessiten el fitxer .req.
En el nostre cas estem segurs que ens els validaran perque son dominis que
pengen d’un altre domini, en aquest cas bsc.es, ja validat anteriorment i que per
tant no hi haura cap problema. Quan ens hagin validat els dominis ens enviaran
un fitxer .zip amb dos fitxers .crt: la Certificate Authority (CA), que es el que
demostra que el domini estigui validat i un fitxer opsnextcloud01 bsc es.crt que
es el certificat en si mateix. Fem un SecureCopy(scp) des de la nostra maquina
del .zip que ens hauran enviat a dintre la maquina.
13.3 [T10] Instal·lar el software al servidor
Per realitzar la instal·lacio del software al servidor, hem d’instal·lar alguns
requisits previament. Aquests requisits son necessaris perque les aplicacions que
volem instal·lar (Nextcloud i OnlyOffice) es puguin desenvolupar i funcionar
correctament. Primer fem la instal·lacio de Nextcloud i els seus requisits i un
cop tinguem aixo duem a terme la instal·lacio de OnlyOffice i els seus requisits.
33
13.3.1 Instal·lacio dels requisits de Nextcloud
Els requisits per la instal·lacio de Nextcloud son els que ens marca el desenvo-
lupador. En el cas de Nextcloud [14], els requisits son els seguents:
• Base de dades: MySQL 5.6+ o MariaDB 5.5, 10.1+
• Servidor Web: Apache 2.4 amb mod php o php-fpm
• Processador Web: PHP runtime 7.3+
Aquests 3 elements junts a Linux es coneixen com a LAMP setup (Linux +
Apache + Mysql/MariaDB + PHP), son software Open Source que acostumen
a anar instal·lats junts per allotjar webs o webapps.
Tot aquest conjunt d’aplicacions els instal·lem a traves dels repositoris de SLES,
ja que estan disponibles i es la forma mes rapida d’instal·lar i un cop les tinguem
les personalitzem segons el que vulguem. El primer servei a instal·lar es Apache
i fem servir l’ultima versio, Apache2.
• Apache2: Per instal·lar i iniciar Apache2 nomes fara falta que fem:
$ sudo zypper install apache2
$ sudo systemctl start apache2
Figura 11: Instal·lacio d’Apache2 - Font:Propi
Per la realitzacio d’aquest projecte hem de tenir en compte que estem dintre
d’un departament d’operacions i que per tant ja disposem d’un firewall intern
del centre, per tant hem de deshabilitar els firewalls que la nostra maquina porta
incorporats i habilitar els ports :80, :8080 (http) i :443, :8443 (https) del firewall
central.
• MariaDB: Per instal·lar, habilitar i encendre la base de dades MariaDB farem:
$ sudo zypper in mariadb mariadb-tools
$ sudo systemctl start mysql
$ sudo systemctl enable mysql
Figura 12: Instal·lacio de MariaDB - Font:Propi
Per configurar la base de dades i crear l’usuari root fem servir un script del
mateix MySQL:
34
$ sudo mysql_secure_installation
$ sudo mysqladmin -u "USER" password 'PASSWORD'
Figura 13: Instal·lacio de MariaDB - Font:Propi
Un cop tinguem la base de dades configurada hi podem accedir fent:
$ sudo mysql -u "USER" -p
Figura 14: Acces a MariaDB - Font:Propi
• PHP7: Per instal·lar i habilitar PHP7 i tots els complements que necessita
fem:
$ sudo zypper in php7 php7-mysql apache2-mod_php7
↪→ php7-exif php7-gd php7-json php7-fpm php7-curl
↪→ php7-intl php7-mcrypt php7-zip php7-mbstring
↪→ php7-zlib php7-openssl php7-fileinfo php7-
↪→ pcntl php7-posix php-ldap
$ sudo a2enmod php7
Figura 15: Instal·lacio de paquets - Font:Propi
Finalment, instal·lem phpMyAdmin, que es una eina per administrar una base
de dades des d’una interfıcie Web:
$ sudo zypper in phpMyAdmin
Figura 16: Instal·lacio de phpMyAdmin - Font:Propi
Un cop instal·lat podem accedir-hi anant al navegador a l’adreca
@IP/phpMyAdmin
Arribats a aquest punt, tenim tots els pre-requisits instal·lats al servidor i
podem procedir a la instal·lacio de Nextcloud.
13.3.2 Instal·lacio de Nextcloud
Per la instal·lacio de Nextcloud necessitem una taula a la base de dades on
guardar dades del servei, per tant un cop dins de MariaDB creem la base de
dades convenient, creem l’usuari que fara servir nextcloud per accedir-hi i l’hi
donem privilegis sobre la base de dades.
35
$ create database nextcloud;
$ create user "USER"@localhost identified by 'PASSWORD'
$ grant all privileges on nextcloud.* to "USER"@localhost
↪→ identified by 'PASSWORD';
Figura 17: Creacio de la taula a MariaDB - Font:Propi
Tambe s’ha de modificar la configuracio de PHP per escalar la mida dels arxius
a pujar, la mida de les pujades i poder obtar a mes memoria. Apliquem els
canvis seguents al fitxer /etc/php7/apache2/php.ini
post_max_size = 50G
upload_max_filesize = 25G
max_file_uploads = 200
max_input_time = 3600
max_execution_time = 3600
session.gc_maxlifetime = 3600
memory_limit = 512M
Figura 18: Configuracio de PHP - Font:Propi
Hem d’habilitar els moduls d’Apache2 instal·lats per poder disposar d’ells. Cal
destacar en ells el modul que permet php i el modul que permet ssl, que es la
manera que el servei pugui correr al port :443 i pugui tenir una connexio segura
mitjancant HTTPS.
$ a2enmod php7
$ a2enmod rewrite
$ a2enmod headers
$ a2enmod env
$ a2enmod dir
$ a2enmod mime
$ a2enmod ssl
$ a2enmod proxy
$ a2enmod proxy_wstunnel
$ a2enmod proxy_http
$ a2enmod headers
36
$ a2enmod proxy_balancer
$ a2enmod lbmethod_byrequests
$ systemctl restart apache2
Figura 19: Habilitacio dels diferents moduls d’Apache2 - Font:Propi
S’ha de definir un directori on es guarden les dades temporalment, ja que en un
futur aniran al servidor de discs que tenim al BSC. De moment aquı es fan les
proves de com funciona tot el sistema i un cop es vegi que es pot passar a l’emma-
gatzematge principal es portara alla. Per fer aixo, creem un directori directori
anomenat nextcloud data i li donem permisos de lectura/escriptura/execucio a
l’usuari wwwrun1, que sera el propietari del directori.
$ mkdir "DADES NEXTCLOUD"/nextcloud_data
$ chmod -R 0770 "DADES NEXTCLOUD"/nextcloud_data
$ chown wwwrun "DADES NEXTCLOUD"/nextcloud_data
Figura 20: Creacio del directori per emmagatzemar temporalment - Font:Propi
Un cop aquı podem procedir a moure l’arxiu comprimit que hem descarregat
inicialment, a desempaquetar-lo al directori del servidor i canviar recursivament
el propietari de tot el directori i dels arxius que pengen d’ell a l’usuari wwwrun.
$ cd "DIRECTORI SERVER"
$ mv nextcloud-18.0.2.tar.bz2 "DIRECTORI SERVIDOR"
$ tar xjf nextcloud-18.0.2.tar.bz2
$ chown -R wwwrun "DIRECTORI SERVIDOR"
Figura 21: Desplegament dels arxius - Font:Propi
Quan ja tinguem la carpeta de Nextcloud desplegada amb els seus arxius desem-
paquetada podem procedir a la instal·lacio. Aquesta vegada, per simplificar les
coses la farem a traves de l’interfıcie grafica. Podem accedir al nostre navegador
a @IP/nextcloud i alla posarem les dades que ens demana per la instal·lacio:
• Data directory: ”DADES NEXTCLOUD”/nextcloud data
• Database user: l’usuari a qui hem donat permisos sobre la base de dades
Nextcloudb, en aquest cas ncuser1wwwrun es l’usuari a SLES que es connecta des de la interfıcie web
37
• Database name: el nom de la base de dades, en aquest cas nextcloudb
• Database password: la contrasenya de l’usuari per accedir la base de
dades
Figura 22: Instal·lacio de Nextcloud - Font:Propi
Hem d’esperar uns instants perque s’acabi la instal·lacio. Un cop hagi acabat
ens demana de crear un usuari administrador per poder gestionar tota la
interfıcie grafica.
13.3.3 Configuracio d’Apache2
Per modificar la configuracio d’Apache hem de modificar el fitxer /etc/hosts i
afegir-li els alies que hem donat d’alta al DNS.
127.0.0.1 localhost opsnextcloud01.bsc.es nextcloud.bsc.es
↪→ onlyoffice.nextcloud.bsc.es of.nextcloud.bsc.es
Figura 23: Configuracio de /etc/hosts - Font:Propi
Un cop tenim modificat aquest fitxer podem passar ja a la configuracio d’Apache,
que esta a /etc/apache2. Dintre d’aquest directori podem identificar els diferents
fitxers de configuracio globals d’Apache, que ja estan preparats per defecte
perque nosaltres com a usuaris puguem afegir altres fitxers dinamicament i el
servei els incorpori a la seva configuracio havent nomes de fer un restart del
servei.
Abans de modificar la configuracio d’Apache descomprimim i movem els arxius
dels certificats cap als directoris preparats pels certificats.
Anirem al directori vhosts.d i observem que hi ha arxius amb extensio .template
preparats perque els fem servir de plantilla. En aquest directori es on han d’estar
configurats els Virtual Hosts (vhost). Els vhosts es la manera que te Apache de
poder agregar diferents servidors webs a traves de dominis des d’una mateixa
adreca @IP.
Creem un fitxer anomenat nextcloud.conf i el configurem de la seguent manera:
<VirtualHost *:80>
ServerName nextcloud.bsc.es
38
ServerAlias opsnextcloud01.bsc.es
ErrorLog "DIRECTORI DE LOGS"
CustomLog "DIRECTORI DE LOGS" combined
Redirect / https://nextcloud.bsc.es
</VirtualHost>
<VirtualHost *:443>
# SSL Configuration
SSLEngine on
SSLCertificateFile "DIRECTORI DEL CERTIFICAT"
SSLCertificateKeyFile "DIRECTORI DEL CERTIFICAT"
SSLCertificateChainFile "DIRECTORI DEL CERTIFICAT"
ServerName nextcloud.bsc.es
ServerAlias opsnextcloud01.bsc.es
DocumentRoot "DIRECTORI DEL SERVIDOR"
ErrorLog "DIRECTORI DE LOGS"
CustomLog "DIRECTORI DE LOGS" combined
</VirtualHost>
Figura 24: Configuracio d’Apache2 - Font:Propi
A la primera part configurem perque el vhost escolti al port :80, posem els dos
noms un com a principal i l’altre com alies, redireccionem els logs al directori
de logs de linux i redirigim el servei a https://nextcloud.bsc.es, o el que es el
mateix, al port :443.
A la segona part configurem el vhost perque escolti al port :443, activem SSL
perque puguem fer connexions segures i l’hi indiquem el directori dels diferents
arxius del certificat: el certificat, la clau desencriptada (li hem canviat el nom
a .key) i la CA del certificat. A DocumentRoot fiquem el directori on hi ha els
arxius de Nextcloud i tambe especifiquem els directoris dels arxius de logs del
sistema.
Per ultim ens falta canviar un fitxer de configuracio a /etc/sysconfig/apache2
39
APACHE_SERVER_FLAGS="SSL"
Figura 25: Activacio de SSL a Apache2 - Font:Propi
Amb aquest canvi i reiniciant Apache, Nextcloud hauria d’estar corrent a tot el
domini bsc.es.
13.3.4 Instal·lacio d’OnlyOffice
Els requisits per la instal·lacio del DocumentServer d’Onlyoffice son el que ens
marca el desenvolupador. En aquest cas[15], els requisits son els seguents:
• Server de containers: Docker 1.10 o superior
En aquest cas fem servir Docker amb l’eina Docker-compose, que ens serveix per
poder aixecar diferents contenidors amb els serveis que necessitem a la vegada,
amb els requeriments ja especificats al fitxer de configuracio i preparat perque
els diferents contenidors parlin entre ells. Aquest docker-compose contindra els
seguents serveis:
• Server WEB: haproxy 1.5.1
• Base de dades: Postgresql 9.5
• Cua de missatges: Rabbitmq
• Base de dades cache: Redis
• Imatge del servidor de documents: onlyoffice-documentserver-data
Com podem veure, hi ha dos servidors web funcionant al mateix moment, el
que serveix Nextcloud i el que serveix Onlyoffice, aquest ultim pero s’executa
dintre d’un contenidor. En tenir dos serveis que tenen la mateix utilitat, els
haurem de posar a escoltar a ports diferents perque no puguin col·lisionar un
amb l’altre. Fem que Apache escolti als ports :80 i :443 com ja feia anteriorment
i haproxy escolta als ports :80 i :443 de dins el contenidor mentre docker porta
aquests ports al :8080 i :8443 perque no coincideixin.
ports:
- '8080:80'
40
- '8443:443'
- '1936:1936'
Figura 26: Redireccionament de ports a Docker - Font:Propi
Hem de canviar la configuracio perque utilitzi HTTPS, faci correctament la
redireccio de HTTP a HTTPS i especificar el directori del certificat.
ports:
- FORCE_SSL=true
- CERT_FOLDER=/certs/
- "DIRECTORI CERTIFICAT"/cert1.pem
Figura 27: Configuracio del certificat a Docker - Font:Propi
Per generar el fitxer onlyoffice.pem necessitem els tres arxius seguents, que son
els mateixos fets servir anteriorment en la instal·lacio d’Apache. En aquest cas
generem un fitxer .pem fent una concatenacio dels tres fitxers de manera que
els contindra els tres i l’ubicarem en el directori dels certificats.
Per executar els contenidors de docker farem:
$sudo docker-compose up -d
Figura 28: Aixecament dels contenidors Docker - Font:Propi
Aquesta ordre fara que es descarreguin totes les imatges necessaries i s’iniciın.
Per comprovar que s’esta executant correctament podem fer:
$opsnextcloud01:˜ # docker-compose ps
Figura 29: Comprovacio dels contenidors Docker - Font:Propi
Figura 30: Contenidors executant-se - Font:Propi
En la figura anterior podem observar com la redireccio dels ports es fa correcta-
ment. Un cop tinguem el DocumentServer corrent hem d’instal·lar l’aplicacio
41
que integra el servei d’OnlyOffice a Nextcloud. Per fer-ho ens desplacem al
directori d’aplicacions de Nextcloud, ens baixem els arxius de la pagina oficial
[20] i canviem els permisos del directori.
$ git clone https://github.com/ONLYOFFICE/onlyoffice-
↪→ nextcloud.git onlyoffice
chown -R wwwrun:www onlyoffice
Figura 31: Instal·lacio de l’aplicacio que integra OnlyOffice a Nextcloud- Font:Propi
Per poder treballar amb OnlyOffice nomes falta activar l’aplicacio al frontend
Web i configurar Nextcloud perque apunti al servidor de documents ubicat a
https://nextcloud.bsc.es:8443.
https://nextcloud.bsc.es/index.php/settings/apps?category=
↪→ enabled
https://nextcloud.bsc.es/index.php/settings/admin/
↪→ onlyoffice
Figura 32: Configuracio d’OnlyOffice - Font:Propi
13.4 Logica de l’autenticacio
L’autenticacio al servei de Nextcloud s’ha de fer cada vegada que hi entrem. La
logica del funcionament que s’ha dissenyat per autenticar-se es el resultat de
dues aplicacions que treballen conjuntament. L’objectiu d’utilitzar els servidors
del CAS i LDAP es poder-nos autenticar mitjancant el servei que ja hi ha actu-
alment en funcionament al centre que ens permet de fer login amb uns usuaris
ja definits anteriorment en aquest servidor i disposar de directoris compartits
amb grups de treball ja definits pels usuaris de LDAP.
Quan escrivim la URL del nostre servidor, ens redirecciona al servidor del CAS
del centre i mitjancant aquest ens autentica. Un cop autenticats ens redirigeix a
la instancia de Nextcloud amb l’usuari de LDAP corresponent. Aixo es gracies
al fet que el token d’autenticacio provinent del CAS porta el nom d’usuari i
veu que aquest nom d’usuari ja existeix a la base de dades perque el servidor
de LDAP haura bolcat previament tots els usuaris amb els seus usernames i
per tant es connecta amb aquest usuari agregant tota la informacio de LDAP
42
pertinent.
13.5 [T11] Integracio del software amb LDAP
Per la integracio de Nextcloud amb el servidor de LDAP del BSC utilitzem la
aplicacio user ldap que ja ve instal·lada per defecte en la seva ultima versio.
Els parametre de configuracio que utilitzem son els seguents:
| user_ldap | s01ldap_attributes_for_user_search | uid |
↪→ mail |
| user_ldap | s01ldap_base | "BASE DN" |
| user_ldap | s01ldap_base_groups | "BASE DN GROUP" |
| user_ldap | s01ldap_base_users | "BASE DN USER" |
| user_ldap | s01ldap_configuration_active | 1 |
| user_ldap | s01ldap_display_name | uid |
| user_ldap | s01ldap_dynamic_group_member_url | "DYNAMIC
↪→ GROUP MEMBER" |
| user_ldap | s01ldap_email_attr | mail |
| user_ldap | s01ldap_expert_username_attr | uid |
| user_ldap | s01ldap_gid_number | gidNumber |
| user_ldap | s01ldap_group_display_name | cn |
| user_ldap | s01ldap_group_filter | "GROUP FILTER" |
| user_ldap | s01ldap_group_member_assoc_attribute |
↪→ memberUid |
| user_ldap | s01ldap_host | "SERVER LDAP BSC" |
| user_ldap | s01ldap_login_filter | "LDAP LOGIN FILTER" |
| user_ldap | s01ldap_userfilter_objectclass | "LDAP USER
↪→ FILTER" |
| user_ldap | s01ldap_userlist_filter | "LDAP USER LIST
↪→ FILTER" |
Figura 33: Configuracio de l’aplicacio que integra LDAP - Font:Propi
Els mes importants son:
• s01ldap base: Consulta que ha de fer al servidor de ldap per obtenir els
directoris amb informacio que realment ens interessen.
43
• s01ldap dynamic group member url: Es la configuracio perque dis-
tingeixi els membres de cada grup com a memberUid
• s01ldap group filter: Es el filtre perque ens agafi els grups que siguin
un objecte del tipus sambaGroupMapping i posixGroup.
• s01ldap host: Es el server on fem la consulta SQL, en aquest cas el server
de LDAP del BSC.
• s01ldap userfilter objectclass: Es el filtre perque ens agafi els usuaris
que siguin un objecte dels tipus especificats.
Un cop tinguem tota aquesta configuracio afegida ens connecta amb el servidor
de ldap i importa tots els usuaris, grups i les relacions entre usuaris i grups de
la base de dades.
13.6 [T12] Integracio del software amb el CAS del centre
Per la integracio de Nextcloud amb el CAS utilitzem user cas [21], ja desenvo-
lupada per Nextcloud que ens proporciona el nostre objectiu. Aquesta aplicacio
ja porta la integracio dels dos serveis que volem incorporar.
Primer de tot ens baixem l’arxiu del repositori Git al directori d’aplicacions de
Nextcloud, descomprimim l’arxiu i li donem permisos a l’usuari Web.
$ wget https://github.com/felixrupp/user_cas/releases/
↪→ download/1.8.4/user_cas-nextcloud-with-phpcas.tar.gz
$ tar -xzvf user_cas-nextcloud-with-phpcas.tar.gz
$ chown -R wwwrun user_cas/
Figura 34: Instal·lacio de l’aplicacio que integra el CAS - Font:Propi
Un cop tinguem l’aplicacio descarregada falta activar l’aplicacio, com hem fet
anteriorment amb OnlyOffice, i configurar els servidors on volem fer les consultes
cada vegada que entrem.
https://nextcloud.bsc.es/index.php/settings/apps?category=
↪→ enabled
Figura 35: Activacio de l’aplicacio del CAS - Font:Propi
44
Per configurar l’autenticacio del CAS haurem de definir el host al que ens dirigim
i alguns dels seus atributs.
| user_cas | cas_server_hostname | "SERVER CAS BSC" |
| user_cas | cas_server_path | /cas |
| user_cas | cas_autocreate | 0 |
| user_cas | cas_update_user_data | 0 |
Figura 36: Configuracio de l’aplicacio del CAS - Font:Propi
On,
• cas server hostname: Es el nom del servidor del CAS del centre.
• cas server path: Es la ubicacio dintre del server on trobem l’aplicacio
d’autenticacio
• cas autocreate: Ens indica que la primera vegada que ens autentiquem
amb un usuari via el CAS ens creara un usuari local a la base de dades
de Nextcloud amb els atributs que rep via CAS. Ho desactivem perque ja
ens haura creat els usuaris amb LDAP i no volem que ens els repliqui.
• cas update user data: Si esta activat cada vegada que entrem via el
CAS fa un check de les dades que te a la base de dades de l’usuari local
i comprova que siguin les mateixes que rep del CAS, en cas que siguin
diferents actualitza la base de dades amb les noves que rep. Ho desactivem
perque volem que faci l’update de les dades en cas que sigui necessari a
traves de LDAP.
13.7 [T13] Optimitzacions del software
En aquest apartat el que s’intenta es optimitzar el servei amb algunes eines ja
predefinides que han d’ajudar a fer que el software en general vagi millor. Fem
dues modificacions, que seran les explicades a continuacio.
13.7.1 Configuracio del cron de PHP
La primera modificacio es afegir un cron manual al sistema de cron de Linux
per l’usuari web, en aquest cas wwwrun. L’objectiu d’aquest cron es fer que s’e-
xecutin tasques automaticament sense la supervisio de ningu, com per exemple
45
executar eliminar fitxers temporals que hagin quedat o buscar noves versions
d’aplicacions que puguem instal·lar. Per fer-ho editem el fitxer de cron de
l’usuari wwwrun:
$ crontab -u wwwrun -e
*/5 * * * * php -f "DIRECTORI SERVER"/cron.php
Figura 37: Configuracio del cron per l’usuari wwwrun - Font:Propi
Afegint aquesta lınia fara que s’executi cron.php cada cinc minuts.
13.7.2 Configuracio de la cache
Redis [23] es una base de dades en memoria que guarda els objectes mes frequent-
ment demanats en memoria i gracies a aixo redueix els temps d’espera i aug-
menta la performance. Per configurar Redis ens hem de baixar el software via
repositori de SLES aixı com tambe el paquet de PHP que integra Redis.
$ zypper install redis
$ zypper install php7-redis
Figura 38: Instal·lacio de Redis - Font:Propi
Modifiquem el fitxer de configuracio de Redis situat a redis/default.conf, afegim
l’usuari web al grup de Redis perque pugui llegir i escriure al socket i creem el
fitxer perque pugui operar com a server. En aquest fitxer hi especifiquem com
ha de ser el server, amb quin usuari ha d’executar-se i quina comanda ha de
llancar. Incorporem tambe que s’iniciı el server automaticament al fer boot del
servidor.
port 0
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
$ usermod -a -G redis wwwrun
$ sudo vim /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target
46
[Service]
User=redis
Group=redis
ExecStart=/usr/sbin/redis-server /etc/redis/default.conf
ExecStop=/usr/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
$ systemctl enable redis.service
Figura 39: Configuracio de Redis - Font:Propi
En la configuracio de Nextcloud hem d’afegir que volem que faci servir la cache
de Redis, per fer-ho modifiquem el fitxer nextcloud/config/config.php
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => '/var/run/redis/redis.sock',
'port' => 0,
'dbindex' => 0,
'password' => 'PASSWORD',
'timeout' => 1.5,
),
'memcache.locking' => '\\OC\\Memcache\\Redis',
Figura 40: Configuracio de Nextcloud/Redis - Font:Propi
En aquesta configuracio especifiquem el socket on volem treballar i el tipus de
cache que fem servir, la distribuıda.
Afegim una cache local, pero aquesta sera APCu. Instal·lem el modul de PHP
corresponent i l’agregarem a la configuracio de nextcloud.
$ zypper php7-APCu
$ vim nextcloud/config/config.php
'memcache.local' => '\\OC\\Memcache\\APCu',
47
Figura 41: Instal·lacio del modul de cache local de PHP - Font:Propi
Per ultim, configurarem OPcache, un modul de PHP que tambe ajudara a op-
timitzar les funcionalitats de Nextcloud. Ens baixarem el modul de PHP i en
el fitxer de configuracio de PHP7, ubicat a /etc/php7/apache2/php.ini, modifi-
carem les lınies seguents:
$ zypper install php7-opcache
$ vim /etc/php7/apache2/php.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Figura 42: Configuracio d’OPcache per PHP - Font:Propi
Un cop modificats tots els fitxers podrem fer un restart del servidor web i
comprovar que els canvis s’han aplicat correctament i la interfıcie web s’executa
mes fluidament.
13.7.3 Backup de Nextcloud
Per poder assegurar la recuperacio del servei de Nextcloud en cas de perdues
de dades i per fer front a qualsevol mena d’inconvenient que ens puguem tro-
bar hem de poder fer copies de segureta i assegurar la integritat del sistema.
Abans de comencar a fer les copies de seguretat hem de ficar l’aplicacio en mode
manteniment, per fer-ho executarem en el directori del servidor:
$ sudo -u wwwrun php occ maintenance:mode --on
Figura 43: Activacio del mode manteniment - Font:Propi
En la instal·lacio de Nextcloud hem de fer tres copies de segure-
tat diferents. S’ubicaran les noves dades copiades a ”DIRECTORI
BACKUP”/backup nextcloud. Ho fem de la seguent manera:
48
• Arxius del servidor: ubicats al directori del server
$ rsync -Aavx nextcloud/ "DIRECTORI BACKUP"/
↪→ backup_nextcloud/nextcloud1_8_0-backup_server_
↪→ `date +"%Y%m%d"`/
Figura 44: Backup dels arxius del server - Font:Propi
• Dades dels usuaris: ubicades a ”DIRECTORI DADES”/nextcloud data/
$ rsync -Aavx nextcloud_data/ "DIRECTORI BACKUP"/
↪→ backup_nextcloud/nextcloud_1_8_0-databkp_`date
↪→ +"%Y%m%d"`/
Figura 45: Backup de les dades dels usuaris - Font:Propi
• Base de dades: ubicada a MariaDB
$ mysqldump --single-transaction -u USER -p --
↪→ databases nextcloudb > "DIRECTORI -BACKUP"/
↪→ backup_nextcloud/nextcloud_1_8_0-sqlbkp_`date
↪→ +"%Y%m%d"`.bak
Figura 46: Backup de la base de dades - Font:Propi
13.8 Upgrade de la versio de Nextcloud
Durant la instal·lacio de Nextcloud i els diferents serveis ens hem trobat que
han actualitzat el software fins a dues vegades. En el moment que ens vam
descarregar Nextcloud hi havia la versio 18.0.1 publicada mentre que actualment
ens trobem que ja existeix la 18.0.3. Els passos que hem de seguir per poder
actualitzar a l’ultima versio amb seguretat sense comprometre als usuaris ni les
seves dades son:
1. Backup de les dades: Per poder assegurar la integritat i la preservacio
de les dades en cas de fallada seguim els passos de la seccio anterior Backup
de Nextcloud.
2. Aturar el servidor web: Hem de parar el servidor web per poder fer el
canvi de versio amb seguretat i sense que hi hagi cap usuari connectat.
49
$ sudo systemctl stop apache2.service
Figura 47: Stop de Apache2 - Font:Propi
3. Aturar el cron: Actualment tenim un cron configurat per l’usuari wwwrun
que executa tasques en segon pla, l’hem d’aturar per no perdre la consistencia
en el moment que fem el canvi d’arxius.
$ crontab -u wwwrun -e
#*/5 * * * * php -f "DIRECTORI SERVER"/cron.php
Figura 48: Stop del cron de l’usuari wwwrun - Font:Propi
4. Moure les dades antigues: Haurem de canviar el nom del directori on teniem
instal·lat Nextcloud fins ara perque no col·lisioni amb el nou directori.
$ mv nextcloud/ nextcloud_old/
Figura 49: Guardar les dades antigues del servidor - Font:Propi
5. Descarregar la nova versio del software: En aquest cas, la versio sera la
18.0.3. La descarreguem i la extraiem del fitxer tar.
$ wget https://download.nextcloud.com/server/releases
↪→ /nextcloud-18.0.3.tar.bz2
$ tar -xjf nextcloud-18.0.3.tar.bz2
Figura 50: Descarrega de l’ultima versio - Font:Propi
6. Mantenir la configuracio antiga: Com que nomes volem fer un update de
versio sense canviar les caracterıstiques que teniem configurades volem mantenir
el fitxer de configuracio, per tant el copiem del directori antic al nou.
$ cp nextcloud_old/config/config.php nextcloud/config
↪→ /
Figura 51: Manteniment del fitxer de configuracio antic - Font:Propi
7. Mantenir les aplicacions instal·lades: Volem que les aplicacions que tenim
instal·lades i configurades continuin estant-hi. Per fer-ho hem de copiar els
50
seus directoris i arxius recursivament. L’aplicacio que ens permet el backend de
LDAP no es necessari copiar-la perque ja ve instal·lada per defecte.
$ cp -R nextcloud_old/apps/user_cas/ nextcloud/apps/
$ cp -R nextcloud_old/apps/nextcloud/ nextcloud/apps/
$ cp -R nextcloud_old/apps/groupfolders/ nextcloud/
↪→ apps/groupfolders/
Figura 52: Manteniment de les aplicacions instal·lades - Font:Propi
8. Mantenir els permisos correctes: Els diferents fitxers han de tenir els per-
misos correctes perque els usuaris web es pugin connectar i puguin operar amb
normalitat.
$ chown -R wwwrun:www nextcloud
$ find nextcloud/ -type d -exec chmod 750 {} \;
$ find nextcloud/ -type f -exec chmod 640 {} \;
Figura 53: Manteniment dels permisos en els fitxers - Font:Propi
9. Encendre el servidor web: En aquest cas fem restart perque apliqui els
canvis correctamentl.
$ sudo systemctl restart apache2.service
Figura 54: Restart d’Apache2 - Font:Propi
10. LLancar la comanda upgrade: Aquı es on realment s’aplica l’actualitzacio
del software. Per llancar la comanda seguent hem d’estar dintre del directori de
Nextcloud.
$ sudo -u wwwrun php occ upgrade
11. Reactivar el cron: Hem de tornar a activar el cron desactivat anteriorment
perque continuo executant tasques en background.
$ crontab -u wwwrun -e
*/5 * * * * php -f "DIRECTORI SERVER"/cron.php
Figura 55: Activacio del cron de l’usuari wwwrun - Font:Propi
51
12. Comprovar que funciona: Sembla obvi, pero es important comprovar que
l’aplicacio funciona correctament amb les aplicacions que teniem anteriorment
instal·lades i la versio actual de l’aplicacio es la que hem instal·lat, en aquest
cas la 18.0.3.
13. Backup de la nova versio: Per ultim, una bona practica per assegurar el
servei en cas de fallades, es tenir una copia de seguretat de l’aplicacio recentment
actualitzada.
52
14 Testing
14.1 Frontend
Durant la implementacio de tot el servei hem passat una serie de tests per
comprovar la integritat i escalabilitat de tota la instal·lacio. S’han fet proves
de diferent envergadura per testejar les situacions en que es poden trobar els
usuaris a l’utilitzar el servei. Per comencar, es prova la interfıcie d’usuari amb
tot el que comporta.
14.1.1 Autenticacio:
El primer dels tests es veure que l’autenticacio contra el servidor del CAS fun-
ciona correctament i podem entrar a la plataforma. Com podem veure en les
figures seguents, quan accedim a https://nextcloud.bsc.es ens redirigeix al portal
del CAS i un cop escrivim les nostres dades ens porta a Nextcloud.
Figura 56: Portal d’autenticacio del CAS - Font:Propi
53
Figura 57: Nextcloud - Font:Propi
14.1.2 Sincronitzacio amb usuari de LDAP:
Un cop entrats a Nextcloud ens hauria d’haver fet match amb el nostre usuari
de LDAP. En la figura seguent podem observar com ens ha agafat per defecte
l’email i els grups de l’usuari de LDAP.
Figura 58: Importacio de dades dels usuaris de LDAP - Font:Propi
14.1.3 Pujada de fitxers:
Un dels tests que podem fer es comprovar que la pujada d’arxius al servidor es
realitza de manera correcta. Per fer el test utilitzem un fitxer de 250MB i el
pugem al home del meu usuari. Aquest test tambe ens serveix per comprovar
54
el sistema de quotes dels usuaris. Com podem observar en les figures seguents,
el fitxer s’ha pujat correctament i la quota de l’usuari s’ha vist modificada i ha
augmentat la part proporcional.
Figura 59: Fitxer pujat a Nextcloud - Font:Propi
Figura 60: Quota d’usuari - Font:Propi
14.2 Backend
Per la part del backend, s’han dissenyat dos proves diferents per comprovar la
escalabilitat del sistema.
14.2.1 CPU i memoria:
El test consisteix en la pujada i baixada d’arxius d’1GB concurrentment de 4
usuaris diferents des de la seva interfıcie web i posteriorment la seva descarrega.
En paral·lel s’executa un script al servidor que agafa les dades de cpu i
memoria executant un top i realitza una grafica que mostra la seva evolucio en
el temps.
Per comencar, generem fitxers d’1GB per fer les proves posteriors.
55
$ sudo dd if=/dev/zero/ of=/tmp/filea.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/fileb.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/filec.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/filed.dat count=1000 bs
↪→ =1000000
Figura 61: Generacio dels fitxers d’1GByte corresponents - Font:Propi
• 1 fitxer d’1GB per usuari
Per la realitzacio del primer experiment s’han seguit les seguents tasques.
1. Usuari 1 inicia la pujada del fitxer filea.dat en t=00:10s.
2. Usuari 2 inicia la pujada del fitxer fileb.dat en t=00:17s.
3. Usuari 3 inicia la pujada del fitxer filec.dat en t=00:28s.
4. Usuari 4 inicia la pujada del fitxer filed.dat en t=00:37s.
5. Usuari 1 inicia la descarrega del fitxer filea.dat en t=03:29s.
6. Usuari 2 inicia la descarrega del fitxer fileb.dat en t=03:35s.
7. Usuari 3 inicia la descarrega del fitxer filec.dat en t=03:40s.
8. Usuari 4 inicia la descarrega del fitxer filed.dat en t=03:45s.
D’aquesta manera, l’usuari 1 es el primer que comenca a pujar el fitxer i
se li afegeixen els 3 altres usuaris de manera que les 4 pujades coincideixen
a la vegada. La descarrega es d’una forma similar, comenca l’usuari 1 i els
altres usuaris se li afegeixen de manera que les 4 descarregues coincideixen
a la vegada. Aquesta primera execucio dura 15 minuts.
56
Figura 62: Carrega de la CPU amb 1 fitxer per usuari - Font:Propi
Figura 63: Carrega de la memoria amb 1 fitxer per usuari - Font:Propi
En l’eix X secundari (a la part superior de les grafiques) podem observar
57
l’inici i final de totes les pujades (tasques 1 a 4) i l’inici i final de totes les
descarregues (tasques 5 a 8). Podem observar que quan iniciem la puja-
da dels arxius (tasca 1), les CPUs (figura 62) augmenten la seva carrega
considerablement d’acord amb el nombre de pujades fins al 90-95%. Con-
forme les pujades van acabant, la carrega disminueix fins al 10%, moment
on comencen les descarregues (tasca 5) i puja substancialment l’us de la
cpu, que en mitjana es situa al 20% d’us. Quan acaben les descarregues
(minut 11) es pot observar com l’us de les CPUs cau fins aproximadament
el 5%.
Fixant-nos en la segona grafica (figura 63), podem observar que la memoria
creix entre els 4600MB i els 4900MB durant les pujades. Quan es situa
en les 20 iteracions (minut 3), moment que comencen les baixades, torna
a incrementar des dels 3800MB fins als 4700MB. Es pot veure tambe que
la memoria swap gairebe no varia mentre que la memoria lliure que tenim
disponible es la inversa a la de buff/cache durant l’execucio, per exemple
en el moment que acaben les pujades se n’allibera un 1GB.
• 2 fitxers d’1GB per usuari
En aquest segon experiment afegirem 1 fitxer d’1GB adicional en cada
pujada i cada baixada per cada usuari. Per comencar, generem els fitxers
adicionals que ens falten de la mateixa manera que els primers.
$ sudo dd if=/dev/zero/ of=/tmp/filee.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/filef.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/fileg.dat count=1000 bs
↪→ =1000000
$ sudo dd if=/dev/zero/ of=/tmp/fileh.dat count=1000 bs
↪→ =1000000
Per la realitzacio del segon experiment, s’ha seguit el seguent esquema:
1. Usuari 1 inicia la pujada del fitxer filea.dat en t=00:7s.
2. Usuari 1 inicia la pujada del fitxer fileb.dat en t=00:17s.
58
3. Usuari 2 inicia la pujada del fitxer filec.dat en t=00:25s.
4. Usuari 2 inicia la pujada del fitxer filed.dat en t=00:32s.
5. Usuari 3 inicia la pujada del fitxer filea.dat en t=00:38s.
6. Usuari 3 inicia la pujada del fitxer fileb.dat en t=00:45s.
7. Usuari 4 inicia la pujada del fitxer filec.dat en t=00:53s.
8. Usuari 4 inicia la pujada del fitxer filed.dat en t=00:59s.
9. Usuari 1 inicia la descarrega del fitxer filea.dat en t=08:16s.
10. Usuari 1 inicia la descarrega del fitxer fileb.dat en t=08:22s.
11. Usuari 2 inicia la descarrega del fitxer filec.dat en t=08:28s.
12. Usuari 2 inicia la descarrega del fitxer filed.dat en t=08:33s.
13. Usuari 3 inicia la descarrega del fitxer filea.dat en t=08:38s.
14. Usuari 4 inicia la descarrega del fitxer fileb.dat en t=08:43s.
15. Usuari 4 inicia la descarrega del fitxer filec.dat en t=08:48s.
16. Usuari 4 inicia la descarrega del fitxer filed.dat en t=08:52s.
El funcionament de l’experiment es calcat a l’anterior, de manera que el
primer usuari comenca a pujar dos fitxers i els altres usuaris se li afegeixen.
Hi haura un moment que coincidiran les 8 pujades a la vegada i ens serveix
per veure com aguanta el sistema. Quan acaben les pujades fem el mateix
amb les baixades, comenca el primer usuari amb els dos fitxers i se li
van afegint els altres de manera que acaben coincidint les 8 baixades a la
vegada. Aquest experiment dura 25 minuts.
59
Figura 64: Carrega de la CPU amb 2 fitxers per usuari - Font:Propi
Figura 65: Carrega de la memoria amb 2 fitxers per usuari - Font:Propi
En l’eix X secundari (a la part superior de les grafiques) podem observar
60
l’inici i final de totes les pujades (tasques 1 a 8) i l’inici i final de totes
les descarregues (tasques 9 a 16). En la figura 64 podem observar que les
CPUs tarden aproximadament 1 minut mes que en l’experiment anterior
en augmentar la seva carrega al maxim i aquesta carrega es mante entre
les iteracions 30 i 50 (minut 8), moment on acaben les pujades i l’ocu-
pacio cau fins al 10%. Un cop comencen les descarregues (minut 08:16)
augmenta la carrega fins aproximadament el 20% i es mante fins al minut
22, moment on acaben les descarregues i la carrega cau fins al 5%.
Si mirem la segona grafica (figura 65) podem veure uns intervals sem-
blants a la de CPU. Hi ha una pujada substancial en l’us de la memoria
de 4600MB fins als 5150MB (minut 8 on acaben les pujades dels fitxers).
Durant aquest perıode de temps la memoria swap tambe augmenta des
dels 900MB fins als 1250MB, valor que mante quasi-be fins als final de
l’execucio. En el temps entre que han acabat les pujades i no han co-
mencat les baixades hi ha un clar descens de la memoria ocupada des dels
5150MB fins als 3550MB i simetricament un ascens de la memoria lliure
des dels 132MB fins als 1741MB. Un cop comencen les descarregues tota
aquesta memoria lliure es torna a alocatar i es mante constant en valors
d’aproximadament 5130MB fins al moment on acaben les descarregues
(minut 22/iteracio 130), on torna a augmentar fins als 5230MB per l’es-
criptura en disc dels fitxers. Finalment torna a baixar fins als 5180MB.
En aquest tram final, la memoria lliure torna a augmentar per l’alliberacio
dels recursos i la swap es mante constant en els seus valors previs.
14.2.2 Xarxa:
Per la realitzacio del test de xarxa s’ha dissenyat un script que executa la
comanda dd en una maquina local contra el home d’un usuari a Nextcloud
muntat per xarxa a traves del protocol DAVS. En cadascun dels passos es
mesura l’ample de banda donat per l’execucio de la comanda. L’esquema
que segueix l’experiment es el seguent:
1. Generem un fitxer amb inputfile en /dev/zero, que es un dispositiu
que ens genera una sequencia infinita de zeros, d’aquesta manera
61
evitem tocar el disc local.
2. Enviem el mateix fitxer amb inputfile del home de l’usuari a /dev/null
per evitar tocar el disc local.
3. Llegim un fitxer del disc local i l’enviem al home de l’usuari.
4. Enviem el mateix fitxer del home del usuari al disc local.
Figura 66: Ample de banda - Font:Propi
Com es pot veure en el cas que no es llegeix ni s’escriu en disc local, l’ample de
banda es significativament mes gran, mentre que quan s’executen operacions de
lectura escriptura en el disc l’ample de banda disminueix, mostrant que el coll
d’ampolla es el disc i no la xarxa.
Al realitzar les proves mitjancant VPN degut a l’epidemia del Covid-19, no hem
pogut comprovar l’ample de banda efectiu que tindrıem en el cas que estiguessim
connectats directament, pel que seria un bon experiment a realitzar pero no
factible per les condicions actuals.
62
15 Passar el servei a produccio
15.1 Monitoritzacio dels serveis
El pas del servei a produccio es un dels ultims passos que te el projecte. Ve
precedit del testeig del servei i un cop aquest es fortuıt podem passar el projecte
en el qual vindria a ser el funcionament normal del servei en el dia a dia.
Un dels passos mes importants abans que els usuaris puguin comencar a fer
servir la plataforma es la monitoritzacio dels diferents serveis que tenim en
funcionament. Amb aixo tindrem una imatge en temps real de com estan els
serveis en particular i el sistema en general. L’eina que es fa servir es Nagios[24],
amb el que s’executen diferents checks amb plugins NRPE programats i s’envien
les dades al servidor de Nagios on centralitza totes les alertes.
Es defineixen plugins de NRPE pels serveis de Redis, MySQL i Docker, ja que
en cas que algun d’aquests caigui no tindrem servei i d’aquesta manera podrem
rebre les alertes en un temps molt petit. Per comprovar que Apache s’executa
correctament definim un check des del mateix servidor de Nagios que mirara si
el port :443 tenim les dades esperades.
Els checks de Redis, MySQL i Docker seran d’una forma semblant, simplement
comprovem que el server estigui corrent correctament.
#!/bin/bash
status=`systemctl status redis.service | grep "Active" |
↪→ cut -d" " -f5`
if [[ "$status" == "active" ]]; then
echo "active"
exit 0
else
echo "inactive"
exit 2
fi
63
Figura 67: Check de Redis
#!/bin/bash
status=`systemctl status mysql.service | grep "Active" |
↪→ cut -d" " -f5`
if [[ "$status" == "active" ]]; then
echo "active"
exit 0
else
echo "inactive"
exit 2
fi
Figura 68: Check de MySQL
#!/bin/bash
status=`systemctl status docker.service | grep "Active" |
↪→ cut -d" " -f5`
if [[ "$status" == "active" ]]; then
echo "active"
exit 0
else
echo "inactive"
exit 2
fi
Figura 69: Check de Docker
Com es pot veure, aquest script agafa l’estat de cadascun dels serveis i si es
active ens treu per pantalla active i ens retorna 0 de exit code. En el cas que el
64
servei no sigui active ens retorna 2 com a exit code. Aquest codi de finalitzacio
s’envia al servidor de Nagios i es monitoritza. En el cas que passi de active a
inactive ens envia una alerta generada automaticament per Nagios amb l’estat
en que es troba.
15.2 Manteniment dels usuaris
En l’entorn del BSC, on treballen actualment mes de 700 usuaris, les altes i
baixes d’usuaris son constants i per tant hem de mantenir una consistencia per
no perdre dades d’usuaris rellevants.
• En el cas de les altes, el sistema automaticament fa un check periodic un
cop al dia afegint els usuaris nous al sistema.
• En el cas de les baixes, en el mateix check periodic detectara que l’usuari
ja no hi es i el marcara com a inexistent. Un cop cada hora, el sistema
analitzara una part de tots els usuaris i els hi activara un flag en els que
estiguin inexistents a la base de dades conforme es pot eliminar l’usuari.
Per eliminar totes les dades dels usuaris (fitxers i configuracions de la base
de dades) llancarem un script periodicament que fara un bucle per tots
els usuaris marcats amb el flag i els suprimira.
#!/bin/bash
for i in $(sudo -u wwwrun php occ ldap:show-
↪→ remnants | awk -F'| ' '{print $2}'); do
echo "Delete user: $i"
sudo -u wwwrun php occ user:delete $i
done
Figura 70: Script per eliminar usuaris inexistents
65
16 Lleis i regulacions
Nextcloud es una aplicacio que treballa amb diferents tipus de dades dels usuaris
i que per tant ha de complir les diverses normatives i lleis que existeixen pel que
fa a la proteccio d’aquestes dades.
• Per una banda tenim que les dades sensibles dels usuaris es gestionen a
traves dels serveis d’autenticacio del centre com son els servidors de LDAP
i CAS. Les dades que els usuaris tenen en aquests serveis son confidencials i
d’us restringit pels diferents servidors del centre i no enrutables a internet.
• Per altra banda, les dades que emmagatzemin els usuaris a la plataforma
estan guardades en els servidors de discs del BSC i es gestionen a traves
del mateix servidor de Nextcloud.
En el primer cas no tenim la gestio dels servidors de LDAP i CAS per tant, les
diferents normatives i lleis que hi puguin haver no ens apliquen. En el segon
cas, es garanteix que les dades que hi hagin emmagatzemat els diferents usuaris
son exclusivament per l’us de la plataforma i en cap cas s’utilitzaran per a altres
afers que no siguin relacionats amb la mateixa plataforma. Per tant compleix
amb la Llei Organica de Proteccio de Dades (LOPD) [25].
A nivell de BSC, s’assegura la seguretat de les dades i la no transmissio a tercers
d’aquestes, per tant la conformitat i compliment de la Llei Organica de Proteccio
de Dades.
66
17 Sostenibilitat
En la fita inicial del projecte es va realitzar un petit informe de sostenibilitat
preveient com podria anar el projecte ambientalment, economicament i social-
ment. Un cop acabat el projecte es pot fer una analisi rigoros entrant a fons en
aquests 3 aspectes per poder-los desgranar i trobar els punts positius i negatius.
PARTIDA PPP VIDA UTIL RISCS
Ambiental [A-PPP] [A-VU] [A-R]
Economic [E-PPP] [E-VU] [E-R]
Social [S-PPP] [S-VU] [S-R]
Taula 13: Matriu de sostenibilitat. Font: [12]
17.1 Aspectes ambientals
• [PPP] Has quantificat l’impacte ambiental de la realitzacio del
projecte? Quines mesures has pres per reduir l’impacte? Has
quantificat aquesta reduccio? [A-PPP] Si, la major part de l’impac-
te generat ambientalment es a la creacio de tots els requisits hardware
que necessitem per desenvolupar el projecte i degut a que tenim un ser-
vidor ences les 24 hores del dia consumint recursos i als discs durs que
s’han utilitzat. Per reduir l’impacte ambiental, quan fallin discs es torna-
ran a l’empresa perque els reutilitzin i els puguin reparar sense haver de
construir-ne tants de nous.
• [PPP] Si tornessis a fer de nou el projecte, podries realitzar-lo
amb menys recursos? [A-PPP] No, ja ho estem fent amb el mınim de
recursos ambientals.
• [Vida util] Quins recursos estimes que s’utilitzaran durant la vi-
da util del projecte? Quin sera l’impacte ambiental d’aquests
recursos? [A-VU] S’utilitzaran els recursos que es van proposar inici-
alment, que son: un PC, una controladora per la maquina virtual i els
discs durs. L’impacte ambiental es el de generar i mantindre tots aquests
components electronics en bon estat i renovar-los quan comencin a fallar.
67
• [Vida util] El projecte permetra reduir l’us d’altres recursos?
Globalment, l’us del projecte millorara o empitjorara la petjada
ecologica? [A-VU] El projecte no permetra reduir l’us d’altres recursos
perque hem canviat de tecnologia que feiem servir pero el hardware acaba
sent el mateix. L’us del projecte millorara la petjada ecologica perque els
destinataris d’aquest projecte son els cientıfics que han de disposar d’eines
per poder compartir fitxers, i per tant els hi donem facilitats perque puguin
realitzar la seva feina correctament.
• [Riscs] Podrien produir-se escenaris que fessin augmentar la pet-
jada ecologica del projecte? Si, el fet que qualsevol dels components
hardware falli implica que n’haurem de comprar mes i per tant augmentara
la petjada ecologica. [A-R]
17.2 Aspectes economics
• [PPP] Has quantificat el cost (recursos humans i materials) de
la realitzacio del projecte? Quines decisions has pres per reduir
el cost? Has quantificat aquest estalvi? [E-PPP] Si, el preu final
del projecte es el que es va pressupostar inicialment. Les decisions que es
van prendre per reduir el cost del projecte es basicament la utilitzacio de
software lliure.
• [PPP] S’ha ajustat el cost previst al cost final? Has justificat les
diferencies (llicons apreses)? [E-PPP] Si, el cost real del projecte esta
dintre del pressupostat perque les partides per contingencies i imprevistos
no han fet falta, per tant els costs son nomes de recursos humans i costs
generics (hardware/infraestructura).
• [Vida util] Quin cost estimes que tindra el projecte durant la seva
vida util? Es podria reduir aquest cost per fer-lo mes viable?
[E-VU] El cost que tindra el projecte durant la seva vida util es el del
manteniment dels diferents components hardware que tenim. Per reduir
aquest cost hem d’utilitzar correctament el hardware i fer que treballi en
les millors condicions, per exemple evitar apagades sobtades del sistema
68
i corrupcio de dades. D’aquesta manera els components electronics no es
trencaran i duraran mes.
• [Vida util] S’ha tingut en compte el cost del suport/actualitzaci-
ons/manteniment durant la vida util del projecte? [E-VU] El cost
del suport, actualitzacions i manteniment es fara dintre del projecte i esta
inclos en les hores pressupostades.
• [Riscs] Podrien produir-se escenaris que perjudiquessin la via-
bilitat del projecte? [E-R] Si, per exemple que l’empresa pensi que el
projecte no es prioritari i destines les partides a altres projectes.
17.3 Aspectes socials
• [PPP] La realitzacio d’aquest projecte ha implicat reflexions sig-
nificatives en l’ambit personal, professional o etic de les persones
que han intervingut? [S-PPP] Si, en l’ambit personal, com a estudi-
ant de final d’enginyeria informatica crec que estar-me tots aquests mesos
pensant maneres de fer les coses, trencant-me el cap i equivocant-me molt
m’han donat molta visio de com pot ser treballar en aquests aspectes.
Amb la crisi del coronavirus en marxa, he pogut veure que alguns treba-
lladors no han pogut continuar amb la seva feina perque a causa de la
distancia no poden actuar amb normalitat, en canvi en els llocs de treball
que comporten fer servir ordinadors i servidors s’ha fet mes flexible tot
plegat. Per tant, una mica la conclusio que en trec es que en la mesura del
possible ens haurıem de poder adaptar com a societat per poder suportar
quan passen aquestes coses.
• [Vida util] Qui es beneficiara del projecte? Hi ha algun
col·lectiu que pot ver-se perjudicat pel projecte? En quina
mesura? [S-VU] Els treballadors del BSC son els principals beneficiats
del projecte. No hi ha cap col·lectiu que es vegi perjudicat.
• [Vida util] En quina mesura aquest projecte resoldra el problema
plantejat inicialment? [S-VU] El projecte resol tots els objectius propo-
sats inicialment excepte el de poder bloquejar fitxers per evitar conflictes,
per tant els usuaris poden fer practicament tot el que s’havia proposat.
69
• [Riscs] Podrien produir-se escenaris que fessin que el projecte fos
perjudicial per algun segment particular de la poblacio? [S-R] No.
• [Riscs] El projecte podria crear algun tipus de dependencia que
deixes els usuaris en una posicio de debilitat? [S-R] No.
70
18 Conclusions
18.1 Objectius
En la finalitzacio del projecte ens trobem que hem d’avaluar si els objectius que
ens vam posar a l’inici s’han complert o no. Els objectius principals eren fer una
avaluacio de les necessitats que l’empresa pogues tenir per implantar un sistema
de comparticio de fitxers, donar-li suport i obtenir feedback. Un cop desenvolu-
pat el projecte, podem veure que aquests tres objectius s’han complert, ja que la
plataforma s’ha posat en marxa, s’ha passat d’un entorn de testing a un entorn
de produccio i els usuaris ens van dient com ho veuen.
Pel que fa als requisits funcionals tenim que s’han complert amb les excepci-
ons dels requisits 3.3.3 bloqueig de documents, ja que Nextcloud no suporta el
bloqueig de fitxers i els desenvolupadors no tenen intencio d’afegir-ho a curt
termini, i 3.3.4 Muntatge local parcialment perque la implementacio de DAVS a
Windows es erronia i no ens permet mantenir una particio muntada per xarxa
despres d’un reboot.
18.2 Personalment
Segurament ha sigut el projecte mes gran que he portat a terme fins ara, l’en-
vergadura que ha anat agafant tot plegat es bastant gran i molt mes de la que
em pogues imaginar d’un principi. Vaig comencar a mig febrer posant les ba-
ses sobre que volia fer, em van donar l’oportunitat de posar en marxa aquest
projecte i portar-lo i crec que ha sigut una oportunitat molt bona de comencar
a posar-me en la pell d’un sysadmin, pel que fa a la metodologia que he anat
agafant i a les tecnologies que he anat tocant, la majoria d’elles completament
noves per a mi, que potser havia sentit mencionar pero ni de bon tros haver de
configurar.
Segurament el que m’ha portat mes temps i mes equivocacions ha sigut informar-
me de com instal·lar correctament certs softwares, per exemple la instal·lacio
d’OnlyOffice va portar bastants problemes perque no funcionava be amb SLES
i finalment vaig optar per fer-ho amb Docker, ja que simplificava molt la cosa.
Tot aixo m’ha servit molt per aprendre i entendre com funcionen aspectes que
71
son molt concrets de tota la tematica i no toques gens al grau, aixı que la valo-
racio que en faig es molt positiva i crec que les hores implicades han valgut la
pena.
18.3 Treball futur
En ser un servei que estara en produccio, hem d’estar al corrent de les actua-
litzacions que hi vagi havent de tota la plataforma i de les seves aplicacions per
mantenir-les en una versio correcta. Tambe es possible que en algun moment
la comunitat o els mateixos desenvolupadors integrin el bloqueig de fitxers i ho
puguem sumar al nostre projecte perque els usuaris puguin acabar de treballar
correctament, per tant es molt important d’anar comprovant les noves versi-
ons. Continuant amb el suport del servei, hem de controlar que el servidor i
els diferents serveis que tenim com a base de la plataforma estiguin recentment
actualitzats. Tambe es necessari vigilar que la mida de l’emmagatzematge no
sobrepassi el 70-80% de la totalitat i anar-lo ampliant quan calgui.
72
Bibliografia
Referencies
[1] Web BSC
https://www.bsc.es/
Accedit el dia 17/02/2020
[2] Transparencies SDX
Concepts of distributed systems - Jordi Guitart
[3] Nextcloud Web
https://nextcloud.com/
Accedit el dia 19/02/2020
[4] Wikipedia LDAP
https://en.wikipedia.org/wiki/Lightweight Directory Access Protocol
Accedit el dia 19/02/2020
[5] Wikipedia SAMBA
https://en.wikipedia.org/wiki/Samba (software)
Accedit el dia 19/02/2020
[6] Seafile Web
https://www.seafile.com/en/home/
Accedit el dia 19/02/2020
[7] Synchthing Web
https://syncthing.net/
Accedit el dia 19/02/2020
[8] Comparison between dropbox alternatives
https://blog.ssdnodes.com/blog/nextcloud-vs-seafile-dropbox-alternative/
Accedit el dia 19/02/2020
[9] Wikipedia CAS
https://en.wikipedia.org/wiki/Central Authentication Service
Accedit el dia 20/02/2020
73
[10] Repositori amb diferents alternatives
https://github.com/awesome-selfhosted/awesome-selfhosted#file-transfersynchronization
Accedit el dia 21/02/2020
[11] GanttProject
https://www.ganttproject.biz/
Accedit el dia 27/02/2020
[12] Raco de la fib
https://www.fib.upc.edu/sites/fib/files/documents/estudis/tfg-informe-sostenibilitat-2018.pdf
Accedit el dia 05/03/2020
[13] PayScale
https://www.payscale.com
Accedit el dia 05/03/2020
[14] Nextcloud Admin Manual
https://docs.nextcloud.com/server/18/admin manual/installation/system requirements.html
Accedit el dia 03/03/2020
[15] OnlyOffice Admin Manual
https://helpcenter.onlyoffice.com/es/server/linux/document/index.aspx
Accedit el dia 05/03/2020
[16] Instal·lacio de certificats
https://www.digicert.com/kb/csr-ssl-installation/apache-openssl.htm
Accedit el dia 12/03/2020
[17] Instal·lacio de redis
https://redis.io/topics/quickstart
Accedit el dia 20/03/2020
[18] SSL Nginx
https://www.digicert.com/kb/csr-ssl-installation/nginx-openssl.htm
Accedit el dia 03/04/2020
[19] SSL HAProxy
https://discourse.haproxy.org/t/using-ssl-with-haproxy-for-docker-containers/307/19
Accedit el dia 03/04/2020
74
[20] OnlyOffice-Nextcloud integration
https://github.com/ONLYOFFICE/onlyoffice-nextcloud
Accedit el dia 03/04/2020
[21] CAS user
https://apps.nextcloud.com/apps/user cas
Accedit el dia 03/04/2020
[22] CAS github
https://github.com/felixrupp/user cas/blob/master/README.md
Accedit el dia 03/04/2020
[23] Redis
https://redis.io/
Accedit el dia 15/04/2020
[24] Nagios
https://exchange.nagios.org/
Accedit el dia 14/05/2020
[25] LOPD
https://www.boe.es/buscar/pdf/2018/BOE-A-2018-16673-consolidado.pdf
Accedit el dia 26/05/2020
75
Apendix
18.4 Scripts utilitzats en el tests
#!/bin/bash
file="*.dat"
rm $file
#GET TOP DATA
top 1 -b -d 10 -n 90 >> topdata.dat
#CPU
#PARSE CPU DATA
grep Cpu topdata.dat | cut -d "," -f7,8 | cut -d"i" -f1 |
↪→ tr ',' '.' > cpudata.dat
#TRANSFORM DATA TO GET CPU USAGE
while IFS='' read -r LINE || [ -n "${LINE}" ]; do
aux=`bc <<< "scale=1; 100-${LINE}"`
echo $aux >> cpusage.dat
done < cpudata.dat
#GENERATE TABLE
echo "Cpu0 Cpu1 Cpu2 Cpu3" > final.dat
awk '{printf "%s" (NR%4==0?RS:FS),$1}' cpusage.dat >>
↪→ final.dat
#GENERATE GRAPHICS
gnuplot scriptgrafica.in
#MEMORY
76
#buff/cache
grep "MiB Mem" topdata.dat | cut -d "," -f7,8 | awk '{
↪→ print $1}' | tr ',' '.' >> buffcache.dat
#free
grep "MiB Mem" topdata.dat | cut -d "," -f3,4 | awk '{
↪→ print $1}' | tr ',' '.' >> free.dat
#swap
grep "MiB Swap" topdata.dat | cut -d "," -f5,6 | awk '{
↪→ print $1}' | tr ',' '.' >> swap.dat
echo "Buff/cache free swap" > finalmem.dat
paste buffcache.dat free.dat swap.dat >> finalmem.dat
#GENERATE GRAPHICS
gnuplot memplot.in
Figura 71: Extraccio de dades de memoria i CPU - Font:Propi
set title "MEMORY USAGE" font ", 20"
set style fill solid 1.0
set boxwidth
set term png
set auto x
set ylabel 'MiB'
set xlabel 'min'
set x2label 'tasques'
set style data histogram
set style histogram cluster gap 3
set yrange [0:8000]
set xrange [0:90]
set xtics('1' 6, '2' 12, '3' 18, '4' 24, '5' 30, '6' 36,
↪→ '7' 42, '8' 48, '9' 54, '10' 60, '11' 66, '12' 72,
↪→ '13' 78, '14' 84, '15' 90)
set x2tics('1' 1, '4' 3.7, '5' 20.9, '8' 22.5) font ", 8"
77
set output "mem.png"
plot 'finalmem.dat' using 1 title col, \
'' using 2 title col, \
'' using 3 title col
Figura 72: Generacio de la grafica de memoria - Font:Propi
set title "CPU USAGE" font ", 20"
set style fill solid 1.0
set boxwidth 0.5
set term png
set xlabel 'min'
set ylabel '%cpu'
set x2label 'tasques'
set style data histogram
set style histogram cluster gap 4
set yrange [0:100]
set xrange [0:90]
set output "cpu.png"
set xtics('1' 6, '2' 12, '3' 18, '4' 24, '5' 30, '6' 36,
↪→ '7' 42, '8' 48, '9' 54, '10' 60, '11' 66, '12' 72,
↪→ '13' 78, '14' 84, '15' 90)
set x2tics('1' 1, '4' 3.7, '5' 20.9, '8' 22.5) font ", 8"
plot 'final.dat' using 1 title col, \
'' using 2 title col, \
'' using 3 title col, \
'' using 4 title col
Figura 73: Generacio de la grafica de CPU - Font:Propi
#!/bin/bash
echo "Pujada Baixada" > final.dat
78
dd if=/dev/zero of=˜/nextcloud/file.dat count=1000 bs=1000000
↪→ 2> dd1.txt
x=`cat dd1.txt | grep "copied" | awk '{print $10}' | tr ','
↪→ '.'`
dd if=˜/nextcloud/file.dat of=/dev/null bs=1000000 2> dd2.txt
y=`cat dd2.txt | grep "copied" | awk '{print $10}' | tr ','
↪→ '.'`
dd if=/tmp/file.dat of=˜/nextcloud/file2.dat count=1000 bs
↪→ =1000000 2> dd3.txt
z=`cat dd3.txt | grep "copied" | awk '{print $10}' | tr ','
↪→ '.'`
dd if=˜/nextcloud/file2.dat of=/tmp/file2.dat bs=1000000 2>
↪→ dd4.txt
w=`cat dd4.txt | grep "copied" | awk '{print $10}' | tr ','
↪→ '.'`
echo "$x $y" >> final.dat
echo "$z $w" >> final.dat
gnuplot plotxarxa.in
Figura 74: Extraccio de dades d’ample de banda - Font:Propi
set title "NETWORK BANDWITH"
set style data histogram
set style histogram cluster gap 1
set style fill solid border rgb "black"
set auto x
set yrange[0:2000]
set ylabel "MB/s"
set term png
79
set output "bandwith.png"
set xtics('No accedim a disc local' 0, 'Accedim a disc local'
↪→ 1)
plot 'final.dat' using 1 title col, \
'' using 2 title col
Figura 75: Generacio de la grafica d’ample de banda - Font:Propi
18.5 Taules de dades
Cpu0 (%) Cpu1 (%) Cpu2 (%) Cpu3 (%)
0 0 13.0 15.0
2.3 0.3 1.3 0.4
4.9 12.4 15.5 19.5
11.9 9.0 19.3 13.0
14.1 21.3 18.5 27.0
18.1 21.2 35.1 16.7
20.4 13.8 34.7 15.6
32.5 26.5 30.7 28.1
24.3 22.2 25.7 22.4
40.4 40.8 55.5 42.6
21.5 35.0 23.0 31.5
28.0 25.8 37.7 17.8
13.1 16.0 17.2 10.8
16.7 32.2 37.6 20.7
62.6 93.7 90.0 52.0
96.7 55.6 42.8 45.4
100.0 53.5 45.9 24.2
55.1 69.3 65.2 100.0
43.2 78.8 24.6 52.6
16.2 1.2 53.3 5.8
2.6 1.1 1.3 .9
7.3 7.5 9.6 1.8
80
21.9 6.2 3.7 1.7
3.7 3.7 8.6 4.0
3.7 3.0 4.3 1.0
5.7 3.6 4.4 .4
3.5 3.7 5.7 1.2
7.3 4.3 1.4 1.8
6.6 2.8 1.4 2.6
9.0 7.6 3.1 4.0
8.7 5.0 2.2 .7
3.7 3.2 3.0 .7
4.0 2.4 8.6 .5
4.1 3.1 7.3 2.2
1.9 3.6 5.4 .4
5.9 3.8 6.5 2.2
7.6 5.6 6.2 4.1
85.1 6.5 6.8 11.2
20.2 24.6 35.6 29.6
27.2 33.7 30.9 28.6
11.0 20.5 72.6 10.9
11.4 38.4 33.6 38.9
22.5 24.0 61.0 16.4
20.6 17.5 53.6 24.4
12.2 49.7 41.4 16.3
34.8 23.5 53.6 8.9
24.3 20.0 66.0 8.5
26.0 19.7 59.5 16.3
25.3 29.4 47.6 17.8
9.2 12.1 75.2 20.4
11.2 8.2 12.2 5.3
2.1 6.5 3.2 11.7
.9 4.5 .4 4.9
81
3.6 11.6 4.7 3.8
1.5 7.6 1.0 3.3
1.8 9.0 1.5 3.9
3.0 9.3 1.7 6.2
3.8 4.9 1.9 9.6
3.8 3.3 1.0 7.6
4.3 4.7 2.9 7.9
4.1 4.0 1.4 7.8
3.7 3.4 1.3 7.1
5.2 4.2 1.8 9.5
5.1 6.1 3.1 12.6
2.8 3.4 .8 6.7
4.4 5.8 5.1 8.5
4.4 8.3 3.5 9.2
5.8 15.7 8.2 6.1
1.4 .3 .5 2.2
1.3 2.8 1.2 1.7
1.1 .7 .5 .4
2.4 1.5 5.1 2.3
1.0 1.3 .9 .8
1.4 .3 .1 .3
2.8 .8 1.0 .7
3.3 .8 .9 1.1
1.0 .7 .3 .3
1.8 1.8 1.7 4.8
.9 .7 1.3 1.5
.9 .5 .4 .2
2.1 1.6 .9 .9
1.9 1.4 .8 1.9
1.0 .5 .6 .3
5.2 1.5 1.5 1.4
82
1.3 .6 .9 .8
1.1 .5 .4 .2
1.2 1.0 .5 1.0
1.9 1.6 .7 2.4
.9 .6 .5 .5
7.1 1.3 1.6 2.4
Taula 15: Rendiment de la CPU amb en l’experiment 1
Memory (MB) Free (MB) Swap (MB)
4640.555 198.637 668.070
4640.652 196.684 668.070
4726.016 118.648 670.070
4693.371 151.898 676.570
4720.234 136.199 691.320
4736.734 130.469 698.320
4728.453 131.520 711.320
4750.672 124.418 727.070
4745.324 141.328 736.820
4771.793 125.297 772.664
4115.371 784.559 772.570
4440.117 462.809 772.570
4722.547 181.379 772.570
4787.797 133.129 787.977
4824.160 123.828 823.070
4851.035 100.566 823.820
4853.285 129.453 842.570
4875.418 125.469 859.570
4166.961 850.688 890.070
3830.637 1183.305 890.070
3830.723 1183.602 890.070
3897.852 1110.340 890.070
83
3956.750 1051.414 890.070
3984.230 1016.051 889.820
4002.059 994.977 889.820
4014.691 979.805 889.570
4032.945 959.273 889.570
4046.027 943.969 889.570
4064.910 924.840 889.570
4088.941 898.102 889.570
4119.344 866.508 889.570
4139.852 845.938 889.570
4154.898 832.402 889.570
4173.531 809.539 889.570
4187.578 797.480 889.570
4199.191 782.047 889.570
4205.934 765.887 889.570
4176.633 770.441 889.820
4164.777 775.480 890.070
4180.578 747.477 890.070
4200.434 731.363 890.070
4222.750 705.934 890.070
4240.836 681.430 890.070
4237.848 686.090 890.070
4256.711 663.027 890.070
4282.516 626.293 890.070
4309.215 606.848 890.070
4321.266 595.465 890.070
4339.691 575.074 890.070
4359.840 552.676 890.070
4371.059 543.871 890.070
4385.816 523.562 890.070
4397.148 514.469 890.070
84
4415.594 514.316 890.070
4428.496 499.066 890.070
4445.445 482.301 890.070
4476.883 450.832 890.070
4504.621 421.484 890.070
4524.422 401.855 890.070
4536.320 389.465 890.070
4556.668 368.793 890.070
4576.051 348.926 890.070
4600.906 326.324 890.070
4639.383 287.492 890.070
4657.219 272.016 890.070
4672.539 315.547 890.070
4694.430 262.066 890.070
4698.363 291.980 890.070
4698.484 294.332 890.070
4698.656 295.395 890.070
4698.691 314.957 890.070
4698.855 322.281 890.070
4698.934 322.527 890.070
4698.977 322.762 890.070
4699.035 322.410 890.070
4699.105 322.871 890.070
4699.137 323.109 890.070
4699.230 322.188 890.070
4699.402 321.586 890.070
4699.449 321.398 890.070
4699.559 322.777 890.070
4699.691 324.359 889.820
4699.703 324.379 889.820
4699.762 322.145 889.820
85
4699.820 322.371 889.820
4699.883 321.223 889.820
4699.945 320.645 889.820
4700.152 321.527 889.820
4700.152 321.652 889.820
4701.539 320.641 889.820
Taula 17: Rendiment de la memoria en l’experiment 1
Cpu0 (%) Cpu1 (%) Cpu2 (%) Cpu3 (%)
11.8 0 0 0
3.4 3.1 4.1 3.1
6.5 7.9 12.9 23.2
23.0 11.4 19.1 27.0
11.9 18.8 19.1 19.3
18.1 16.0 14.3 14.2
15.9 13.3 10.9 19.7
8.6 19.5 13.7 21.7
15.3 9.3 12.7 16.6
15.6 6.8 14.6 11.9
13.8 8.9 10.3 4.5
11.0 7.6 7.3 11.6
16.8 10.8 11.3 9.0
11.0 5.7 9.3 9.2
17.9 10.0 13.0 14.4
23.3 12.1 32.2 26.1
12.8 6.9 14.6 19.8
11.5 8.7 12.9 11.6
19.1 14.4 18.8 24.9
23.3 37.2 43.0 33.5
69.2 38.0 66.5 34.5
48.6 40.2 71.6 45.0
86
17.1 20.7 17.1 20.7
14.7 10.1 24.1 20.4
23.4 28.4 27.0 31.4
70.1 54.4 81.3 63.6
29.0 24.7 61.8 62.4
40.7 26.2 60.2 58.5
38.6 46.9 86.0 17.4
46.8 60.8 88.1 15.5
45.2 82.5 44.3 44.4
46.4 57.3 92.5 91.0
88.5 51.2 84.0 100.0
91.7 96.7 91.9 97.0
71.0 82.1 100.0 97.8
79.1 68.1 79.0 100.0
95.9 65.0 89.1 100.0
100.0 27.3 100.0 100.0
100.0 32.0 100.0 94.5
94.4 55.7 100.0 57.3
85.9 100.0 100.0 72.4
100.0 49.8 86.6 91.8
100.0 77.9 100.0 54.1
98.0 91.9 100.0 76.0
100.0 57.6 68.7 100.0
100.0 85.2 16.6 100.0
88.8 89.2 60.3 91.6
100.0 100.0 63.2 3.3
78.0 73.6 93.2 16.9
16.1 4.7 1.3 15.3
1.4 2.5 1.6 34.4
2.8 3.4 2.0 19.2
1.5 28.5 17.2 20.1
87
2.8 25.0 33.9 14.4
5.4 20.0 32.9 16.0
15.8 10.4 43.4 14.3
2.9 5.4 9.8 8.7
4.2 6.4 7.1 9.7
5.7 9.2 4.3 13.0
12.7 12.6 7.2 12.0
15.6 17.4 7.6 16.9
8.4 5.5 1.6 11.4
25.9 19.4 10.3 16.1
13.6 15.0 7.3 8.0
16.9 14.2 9.2 18.8
14.0 13.9 6.0 6.5
11.0 12.3 13.5 5.1
13.3 17.3 10.3 11.4
7.4 15.2 5.7 9.0
7.5 16.3 5.4 8.6
10.3 10.9 7.8 5.2
9.5 4.3 9.4 4.8
9.1 7.2 16.8 7.1
12.8 8.4 10.6 9.5
14.0 10.7 9.1 4.0
16.5 11.2 4.0 3.9
13.6 6.6 2.9 4.4
13.2 7.1 3.6 7.9
12.6 7.2 3.4 10.3
14.7 6.0 4.7 11.0
8.7 2.8 7.4 7.7
8.3 4.7 10.9 10.3
15.7 9.9 8.2 5.3
21.2 3.1 2.3 16.6
88
14.0 6.0 18.2 22.3
18.2 10.2 5.5 23.5
7.3 4.5 2.7 11.3
5.6 5.4 3.2 2.2
6.6 6.8 5.6 2.3
10.1 7.1 5.2 1.1
11.6 7.5 3.8 .9
13.7 9.0 2.2 2.3
12.1 6.3 3.9 .6
31.8 6.4 5.9 1.7
33.6 9.6 4.3 2.7
12.5 12.6 6.2 10.9
16.0 6.6 5.0 8.7
27.7 6.6 4.8 1.8
22.4 7.2 14.2 1.9
20.0 6.2 5.7 4.7
20.5 1.6 4.8 5.1
16.0 5.2 3.9 6.0
16.4 3.1 3.0 5.1
19.4 3.2 5.9 10.4
20.9 1.7 5.6 5.5
19.8 3.6 3.9 5.0
16.8 1.2 5.9 4.9
16.3 1.7 15.3 10.8
6.2 2.6 22.7 5.1
3.8 7.8 15.4 7.2
6.1 4.6 19.1 6.8
12.7 5.9 7.5 9.7
10.9 8.3 4.8 5.2
8.1 10.1 6.2 5.0
30.5 34.3 22.7 13.6
89
36.4 23.9 14.6 23.6
2.3 14.5 8.2 11.2
3.4 18.0 6.2 7.6
1.9 20.1 6.9 11.2
6.8 10.5 9.1 9.7
15.8 27.2 15.6 39.6
17.1 35.2 14.3 8.1
8.8 11.6 17.1 3.9
10.9 13.0 17.9 1.7
7.5 13.4 14.0 1.3
4.0 10.5 10.7 2.7
3.6 11.6 8.2 2.7
9.0 15.1 10.6 3.3
7.8 7.9 4.9 1.4
8.4 9.4 6.6 2.4
16.4 7.5 7.8 7.3
12.7 7.3 9.2 1.0
13.8 4.8 2.6 .6
18.3 2.7 3.6 2.1
18.6 1.6 .8 1.1
5.0 1.2 1.3 .9
1.5 .4 1.0 .2
1.7 1.3 1.3 1.5
.9 .2 1.1 .7
1.4 1.6 4.5 1.6
1.9 .5 .8 1.5
2.8 .7 .8 .8
1.0 .5 .3 .3
1.3 .1 .2 1.0
20.0 1.9 11.8 2.9
3.3 1.5 7.4 1.6
90
.9 .3 .3 .5
1.7 1.0 .5 1.5
6.7 .1 .2 .7
1.1 .2 .1 .3
Taula 19: Rendiment de la CPU en l’experiment 2
Memory (MB) Free (MB) Swap (MB)
4683.594 339.246 889.570
4736.566 288.031 889.570
4897.496 126.863 892.570
4898.867 133.125 894.570
4904.910 129.863 898.820
4901.910 127.164 902.570
4900.973 124.176 906.070
4903.598 126.840 909.570
4897.551 133.039 917.070
4887.637 134.297 920.070
4900.879 121.605 920.570
4892.738 130.148 925.070
4882.145 133.516 929.820
4894.453 124.367 932.320
4872.316 146.809 935.820
4879.051 151.973 948.070
4884.215 148.344 953.320
4895.738 140.766 958.070
4906.609 130.426 965.570
4943.727 130.605 987.320
4978.887 116.641 1019.320
4314.492 798.195 1049.000
4665.508 451.984 1048.750
4904.125 209.344 1048.750
91
4975.355 137.301 1055.027
4960.961 126.816 1061.555
4884.832 245.750 1069.070
4966.066 175.090 1087.570
5027.262 120.039 1091.070
5041.625 119.859 1097.320
5017.699 145.891 1104.820
5028.848 130.090 1112.070
5050.746 122.852 1117.070
5038.184 136.242 1124.820
5048.539 132.684 1130.078
5064.977 128.250 1141.621
5064.285 134.816 1149.406
5087.020 120.035 1159.195
5102.230 127.695 1175.008
5123.020 118.793 1183.039
5152.762 100.867 1190.066
5134.719 126.004 1203.320
5135.129 126.477 1212.070
5144.445 127.215 1225.070
5152.352 129.922 1234.570
5158.566 132.102 1241.820
4856.777 436.664 1249.820
4729.492 557.051 1249.820
3553.762 1724.574 1249.570
3554.500 1741.160 1249.320
3670.941 1634.840 1249.320
3769.238 1533.270 1249.320
3883.168 1415.051 1249.320
3996.695 1293.664 1249.070
4090.594 1187.855 1247.570
92
4155.121 1100.891 1247.570
4205.324 1039.445 1247.820
4265.496 973.246 1247.820
4341.625 892.535 1247.820
4426.047 805.395 1247.820
4502.410 721.277 1247.820
4544.641 682.914 1247.820
4644.891 577.133 1247.820
4732.926 483.949 1247.820
4859.492 359.590 1247.820
4941.527 276.246 1247.820
5017.469 152.770 1247.820
5077.648 131.961 1248.320
5080.719 131.012 1248.820
5089.957 124.133 1249.320
5083.879 136.258 1250.070
5065.109 152.008 1250.570
5088.355 129.742 1251.070
5066.293 150.855 1251.570
5116.609 136.031 1251.820
5130.672 122.238 1252.070
5120.430 133.074 1252.320
5132.223 120.355 1252.570
5129.723 121.090 1253.070
5114.938 135.785 1253.570
5107.129 143.266 1254.320
5129.043 118.574 1256.570
5110.473 136.688 1257.320
5120.938 123.125 1258.070
5095.961 124.988 1258.570
5127.520 119.973 1258.820
93
5111.285 133.176 1259.070
5108.883 135.930 1259.320
5122.691 123.652 1259.320
5115.824 126.801 1259.570
5093.910 150.797 1259.820
5110.488 132.832 1260.070
5102.883 141.898 1260.320
5110.656 128.035 1260.570
5112.418 131.773 1261.070
5117.812 128.102 1261.570
5117.633 125.000 1262.070
5117.707 127.625 1262.570
5113.680 132.887 1263.320
5119.109 126.383 1263.570
5113.359 134.379 1264.070
5126.051 126.652 1264.570
5128.535 121.887 1264.820
5122.039 129.414 1267.570
5119.039 132.594 1268.070
5119.430 132.301 1268.570
5126.035 129.770 1271.070
5129.090 123.848 1272.070
5133.094 120.789 1272.820
5130.949 125.898 1273.070
5136.918 122.012 1273.570
5135.945 120.367 1274.070
5131.988 124.289 1274.570
5135.586 124.621 1275.070
5087.277 145.129 1275.820
5114.125 142.957 1276.320
5118.375 133.598 1276.820
94
5117.043 137.516 1277.320
5134.617 122.996 1279.570
5120.512 138.773 1280.070
5116.855 137.984 1280.570
5113.477 143.586 1281.320
5110.781 145.934 1281.820
5121.625 137.227 1281.820
5130.047 130.211 1282.070
5128.094 133.102 1284.320
5132.906 131.445 1284.570
5149.457 131.051 1284.820
5177.875 130.930 1284.820
5176.605 130.625 1284.820
5195.262 119.164 1285.320
5207.332 132.586 1285.820
5200.449 138.543 1286.070
5199.816 152.035 1286.320
5238.641 125.902 1286.320
5231.465 134.543 1286.570
5231.508 144.625 1286.570
5232.242 155.562 1286.570
5232.359 156.066 1286.570
5215.766 173.395 1286.570
5215.812 173.426 1286.570
5215.922 173.551 1286.570
5215.957 174.441 1286.570
5215.984 174.309 1286.570
5178.250 214.473 1286.820
5179.363 211.121 1286.820
5179.422 211.738 1286.820
5179.469 211.957 1286.820
95
5179.477 213.441 1286.820
5179.520 212.422 1286.820
Taula 21: Rendiment de la memoria en l’experiment 2
Pujada Baixada
451 1000
103 396
Taula 22: Ample de banda en l’experiment 3
96