¿Existe almacenamiento en caché a nivel de disco en Solaris 11?

¿Existe almacenamiento en caché a nivel de disco en Solaris 11?

Tengo un disco iSCSI en/dev/rdsk/c5t6d0

He hecho una partición (porción con etiqueta UEFI) en:/dev/rdsk/c5t6d0s0

Ahora escribo algunos datos en el segmento:

echo "xyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxy" >/text
dd if=/text of=/dev/dsk/c5t6d0s0

Si descarto el contenido del disco, veo la etiqueta UEFI y también mis datos en el desplazamiento 0x5000:

dd if=/dev/rdsk/c5t6d0 bs=512 | xxd
0000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
...
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 0000 0000 0eb5 7760 0000 00ff  ..........w`....
00001c0: ffff eeff ffff 0100 0000 ff3f 0300 0000  ...........?....
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.
0000200: 4546 4920 5041 5254 0000 0100 5c00 0000  EFI PART....\...
0000210: 7187 d278 0000 0000 0100 0000 0000 0000  q..x............
0000220: ff3f 0300 0000 0000 2200 0000 0000 0000  .?......".......
0000230: de3f 0300 0000 0000 fd59 3d67 51a0 4d13  .?.......Y=gQ.M.
0000240: abdd a5e8 8251 c7ac 0200 0000 0000 0000  .....Q..........
0000250: 8000 0000 8000 0000 7e8c 8e06 0000 0000  ........~.......
0000260: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000270: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000280: 0000 0000 0000 0000 0000 0000 0000 0000  ................
...
0005000: 7879 7879 7879 7879 7879 7879 7879 7879  xyxyxyxyxyxyxyxy
0005010: 7879 7879 7879 7879 7879 7879 7879 7879  xyxyxyxyxyxyxyxy
0005020: 7879 7879 7879 7879 7879 7879 7879 7879  xyxyxyxyxyxyxyxy
0005030: 7879 7879 7879 7879 7879 7879 0ab6 db6d  xyxyxyxyxyxy...m
0005040: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m
0005050: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m
0005060: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m
0005070: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m
0005080: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m
0005090: 6db6 db6d 6db6 db6d 6db6 db6d 6db6 db6d  m..mm..mm..mm..m

Pero si hago el mismo volcado en el lado del almacenamiento (destino iSCSI), ¡no veo mis datos escritos! Icerrarla máquina SPARC/solaris y¡voilá!los datos ahora están ahí.

¿Cómo puede ser esto? ¿Solaris almacena en caché mis datos en la memoria? ¿Cómo puedo desactivar esto?

Nota 1: intenté usarlo syncpero no ayudó y de todos modos está relacionado con archivos en un sistema de archivos, que no tengo en mi escenario.

Nota 2: Mi máquina es un servidor T5220 UltraSPARC T2 con Solaris 11.3

Nota 3: 'almacenamiento' es un servidor Ubuntu con destino iSCSI en el almacén de respaldo del disco local.

Respuesta1

Está escribiendo en el dispositivo de bloque ( dsk) que está almacenado en el búfer. Si desea omitir el búfer, puede escribir directamente en el dispositivo sin formato ( rdsk, consulte¿Qué son los archivos especiales de caracteres y de bloque en un sistema Unix?) mediante la ejecución:

dd if=/text of=/dev/rdsk/c5t6d0s0

Sin embargo, su /textarchivo probablemente necesitará tener un tamaño exactamente múltiplo del tamaño de bloque para ddtener éxito.

Alternativamente, aún puedes usar el dispositivo de caracteres pero indicarle ddque sincronice su salida:

dd if=/text of=/dev/dsk/c5t6d0s0 conv=sync

o, si desea registros de salida de ancho fijo:

dd if=/text of=/dev/rdsk/c5t6d0s0 cbs=512 conv=sync,block

información relacionada