(2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報はIBM Cloud アップデート情報 や 柔らか層本をご参照ください。)
概要
共有型ストレージは、一本のディスク・ドライブで利用するよりも、はるかに高いパフォーマンスを得ることができます。 しかし同じストレージ・プールを共有する他のユーザーが激しくアクセスを行うと、影響を受け遅くなってしまいます。この共存ユーザーの影響の課題を解決するのがパフォーマンス・ストレージ(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コアの条件では逆に遅くなる要素もあるので、パフォーマンスを優先する場合は、シングル接続が良いこともあります。