GNU/Linux >> Belajar Linux >  >> Cent OS

Memahami Reservasi SCSI Linux

Apa itu reservasi SCSI

Reservasi SCSI adalah mekanisme yang memungkinkan pemrakarsa SCSI untuk memesan LUN untuk akses eksklusif dan mencegah pemrakarsa lain membuat perubahan. Fitur ini biasanya digunakan dalam cluster. Posting ini menguraikan penggunaan dasar reservasi SCSI dalam sistem CentOS/RHEL.

Reservasi SCSI terdiri dari dua tahap:Pertama, pemrakarsa harus mendaftarkan kunci reservasi, kemudian melanjutkan untuk memesan perangkat menggunakan kunci reservasi yang sama ketika tuan rumah membutuhkan akses eksklusif. Mari kita lihat bagaimana kita dapat menggunakan reservasi SCSI dan fungsi yang diperlukan untuk Reservasi SCSI.

Instal utilitas yang diperlukan

sg_persist command menyediakan semua fungsi yang diperlukan untuk Reservasi SCSI, yang terdapat dalam paket sg3_utils .

# yum install sg3_utils

Melihat pendaftaran

Pada contoh di bawah ini, belum ada kunci reservasi yang didaftarkan.

# 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

Daftarkan kunci reservasi

Kunci reservasi harus berupa string hex, dan panjangnya hingga 8 byte, di sini kita menggunakan abc123 misalnya.

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

Output di bawah ini menunjukkan SCSI LUN yang memiliki 2 kunci reservasi (atau 2 host) terdaftar.

# 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

Pesan LUN terdaftar atas nama kunci yang diberikan

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

–tipe-prout parameter menentukan jenis reservasi, dari halaman manual, jenis yang valid termasuk:

  • 1 :tulis eksklusif
  • 3 :akses eksklusif
  • 5 :tulis eksklusif – hanya pendaftar
  • 6 :akses eksklusif – hanya pendaftar
  • 7 :tulis eksklusif – semua pendaftar
  • 8 :akses eksklusif – semua pendaftar

Lihat reservasi

Output menunjukkan server dicadangkan oleh kunci abc123, dengan tipe 3 (akses eksklusif):

# 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

Verifikasi reservasi

Pada node1 yang telah dicadangkan /dev/sdc1, ia dapat memasang 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

Sementara itu, tidak dapat mengakses disk yang sama di node2

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

Konflik reservasi acara 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

Lepaskan reservasi

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

Batalkan pendaftaran kunci reservasi

# sg_persist --out --register --param-rk=abc123 /dev/sdc
Layanan OS Linux 'scsi_reserve'


Cent OS
  1. Memahami systemd saat startup di Linux

  2. Memahami panggilan sistem di Linux dengan strace

  3. Linux – Memahami Operasi Perintah Sinkronisasi Di Linux?

  1. Memahami Perintah Dasar Linux

  2. Memahami dm-Multipath Identifiers di Linux

  3. Memahami Kebijakan SELinux di Linux

  1. Panduan untuk memahami pustaka perangkat lunak Linux di C

  2. Memahami Desktop Linux?

  3. Memahami file /etc/xinetd.conf di Linux