GNU/Linux >> Tutoriales Linux >  >> Cent OS

Descripción de la reserva SCSI de Linux

¿Qué es la reserva SCSI

La reserva de SCSI es un mecanismo que permite a los iniciadores de SCSI reservar un LUN para acceso exclusivo y evitar que otros iniciadores realicen cambios. La característica se usa generalmente en el clúster. Esta publicación explica el uso básico de la reserva SCSI en los sistemas CentOS/RHEL.

La reserva SCSI contiene dos etapas:primero, los iniciadores deben registrar una clave de reserva y luego continuar reservando el dispositivo usando la misma clave de reserva cuando un host necesita acceso exclusivo. Veamos cómo podemos usar la reserva SCSI y las funciones necesarias para la reserva SCSI.

Instalar las utilidades necesarias

El sg_persist El comando proporciona todas las funciones necesarias para la Reserva SCSI, está contenido en el paquete sg3_utils .

# yum install sg3_utils

Ver el registro

En el ejemplo que se muestra a continuación, aún no se ha registrado ninguna clave de reserva.

# sg_persist /dev/sdc
>> No service action given; assume Persistent Reserve In command
>> with Read Keys service action
IET VIRTUAL-DISK 0001
Peripheral device type: disk
PR generation=0x4, there are NO registered reservation keys

Registrar una clave de reserva

La clave de reserva debe ser cadenas hexadecimales y de hasta 8 bytes de largo, aquí usamos abc123 por ejemplo.

# sg_persist --out --register --param-sark=abc123 /dev/sdc

El siguiente resultado muestra un SCSI LUN que tiene 2 claves de reserva (o 2 hosts) registradas.

# sg_persist /dev/sdc
>> No service action given; assume Persistent Reserve In command
>> with Read Keys service action
IET VIRTUAL-DISK 0001
Peripheral device type: disk
PR generation=0x6, 2 registered reservation keys follow:
0xabc123
0x123abc

Reserve un LUN registrado en nombre de una clave determinada

# sg_persist --out --reserve --param-rk=abc123 --prout-type=3 /dev/sdc
IET VIRTUAL-DISK 0001
Peripheral device type: disk

El tipo prout el parámetro especificó el tipo de reserva, desde la página de manual, tipos válidos que incluyen:

  • 1 :escribe exclusivo
  • 3 :acceso exclusivo
  • 5 :escriba exclusivo - solo para los registrados
  • 6 :acceso exclusivo – solo para registrados
  • 7 :escribe exclusivo – todos los registrados
  • 8 :acceso exclusivo – todos los registrados

Ver la reserva

La salida indicó que el servidor estaba reservado por clave abc123, con tipo 3 (acceso exclusivo):

# sg_persist -r /dev/sdc
IET VIRTUAL-DISK 0001
Peripheral device type: disk
PR generation=0x6, Reservation follows:
Key=0xabc123
scope: LU_SCOPE, type: Exclusive Access

Verificar la reserva

En el nodo 1 que tiene /dev/sdc1 reservado, pudo montar el disco.

# mount /dev/sdc1 /mnt
# mount | grep mnt
/dev/sdc1 on /mnt type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
# umount /mnt

Mientras tanto, no pudo acceder al mismo disco en el nodo2

# mount /dev/sdc1 /mnt
mount: mount /dev/sdc1 on /mnt failed: Invalid exchange

El conflicto de reserva de show de dmesg

# dmesg | tail
[6902380.608058] sd 11:0:0:1: [sdc] tag#16 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[6902380.608060] sd 11:0:0:1: [sdc] tag#16 CDB: Read(10) 28 00 00 1f ff 80 00 00 08 00
[6902380.608061] blk_update_request: critical nexus error, dev sdc, sector 2097024
[6902380.608064] Buffer I/O error on dev sdc1, logical block 261872, async page read
[6902380.609007] sd 11:0:0:1: reservation conflict
[6902380.609011] sd 11:0:0:1: [sdc] tag#14 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[6902380.609013] sd 11:0:0:1: [sdc] tag#14 CDB: Read(10) 28 00 00 00 08 00 00 00 01 00
[6902380.609015] blk_update_request: critical nexus error, dev sdc, sector 2048
[6902380.609523] sd 11:0:0:1: reservation conflict
[6902380.609526] blk_update_request: critical nexus error, dev sdc, sector 0

Liberar la reserva

# sg_persist --out --release --param-rk=abc123 --prout-type=3 /dev/sdc

Anular el registro de una clave de reserva

# sg_persist --out --register --param-rk=abc123 /dev/sdc
Servicio del sistema operativo Linux 'scsi_reserve'


Cent OS
  1. Una guía para comprender las bibliotecas de software de Linux en C

  2. Comprender systemd al inicio en Linux

  3. Comprender las llamadas al sistema en Linux con strace

  4. ¿Entender el escritorio de Linux?

  5. Entendiendo el archivo /etc/xinetd.conf en Linux

Comprender el comando uname en Linux

Comprender los permisos de archivos de Linux

Entendiendo el comando time en Linux

Comprender las rutas múltiples de Linux (dm-multipath)

Entendiendo la utilidad separada de Linux

Entendiendo la utilidad fdisk de Linux