GNU/Linux >> Znalost Linux >  >> Cent OS

Porozumění linuxové rezervaci SCSI

Co je rezervace SCSI

Rezervace SCSI je mechanismus, který umožňuje iniciátorům SCSI rezervovat LUN pro výhradní přístup a zabránit ostatním iniciátorům v provádění změn. Tato funkce se obvykle používá v clusteru. Tento příspěvek rozvádí základní použití rezervace SCSI v systémech CentOS/RHEL.

Rezervace SCSI obsahuje dvě fáze:Nejprve musí iniciátoři zaregistrovat rezervační klíč a poté pokračovat v rezervaci zařízení pomocí stejného rezervačního klíče, když hostitel potřebuje výhradní přístup. Podívejme se, jak můžeme použít rezervaci SCSI a potřebné funkce pro rezervaci SCSI.

Nainstalujte potřebné nástroje

sg_persist příkaz poskytuje všechny potřebné funkce pro rezervaci SCSI, je obsažen v balíčku sg3_utils .

# yum install sg3_utils

Zobrazit registraci

V níže uvedeném příkladu ještě nebyl zaregistrován žádný rezervační klíč.

# 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

Zaregistrujte si rezervační klíč

Rezervační klíč musí být hex řetězce a až 8 bajtů dlouhý, zde například používáme abc123.

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

Níže uvedený výstup ukazuje SCSI LUN, která má zaregistrované 2 rezervační klíče (nebo 2 hostitele).

# 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

Rezervujte registrovanou LUN jménem daného klíče

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

–typ výběžku parametr specifikoval typ rezervace, z manuálové stránky, platné typy včetně:

  • 1 :psát exkluzivní
  • 3 :výhradní přístup
  • 5 :výhradní zápis – pouze registrující
  • 6 :výhradní přístup – pouze registrující
  • 7 :zápis exkluzivní – všichni registrující
  • 8 :výhradní přístup – všichni registrující

Zobrazit rezervaci

Výstup indikoval, že server byl rezervován klíčem abc123 s typem 3 (výhradní přístup):

# 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

Ověřte rezervaci

Na node1, který má vyhrazený /dev/sdc1, bylo možné připojit disk.

# 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

Mezitím nebyl schopen získat přístup ke stejnému disku na node2

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

Konflikt rezervace zobrazení 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

Uvolněte rezervaci

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

Zrušení registrace rezervačního klíče

# sg_persist --out --register --param-rk=abc123 /dev/sdc
Služba OS Linux „scsi_reserve“


Cent OS
  1. Pochopení systémových volání na Linuxu pomocí strace

  2. Linux – Jak rozumíte operacím synchronizačních příkazů v Linuxu?

  3. Rozumíte Linux Desktopu?

  1. Průvodce pochopením softwarových knihoven Linuxu v jazyce C

  2. Pochopení systemd při startu na Linuxu

  3. Porozumění základním příkazům Linuxu

  1. Pochopení souboru /etc/xinetd.conf v Linuxu

  2. Pochopení identifikátorů dm-Multipath v Linuxu

  3. Pochopení zásad SELinux v Linuxu