1.6.6 パフォーマンス・ストレージを利用するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
共有型ストレージは、一本のディスク・ドライブで利用するよりも、はるかに高いパフォーマンスを得ることができます。 しかし同じストレージ・プールを共有する他のユーザーが激しくアクセスを行うと、影響を受け遅くなってしまいます。この共存ユーザーの影響の課題を解決するのがパフォーマンス・ストレージ(Performance Storage)です。
 

パフォーマンス・ストレージの概要
このストレージの特徴は、容量(GB)と性能(IOPS)の値で月額料金が決まることです。 容量は20 GB〜12000 GB まで範囲、性能は 100 IOPS 〜 6000 IOPS で選択できます。 このストレージへの接続はiSCSIで行います。そしてマルチパスI/Oが提供されています。

次の図のように、このiSCSIストレージは、SoftLayerのプライベート・ネットワーク上で提供され、仮想サーバーや物理サーバーからアクセスできます。このためリンク速度は1ギガbps以上を選択することがおすすめです。 また物理サーバーでは、MTUサイズを9Kに変更すると性能向上に寄与するかもしれません。


オーダー方法
カスタマーポータルから「Storage」->「Block Storage」->「Order Block Storage」を選択すると次の画面が表示されます。「Select Storage Type」に「Performance」を選択し、必要項目をセットして「Continue」をクリックして進みます。

各項目の解説は、http://knowledgelayer.softlayer.com/topic/performance-storage にありますので、合わせて参照すると理解が深まります。

しばらくすると、次の画面のようにパフォーマンス・ストレージが利用可能になります。「Notes (Clieck cell to edit)」にコメントを記入できますから、システム名や用途などを入力して、管理に役立てることができます。


サーバーへアクセス権限付与
これでiSCSIのブロックデバイスとして利用できるようになったので、LinuxとしてCentOS6から認識させ、ファイルシステムを作成して、マウントする作業をみていきます。 同じ東京データセンターにCentOS6のサーバーと今回注文したストレージを利用可能な状態にしていきます。

このストレージにアクセスする許可をサーバーへ与えるために、この画面の下の方の「Authorize Host」をクリックします。

次にストレージに接続可能なサーバーのリストが表示されますから選択して「Submit」をクリックして先へ進めます。

サーバーにアクセス権限が付与されると、ユーザーID、パスワード、IQN (iSCSI Qualified Name) が表示されるようになります。これらの値をiSCSIの設定ファイルにセットします。


LinuxのiSCSIシングルパス設定
当たり前の話ですが、OSを最新状態に更新してから、iscsi関連のパッケージのインストールを開始します。
 
```
# yum update -y 
```

iSCSIとの接続方法は、このリンクに記載されているので、合わせて参照すると、より良い理解が得られると思います。http://knowledgelayer.softlayer.com/procedure/connect-iscsi-lun-linux-open-iscsi
 
```
# yum install iscsi-initiator-utils -y
```

/etc/iscsi/initiatorname.iscsi にIQNを設定します。
 
```
# pwd
/etc/iscsi
# vi initiatorname.iscsi
# cat initiatorname.iscsi
InitiatorName=iqn.2005-05.com.softlayer:SL01SU294470-7
```

/etc/iscsi/iscsid.conf に上記のユーザー名などを設定します。 以下のファイルの例は、最小限必要項目を抜き出したものですので、実際のファイルを編集する際は、項目名で探して編集をお願いします。 この例は認証に関わる最小限ですから、タイムアウト値などのチューニング項目は、前述のKnowledge Layerのリンクを参照願います。
 
```
# vi iscsid.conf
# cat iscsid.conf

node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = SL01SU294470-7
node.session.auth.password = A59rNqqBdG45HWM

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = SL01SU294470-7
discovery.sendtargets.auth.password = A59rNqqBdG45HWM
```

次のiscsiadmコマンドで割当られたiscsiターゲットを探します。この「-p」以降のIPアドレスは、「Block Storage Detail」の画面の「Target Address」のIPアドレスを利用します。 この画面にアクセスするには、「Storage」->「Block Storage」->「LUN Name」の順に進みます。
 
```
# iscsiadm -m discovery -t sendtargets -p 10.3.78.55
iscsid を起動中:                                           [  OK  ]
10.3.78.55:3260,1031 iqn.1992-08.com.netapp:tok0201
10.3.78.64:3260,1032 iqn.1992-08.com.netapp:tok0201
```

