Como se deduce del Protocolo de Diskpool para MFS, es necesario que la réplica maestra en un Diskpool dialoge con otras réplicas del bloque para la Sincronización,y la Escritura replicada. Las tramas descritas a continuación son solo entre Diskpools, los clientes no las tienen disponibles en su repertorio.
Sincronización:
[Diskpool Maestro] —————–ISync————————->[Diskpool]
[Diskpool Maestro] <–-ISyncStatus/VersionError/Error—-–[Diskpool]
[Diskpool Maestro] –———-ISyncData/ISyncOk———-–>[Diskpool]
[Diskpool Maestro] <————ISynced/Error—————-– [Diskpool]
Ejemplo ISync:
ISync A0213ABBF1 v0.1
MasterVersion A23FF256
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
<EOM>
Ejemplos de respuestas a ISync:
ISyncStatus A0213ABBF1 v0.1
Version A23FF250
SHA1 d3255bfeda39a3ee590afd80709e6b4b0f956018
Size 212314
PartSize 16384
HashParts 13
SHA1-1 3ee590afd80d3255bfeda39a709e560186b4b0f9
SHA1-2 90afd80d32553ee5bfeda39a709e560186b4b0f9
SHA1-3 3255bfeda39a709e560186b4b0f93ee590afd80d
SHA1-4 0afd80d3255bfeda39a709e53ee5960186b4b0f9
…
SHA1-13 590afd80d3255bfeda39a709e563ee0186b4b0f9
<EOM>
o
VersionError A0213ABBF1 v0.1
Version A23FF257
SHA1 90afd80709e6b4d3255bfeda39a3ee5b0f956018
Size 712314
<EOM>
o
Error A0213ABBF1 v0.1
Code 011
Reason Can’t store
Detail Can’t write to disk, is it full?
<EOM>
Petición interna tras un ISyncStatus correcto:
ISyncData A0213ABBF1 v0.1
MasterVersion A23FF256
Size 800046
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
Offset 49152
BIN 81920
(un trozo binario cualquiera de 81920 (3×16384) bytes…)
Offset 147456
Zeros 229376
Offset 376832
BIN 423214
(Otro trozo binario de 423214 bytes…)
<EOM>
o
ISyncOk A0213ABBF1 v0.1
MasterVersion A23FF256
Size 800046
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
<EOM>
Ejemplos de respuesta:
ISynced A0213ABBF1 v0.1
Version A23FF256
Size 800046
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
<EOM>
o
Error A0213ABBF1 v0.1
Code 011
Reason Can’t store
Detail Can’t write to disk, is it full?
<EOM>
Escritura replicada:
[Diskpool] ————–IWrite————->[Diskpool]————–IWrite————->[Diskpool]…
[Diskpool] <–——–IStored/Error——-–[Diskpool]<–——–IStored/Error——-–[Diskpool]…
Y
[Diskpool Maestro] ————–ICommit————->[Diskpool]
[Diskpool Maestro] <——-ICommited/Error———[Diskpool]
Petición de Escritura:
IWrite A0213ABBF1 v0.1
Version A23FF256
Offset 6354234
Next dp3.example.com:14223 10.92.12.213:15050
Autocommit on
TTL 750
BIN 4096
…(4096 octetos, datos binarios)
BIN 8192
…(8192 octetos, datos binarios)
<EOM>
y (dp3.example.com:1422)
IWrite A0213ABBF1 v0.1
Version A23FF256
Offset 6354234
Next 10.92.12.213:15050
Autocommit on
TTL 750
BIN 4096
…(4096 octetos, datos binarios)
BIN 8192
…(8192 octetos, datos binarios)
<EOM>
y (10.92.12.213:15050)
IWrite A0213ABBF1 v0.1
Version A23FF256
Offset 6354234
Autocommit on
TTL 750
BIN 4096
…(4096 octetos, datos binarios)
BIN 8192
…(8192 octetos, datos binarios)
<EOM>
Ejemplos de Respuestas:
(Las respuestas son congruentes: cualquier fallo se reenvía hasta el primer Diskpool y este se lo manda al Cliente. Además si algún Hash no coincide hay que devolver error tambien hasta el cliente)
IStored A0213ABBF1 v0.1
Version A23FF256
Offset 6354234
Size 12188
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
<EOM>
o
Error A0213ABBF1 v0.1
Code 011
Reason Can’t store
Detail Can’t write to disk, is it full?
o
Error A0213ABBF1 v0.1
Code 012
Reason Hash Error
Detail Data transfer is corrupt, hashes don’t match!
<EOM>
Ejemplos de petición de commit interno:
ICommit A0213ABBF1 v0.1
Version A23FF256
Offset 6354234
Size 4396
SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
ExtendTTL 0
<EOM>
Ejemplos de respuesta:
Commited A0213ABBF1 v0.1
Version A23FF257
Offset 6354234
Size 12188
SHA1 b4b0d3255bfefda39a3ee5e695601890afd8070
<EOM>
o
Error A0213ABBF1 v0.1
Code 005
Reason Write Not Found
Detail The write specified was not found in this diskpool
<EOM>
o
Error A0213ABBF1 v0.1
Code 002
Reason Not Found
Detail The block was not found in this diskpool
<EOM>

Diskpool by José Luis Vázquez González is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 España License.

0 Responses to “Protocolo interno Diskpool-Diskpool”
Leave a Reply