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/sdcLayanan OS Linux 'scsi_reserve'