RHEL 5 の SCSI タイムアウトの設定
8 ホスト上の HP 3PAR デバイスの使用
デバイスマッパー用デバイスの作成
デバイスマッパー用デバイスの作成
1. multipath コマンドを実行して、新しいデバイスマッパーノードを /dev/mapper ディ レクトリの下に作成します。
# multipath
2. multipath -11を実行して、デバイスマッパー用デバイスが作成されていることを確認 します。
注記: RHEL 6.x および RHEL 7 を含む RHEL 5.5 以降では、デフォルトで dm マルチパス を有効にするための user_friendly_names オプションがあります。そのため、
350002ac001b40031のようなデバイス名の代わりに mpathXと表示され、kpartx と
RHEL のマニュアルに従った他のツールで、/dev/mapper/mpathXのパスがわかります。
# multipath -ll 350002ac001b40031
[size=5 GB][features="1 queue_if_no_path"][hwhandler="0"]
\_ round-robin 0 [active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 1:0:0:0 sdb 8:16 [active][ready]
3. デバイスを作成した後、multipath -v 3コマンドを使用して、デバイスマッパーノー ドとその関連するパスに関する詳細な情報を取得します。以下の設定が実行されているこ とを確認します。
• 各デバイスについて、path checker がturに設定されていること。
• HP 3PAR アレイで HP 3PAR OS 3.1.1 以降が動作している場合、no_path_retryの
値に、iSCSI の場合は 12、ファイバーチャネルの場合は 18 が設定されていること。
ただし、HP 3PAR アレイで 3.1.1 よりも前のバージョンの HP 3PAR OS が動作して
いる場合、no_path_retryの値に、iSCSI の場合は 12、ファイバーチャネルの場合 は 12 が設定されていること。
multipath -v 3コマンドの出力は、RHEL 4 と RHEL 7、RHEL 6、または RHEL 5 では異 なります。ただし、デバイスマッパーに表示される情報は同じです。
次に RHEL 7 の例を示します。
# multipath -v 3 sdb: mask = 0x3f sdb: dev_t = 8:16 sdb: size = 41943040 sdb: subsystem = scsi sdb: vendor = 3PARdata sdb: product = VV sdb: rev = 3210 sdb: h:b:t:l = 6:0:2:1
sdb: tgt_node_name = 0x2ff70002ac01807 sdb: get_state
sdb: path checker = tur(controller setting) sdb: checker timeout = 30000 ms (sysfs setting) sdb: state = running
sdb: state = 3
sdb: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (controller setting) sdb: uid = 360002ac000000000000002a2000185df (callout)
sdb: state = running
sdb: detect_prio = 1 (config file default)
sdb: prio = alua (controller setting) reported target port group is 1 aas = 80 [active/optimized]
[preferred]
sdb: alua prio = 130 ...
params = 1 queue_if_no_path 1 alua 1 1 round-robin 0 9 169:80 1 8:16 1 65:96 1 66:176 1 68:0 1 128:64 1 131:192 1 66:336 1
デバイスマッパー用デバイスの作成 103
詳細なデバイスマッパーノード情報の表示
multipath -l を使用してデバイスの一覧を表示し、dmsetup コマンドを使用して詳細なデ バイスマッパーノード情報を取得します。
注記: /etc/multipath.confファイル中でno_path_retryに 0 以外の値が設定されて いる場合、再試行期間中は I/O がキューに格納され、features=1 queue_if_no_pathが multipath -l コマンドの出力に表示されます。
次の例を参照してください。
# multipath -l 350002ac001b40031
[size=5 GB][features="1 queue_if_no_path"][hwhandler="0"]
\_ round-robin 0 [active]
\_ 0:0:0:0 sda 8:0 [active]
\_ 1:0:0:0 sdb 8:16 [active]
注記: 出力中でデバイスステータスが [undef]と表示される場合、これは、RHEL で報告済 みの、修正予定の RHEL の不具合です。代わりに multipath -llコマンドを使用します。
このコマンドでは、デバイスのステータスが正しく ready と表示されます。
dmsetupコマンドをさまざまなオプション付きで使用して、デバイスマッパーマッピングに
対する詳細情報を取得できます。
次の例を参照してください。
# dmsetup table
350002ac001b40031: 0 10485760 multipath 1 queue_if_no_path 0 1 1 round-robin 0 2 1 8:0 100 8:16 100
# dmsetup ls --target multipath 350002ac0004b0079 (253, 7)
# dmsetup info 350002ac0004b0079
Name: 350002ac0004b0079
State: ACTIVE
Read Ahead: 256 Tables present: LIVE Open count: 1 Event number: 0 Major, minor: 253, 7 Number of targets: 1
UUID: mpath-350002ac0004b0079
# dmsetup table --target multipath
350002ac0004b0079: 0 10485760 multipath 1 queue_if_no_path 0 1 1 round-robin 0 2 1 8:32 100 8:48 100
デバイスマッパーノードのパーティション分割
次の項では、デバイスマッパーノードのパーティション分割のためのガイドラインについて説 明します。
デバイスマッパーノードをパーティション分割するとき、/dev/mapper/XXXノード上で
fdisk を使用すると、次のエラーメッセージが表示されることがあります。
領域テーブルの再読込みエラー 22 で失敗しました: 無効な引数です。 カーネルはまだ古 いテーブルを使っています。 新しいテーブルは次回の再起動時に使用されます。 ディスクを 同期させます。
注記: fdiskコマンドは、/dev/mapper/XXXデバイスでパーティションを作成するために 使用しないでください。
104 ホスト上の HP 3PAR デバイスの使用
fdisk を下位のディスク /dev/sdXX に対して使用し、デバイスマッパーマルチパスがデバイ スをマップして /dev/mapper/<device node> パーティションを作成するときに、次のコ マンドを実行してください。
# multipath -l 50002ac001b40031
[size=5 GB][features="1 queue_if_no_path"][hwhandler="0"]
\_ round-robin 0 [active]
\_ 0:0:0:0 sda 8:0 [active]
\_ 1:0:0:0 sdb 8:16 [active]
デバイスマッパーノード 350002ac001b40031 は、同じストレージボリュームからの 2 つの パスを表す下位のデバイスsdaとsdbから形成されます。
# fdisk /dev/sda
fdiskコマンドが完了した後、kpartxコマンドを使用して、デバイス上のパーティションの 一覧を表示し DM デバイスを作成します。
# kpartx -a -p p /dev/mapper/350002ac001b40031
350002ac001b40031p1 : 0 10477194 /dev/mapper/350002ac001b40031 62
# kpartx -a -p p /dev/mapper/350002ac001b40031 -- will add a partition mapping
# ls /dev/mapper
350002ac001b40031 350002ac001b40031p1
ここで、350002ac001b40031p1 は、ディスク全体 350002ac001b40031 のパーティショ ンデバイスです。
ディスク割り付けのための RHEL 7 または RHEL 6 での fdisk または parted の使用方法
HP 3PAR StoreServ Storage のキャッシュページは 16 KB (16384 バイト) であり、読み書き操
作は 16 k のキャッシュページ単位で実行されます。 JEDEC メモリ標準に従って、HP 3PAR
OS 3.1.1 以降ではブロックイメージページ (bl) がサポートされています。これは、ホストに
対し、サポートされる最適な転送ブロックを知らせます。また、OS はこれを使用して、パ フォーマンス向上のためにキャッシュページに合わせてパーティションを作成することができ ます。
RHEL 7 または RHEL 6 の場合 :
HP 3PAR OS 3.1.1 以降を使用した RHEL 7 または RHEL 6 は、特定のfdiskおよびparted オプションとともにこれらのビットを使用します。
次の例を参照してください。sg3_utilsをインストールした場合、次のコマンドはブロック
制限 VPD ページ (SBC) を表示します。最適な転送長の細かさは 32 ブロック (16 k) です。
# sg_vpd -p bl /dev/sdh Block limits VPD page (SBC):
Optimal transfer length granularity: 32 blocks Maximum transfer length: 32768 blocks
Optimal transfer length: 32768 blocks
Maximum prefetch, xdread, xdwrite transfer length: 0 blocks Maximum unmap LBA count: 65536
Maximum unmap block descriptor count: 10 Optimal unmap granularity: 32
Unmap granularity alignment valid: 0 Unmap granularity alignment: 0
デバイスマッパーノードのパーティション分割 105
RHEL 7.x または RHEL 6.x を HP 3PAR OS 3.1.1 以降で実行している場合、fdisk コマンドの SBC ビットを利用して、パーティションの開始セクターをキャッシュページアラインメント (16 k) に適切に合わせることができます。そのためには、fdisk コマンドに、-c フラグ (DOS 互換モードをオフ) を、出力をセクター単位で表示する-u オプションとともに渡します。
次に、5GB ディスクの例を示します。
# fdisk -c -u /dev/sdh Command (m for help): p Partition number (1-4): 1
First sector (32768-10485759, default 32768):
Using default value 32768
以下の例では、パーティション開始セクターがセクター 32768 で始まっており (適切な 16 k のオフセットで)、適切に配置されていることを示しています。
# fdisk -l -u /dev/sdh
Disk /dev/sdh: 5368 MB, 5368709120 bytes
52 heads, 10 sectors/track, 20164 cylinders, total 10485760 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 16384 bytes / 16777216 bytes Disk identifier: 0x0004b8d4
Device Boot Start End Blocks Id System
/dev/sdh1 32768 10485759 5226496 83 Linux
-cまたは-uフラグをパーティションの作成時に使用しない場合、開始セクターは 30876 と なり、パーティションが作成された後で警告「Partition 1 does not start on physical sector
boundary (パーティション 1 は物理セクター境界で始まっていません)」が表示されます。
-cフラグまたは-uフラグを使用しない例
# fdisk /dev/sdh
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
Command (m for help): n Command action
e extended
p primary partition (1-4) p
Partition number (1-4): 1
First cylinder (1-1018, default 4):
Using default value 4
Last cylinder, +cylinders or +size{K,M,G} (4-1018, default 1018):
Using default value 1018
# fdisk -l -u /dev/sdh
Disk /dev/sdh: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders, total 10485760 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 16384 bytes / 16777216 bytes Disk identifier: 0x2d8b4dbe
Device Boot Start End Blocks Id System
/dev/sdh1 30876 10477255 5223190 83 Linux Partition 1 does not start on physical sector boundary.
106 ホスト上の HP 3PAR デバイスの使用
また、割り付け境界が適切でない場合、ext ファイルシステムの作成時にパフォーマンス低下 に関する次の警告が表示されます。
# mkfs.ext4 /dev/mapper/350002ac000020121p1 mke2fs 1.41.12 (17-May-2010)
/dev/mapper/350002ac000020121p1 alignment is offset by 2048 bytes.
This may result in very poor performance, (re)-partitioning suggested.
HP 3PAR OS 3.1.1 以降では、parted コマンドを使用し、適切なアラインメントとなるよう
GB 単位を使用して同じ結果が得られます。以下の例では、アラインメントが 32768 セクター から始まることを示します。
# parted /dev/sdh GNU Parted 2.1 Using /dev/sdh
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? msdos (parted) unit gb
(parted) mkpart primary
File system type? [ext2]? ext4 Start? 0
End? -0 (parted) p
Model: 3PARdata VV (scsi) Disk /dev/sdh: 5.37GB
Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 0.02GB 5.37GB 5.35GB primary ext4
(parted) unit s (parted) p
Model: 3PARdata VV (scsi) Disk /dev/sdh: 10485760s
Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 32768s 10485759s 10452992s primary ext4
(parted) unit mb (parted) print
Model: 3PARdata VV (scsi) Disk /dev/sdh: 5369MB
Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 16.8MB 5369MB 5352MB primary ext4
デバイスマッパーノードのパーティション分割 107
RHEL 7 および RHEL 6 では、割り付け境界を適切にするために開始セクターとしてセクター 32768 を fdisk -c -u オプションに渡すか、parted コマンドで適切な開始単位 (たとえば 16.8MB) を使用します。
注意:
• fdisk を使用する際は、正しい基本デバイスを使用していることを確認してください。
基本デバイスを特定するには、multipathコマンドを使用します。
• ファイルシステムとマウントポイントを作成するすべての I/O は、デバイスマッパー用デ バイスノード/dev/mapper/XXX を使用して実行する必要があります。
/dev/sdXデバイスノードに対して I/O を実行しようとすると、データ破壊が発生しま す。
• multipath -Fコマンドを実行すると、すべてのデバイスマッパーマッピングがフラッ シュアウトされ、既存のいずれかのデバイスに対して I/O が処理される場合に、非常に破 壊的になる可能性があります。-Fオプションの使用は避けてください。
kpartxを使用してデバイスマッパーインスタンスを削除し、fdiskを使用してパーティショ ンを削除します。
デバイスマッパーノード名は、ストレージボリューム ID (最初の数字 3 を除く) を表します。
HP 3PAR CLI のshowvv またはshowvlunコマンドを使用して、それが表すボリューム名を
取得します。
次の例を参照してください。
1. FC 接続されたホストで、ls /dev/mapper を実行します。
# ls /dev/mapper 350002ac001b40031
2. HP 3PAR StoreServ Storage で、上記の出力 (から最初の数字を除いたもの) を使用し、
showvlunコマンドを実行します。
cli % showvlun -lvw -a | grep -i 50002ac001b40031
0 testvlun 50002AC001B40031 redhathost 2100001B321A0C63 0:4:1 host 0 testvlun 50002AC001B40031 redhathost 2101001B323A0C63 1:5:1 host
3. iSCSI ホストでls /dev/mapperを実行します。
# ls /dev/mapper 350002AC0004B0079
4. HP 3PAR StoreServ Storage でshowvlun -lvw -a | grep -i <LUN>を実行します。
cli % showvlun -lvw -a | grep -i 50002ac0004b0079
0 testvlun 50002AC0004B0079 redhathost iqn.1994-05.com.redhat:a3df53b0a32d 1:3:1 host 0 testvlun 50002AC0004B0079 redhathost iqn.1994-05.com.redhat:a3df53b0a32d 0:3:1 host
108 ホスト上の HP 3PAR デバイスの使用
Veritas Volume Manager デバイスの作成
Veritas Volume Manager を使用してマルチパスを実現し、新しい VLUN がストレージサーバー からエクスポートされる場合は、以下の手順を実行して、既存の VLUN に対する I/O を停止 することなく新しい VLUN を追加します。
1. 任意の検出方法を使用して、新たにエクスポートされた VLUN を追加します。
2. 新しい VLUN が削除されデバイスインスタンスが作成されたことを確認した後、Veritas
レイヤーに新しいデバイスのスキャンを実行するよう指示します。デバイスの初期化後、
ステータスがエラー状態からオンラインに変わります。
# vxdctl enable
3. 新しいデバイスが Veritas Volume Manager で認識されていることを確認します。
# vxdisk list
DEVICE TYPE DISK GROUP STATUS
3PARDATA1_0 auto:cdsdisk testdg testdg online
3PARDATA1_1 auto - - error
Linux ホストで検出された VLUN は、Veritas Volume Manager で使用する前に、Linux の fdisk コマンドを使用してラベル付けする必要があります。
ディスクが Volume Manager によって認識された場合は、raw ディスクパス/dev/sdX を使用して I/O を実行せず、代わりに Veritas ボリュームデバイスパス /dev/vx/を使用 してください。
ホストからのストレージボリュームの削除
デバイスマッパーの使用時には、以下の方法のうちの 1 つを使用して、ホストからストレージ ボリュームを削除します。
方法 1
以下のコマンドを実行します。
# kpartx -d /dev/mapper/<device node>
# dmsetup remove <device node>
# echo "1" > /sys/class/scsi_device/<device instance>device/delete
たとえば、ターゲット 0、LUN 2 を削除するには、以下のように入力します。
# kpartx -d /dev/mapper/350002ac001b40031
# dmsetup remove 350002ac001b40031
# echo "1" > /sys/class/scsi_device/0:0:0:2/device/delete
注記: echoコマンドを使用する際は、ホストの HBA インスタンスのそれぞれからデバイス が削除されたことを確認してください。
方法 2
以下のコマンドを実行します。
# kpartx -d /dev/mapper/<device node>
# dmsetup remove <device node>
# echo "scsi remove-single-device <h> <c> <t> <l>" > /proc/scsi/scsi
Veritas Volume Manager デバイスの作成 109