iscsiのサービスをリスタートすると、以下のように、ブロック・デバイスが認識できるようになります。
 
```
[root@tkr07 iscsi]# service iscsi restart
Stopping iscsi:                                            [  OK  ]
Starting iscsi:                                            [  OK  ]
[root@tkr07 iscsi]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvdb    202:16   0    2G  0 disk
└─xvdb1 202:17   0    2G  0 part [SWAP]
xvda    202:0    0   25G  0 disk
├─xvda1 202:1    0  256M  0 part /boot
└─xvda2 202:2    0 24.8G  0 part /
sda       8:0    0   20G  0 disk
sdb       8:16   0   20G  0 disk 
```

ファイルシステムを作成します。 一般的なSATAのストレージでは 500 〜 900 IOPS 程度の性能があります。 もし100 IOPS に指定した場合、性能が 1/5 〜1/9 制限されるため数倍の時間がかかります。
 
```
[root@tkr07 iscsi]# mkfs.ext3 /dev/sda
```

ファイルシステムの作成が完了したら、マウントして df コマンドで、確認します。
 
```
[root@tkr07 iscsi]# mount -t ext3 /dev/sda /mnt
[root@tkr07 iscsi]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda2      25544012 1267108  22979344   6% /
tmpfs             508116       0    508116   0% /dev/shm
/dev/xvda1        253871   84527    156237  36% /boot
/dev/sda        20642428  176196  19417656   1% /mnt
```

これでパフォーマンス・ストレージが利用できるようになりました。

マルチパスI/Oの設定
マルチパスI/O（MPIO）によって、iSCSIストレージのアクセス経路を複数にすることで、性能と可用性の改善が期待されます。パフォーマンス・ストレージはマルチパスI/Oの機能がサポートされていますので、設定方法について見ていきます。設定を行なう前に、/mntをアンマウントしておきます。 これを忘れると、マルチパスI/O化が途中で失敗するので、忘れないように最初で実施します。そして次に必要なモジュールをインストールします。
 
```
# yum install device-mapper-multipath -y
```

iSCSIターゲットのWWIDを調べます。このパフォーマンス・ストレージは、最初から二つのデバイスが提供されますが、取り違いがないようにデバイス名を指定してWWIDが同じであることを確認します。
 
```
[root@tkr07 iscsi]# /sbin/scsi_id -g /dev/sda
3600a098038303467663f466451573353
[root@tkr07 iscsi]# /sbin/scsi_id -g /dev/sdb
3600a098038303467663f466451573353
```

次の/etc/multipath.conf のテンプレートに、上記で得たWWIDをセットします。以下では、aliasのyellow が、デバイスマッパーのデバイス名になるので、適当な名前に変更します。この例では変更しません。
 
```
defaults {
    user_friendly_names yes
}
blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z]"
}
multipaths {
    multipath {
        wwid    3600a098038303467663f466451573353
        alias   yellow
        path_grouping_policy    multibus
        path_selector           "round-robin 0"
        failback                manual
        rr_weight               priorities
        no_path_retry           5
    }
}
```

マルチパスI/Oのサービスを開始します。
 
```
[root@tkr07 ~]# service multipathd start
Starting multipathd daemon:                                [  OK  ]
```

マルチパスI/Oのデバイスの動作を確認します。mulitpath -ll コマンドでパフォーマンス・ストレージのsda,sdbにyelloが紐づいていることが分かります。
 
```
[root@tkr07 iscsi]# multipath -ll
yellow (3600a098038303467663f466451573353) dm-0 NETAPP,LUN C-Mode
size=20G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
  |- 0:0:0:1 sda  8:0    active ready running
  `- 1:0:0:1 sdb  8:16   active ready running
```

マルチパスI/Oのデバイス /dev/mapper/yellow をマウントして、df コマンドで確認します。
 
```
[root@tkr07 ~]# mount -t ext3 /dev/mapper/yellow /mnt
[root@tkr07 ~]# df
Filesystem         1K-blocks    Used Available Use% Mounted on
/dev/xvda2          25544012 1270596  22975856   6% /
tmpfs                 508116       0    508116   0% /dev/shm
/dev/xvda1            253871   84527    156237  36% /boot
/dev/mapper/yellow  20642428  176196  19417656   1% /mnt
```

これでマルチパスI/Oの設定が完了しました。これで、マルチパスI/Oにしたら速くなるかと言えば、1コアの条件では逆に遅くなる要素もあるので、パフォーマンスを優先する場合は、シングル接続が良いこともあります。