Multipathとudevのディスクバインドポリシーの概要

4654 ワード

asmはディスクを使用するときに初期のディスクパスを直接使用することはありません.asmはディスクの権限に非常に敏感です.一般的にasmディスクの権限はgrid:asmadminであり、gridユーザーはasmadminグループにいなければなりません.特殊な環境ではoracleもasmadminグループにいなければなりません.ホストの再起動後にディスク権限が変更されないなどのディスク権限を安定させるには、ディスク固有フラグscsi idにディスクパスを安定させることが重要です(ディスクの変更によりasmが起動できなくなります).この場合はmultipathとudevを使用する必要があります.
rawバインドは以前はよく使われていたが、バインド方式も簡単だったが、ディスク権限が変化し、技術が長すぎてudevに置き換えられた.
multipath:
Multipathはlinuxでマルチパスを生成するためのツールで、1つのリンクが不安定な場合、自動的に別のリンクに切り替えることができます.Multipathはディスクをバインドすることもできます./etc/multipath.confには、このようなファイルは、デバイスscsi idとデバイスパスがバインドされていることを示す
multipaths {
        multipath {
                wwid "360050xxxxxxxxxxx00000000010cb"
                alias asm01
        multipath {
                wwid "36005xxxxxxxxxxxxx000000010db"
                alias asm17
        }
}

scsi idはwwidです.aliasは/dev/mapper/の下にあります.以下のコマンドでscsi idを識別できます.
/usr/lib/udev/scsi_id -g -u -d /dev/mapper/asm01

Multipathの起動
systemctl start multipathd

Multipathの表示
systemctl status multipathd  --  mutipath   ,    
multipath -ll   --   multipath     
asm08 (360050768018xxxxx00010d2) dm-17 IBM     ,2145            
size=512G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 0:0:3:7  sdac              65:192 active ready  running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 0:0:2:7  sdm               8:192  active ready  running
  |- 2:0:0:7  sdas              66:192 active ready  running
  `- 2:0:1:7  sdbi              67:192 active ready  running

例えば、上記の情報はmultipath-llで表示されます.
以上の情報から,multipathは2つの経路,1つのasm 08,1つのdm−17を生成していることがわかる.asm 08はlinkであり、dm-17を指し、dm-17はblockデバイスである.
[root@xxx ~]# ls -lrt /dev/mapper/asm08
lrwxrwxrwx 1 root root 8 Jun 15 15:15 /dev/mapper/asm08 -> ../dm-17
[root@xxx ~]# ls -lrt /dev/dm-17
brw-rw---- 1 grid asmadmin 253, 17 Jun 15 15:15 /dev/dm-17

本質的には/dev/mapper/asm 08および/dev/dm-17が実際に指向する同じデバイス
[root@xx ~]#  /usr/lib/udev/scsi_id -g -u -d /dev/mapper/asm08
360050768xxx000000010d2
[root@xx ~]# /usr/lib/udev/scsi_id -g -u -d /dev/dm-17
360050768xxx000000010d2

360050768 xxx 00000000 10 d 2このデバイスはsdac,sdm,sdas,sdbiから構成されています.
udev:
udevは一般的なディスクバインドツールでもあり、udevルールにディスクバインドのルールを明記し、有効にする必要があります.
たとえば、次のような方法があります.
[root@xxx ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules 
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36005076xxx000000000010cb",SYMLINK+="asm/hdisk001",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36005076xxx000000000010cc",SYMLINK+="asm/hdisk002",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36005076xxx000000000010cd",SYMLINK+="asm/hdisk003",OWNER="grid",GROUP="asmadmin",MODE="0660"

udevルールには、バインドソースパスdm-*、バインドディスクのscsi id、バインドターゲットパス/dev/asm/hdisk 00 x、ターゲットパス属グループgrid:asmadmin、ターゲットパス権限0660が明記されています
[root@ybnode01 ~]# ls -lrt /dev/asm/hdisk0*
lrwxrwxrwx 1 root root 7 Jun 15 15:31 /dev/asm/hdisk017 -> ../dm-2
lrwxrwxrwx 1 root root 8 Jun 15 15:31 /dev/asm/hdisk002 -> ../dm-13
[root@ybnode01 ~]# ls -lrt /dev/dm*
brw-rw---- 1 grid asmadmin 253,  2 Jun 15 15:34 /dev/dm-2
brw-rw---- 1 grid asmadmin 253, 13 Jun 15 15:34 /dev/dm-13

注:udevバインドソースパス権限は変更されません.バインドターゲットパス/dev/asm/hdisk*の権限はroot:root 777、linkからdmの下です.rhel 7では、udevでディスクをバインドした後、udevルールに権限が明記されていても、ターゲットパス権限はroot:root 777です.rhel 6では、udevルールのような権限が一致し、grid:asmadmin 0660である.
Multipathではscsi idがバインドされており、udevで再バインドするのは余計に見えますが、scsi idがバインドされていることを前提に、udevは次のバインド方法でバインドできます.
[root@xxx ~]# cat /etc/udev/rules.d/12-dm-permissions.rules 
ENV{DM_NAME}=="dm*",OWNER:="grid", GROUP:="asmadmin", MODE:="660"

このバインド方式ではudevルールでディスクパスとディスクscsi idをバインドせず、追加のパスを生成せず、/dev/dm*の権限のみを変更します.ここでudevルールはディスク権限をバインドするために使用され、データベースはdm*を直接使用できます.
もう一つの方法はmultipathです.confにはwwidとaliasの対応関係は明記されず,udevにのみソースパスdm,ターゲットパス,scsi id,権限をバインドする.
この方法は有効だが、理解しにくい.multipathがdmを生成しなければudevがバインドされないので、udevはmultipathの後、multipathがscsi idをバインドしていないに違いない.multipathが起動時にscsi idを認識し間違えたのではないか.このときudevはscsi idとdmをバインドしている.だから個人的にはこのようなバインド方法をお勧めしません.
異なるエンジニアには異なる方法がありますが、どのバインド方式でも、最終的な目的はディスクパスとscsi idをバインドし、asmが使用するasm_をバインドすることです.diskのpathの権限.Multipathとudevを理解してこそ、異常状況を処理することができる.