1.6.2 ポータブル・ストレージを接続するには？

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

概要
仮想サーバー用のSANディスクの利用形態の一つであるポータブル・ディスクの利用方法についてご紹介します。物理サーバーにポータブル・ストレージを接続することはできないので、ご注意お願いします。
 

ポータブル・ストレージのオーダー
ポータブル・ストレージをオーダーするには、カスタマーポータルの「Storage」->「Block Storage」->「Order Block Storage」でオーダーのウィンドを開きます。 そして、「Select Storage Type:」で Portable Storage を選択します。

次の画面のように、「Storage Description」、「Select Storage Size」、「Location」を設定して、「Payment」を選択して、「Continue」をクリックします。

オーダー確認画面で、MSAに同意するチェックを入れ「Place Order」をクリックして注文を確定します。

ポータブル・ストレージのデプロイが完了すると、以下の「Portable Strage」のリストに表示されるようになります。

上記の状態では、仮想サーバーにも繫がっていないので、「Device Name」が「Unattached」になっています。

 

仮想サーバーへのアタッチ
「Portable Strage」のリストの右側の「Actions」->「Attach」を選択します。

「Portable Name」の選択リストで接続したいサーバーを選択するなどして、「Search」をクリックして、ポータブル・ディスクのリストを取得します。

次に「Attach」をクリックして選択を確定します。

ポータブル・ディスクを接続するに際して再起動することの確認があります。

ディスクの接続処理の結果が通知されます。

ポータブル・ディスクに接続されている仮想サーバーが表示されるようになります。


ファイルシステムの作成とマウント
ディスクが繫がったことを確認するために、lsblkコマンドを実行します。
 
```
# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    25G  0 disk
├─xvda1 202:1    0   243M  0 part /boot
└─xvda2 202:2    0  24.8G  0 part /
xvdc    202:32   0    10G  0 disk
xvdb    202:16   0     2G  0 disk
└─xvdb1 202:17   0     2G  0 part [SWAP]
```

xvdcが追加されたディスクです。 mkfs.ext4コマンドでファイル・システムを作成します。データ・ディスクとして専用に使うので、パーティションを作成しないで、全体を一つのファイル・システムしてしまいます。
 
```
# mkfs.ext4 /dev/xvdc
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                           
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
```

次のmountコマンドを実行して、/mntにディスクをマウントします。 dfコマンドで、以下のように見えていれば成功です。
 
```
root@tkr01:~# mount -t ext4 /dev/xvdc /mnt
root@tkr01:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda2      25555836 7524348  16733312  32% /
udev              499456       4    499452   1% /dev
tmpfs             101536     184    101352   1% /run
none                5120       0      5120   0% /run/lock
none              507676       0    507676   0% /run/shm
/dev/xvda1        240972   19674    208857   9% /boot
/dev/xvdc       10321208  154100   9642820   2% /mnt
 ```

ポータブル・ストレージの取り外し
ポータブル・ディスクのデタッチの際に、再起動が入るのですが、一応アンマウントします。
 
```
# umount /mnt
```

ポータブル・ストレージのリスト画面の右側で 「Detach」をクリックします。

取外し実行中は、停止することが警告されます「Yes」をクリックして続行します。この後、仮想サーバーのシャットダウンが実行され、ポータブル・ディスク取外し成功のダイアログ・ウィンドが表示されます。

lsblkコマンドで確認してみます。ポータブル・ディスクの取外し後は、次のように認識されていないことが分ります。
 
```
# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    25G  0 disk
├─xvda1 202:1    0   243M  0 part /boot
└─xvda2 202:2    0  24.8G  0 part /
xvdb    202:16   0     2G  0 disk
└─xvdb1 202:17   0     2G  0 part [SWAP]
 ```

パフォーマンス測定
最新鋭の東京データセンターのSANディスクの性能は、どの程度か興味深いですよね。そこで、fioコマンドを利用して、簡単にテストしました。結果は、ランダム書込みの場合 3.6K IOPS, ランダム読取りの場合 84.8K IOPS というたいへん良いパフォーマンスが出ていることが分りました。 ご参考までに、コマンドの実行結果を以下に添付します。

ランダムライト
 
```
# fio --filename=/mnt/testfile --direct=1 --rw=randwrite --bs=4k --size=5G --numjobs=32 --runtime=10 --group_reporting --name=file
file: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
...
file: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 1.59
Starting 32 processes
Jobs: 32 (f=32): [wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww] [100.0% done] [0K/15749K /s] [0 /3845  iops] [eta 00m:00s]
file: (groupid=0, jobs=32): err= 0: pid=5112
  write: io=143476KB, bw=14316KB/s, iops=3579 , runt= 10022msec
    clat (usec): min=138 , max=659793 , avg=8928.75, stdev=51868.78
     lat (usec): min=140 , max=659796 , avg=8931.09, stdev=51868.78
    bw (KB/s) : min=    6, max=  598, per=3.11%, avg=444.60, stdev=81.52
  cpu          : usr=0.22%, sys=0.15%, ctx=72752, majf=0, minf=918
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=0/35869/0, short=0/0/0
     lat (usec): 250=65.30%, 500=30.52%, 750=0.18%, 1000=0.04%
     lat (msec): 2=0.89%, 4=0.11%, 10=0.13%, 20=0.01%, 50=0.02%
     lat (msec): 100=0.03%, 250=0.06%, 500=2.64%, 750=0.07%

Run status group 0 (all jobs):
  WRITE: io=143476KB, aggrb=14316KB/s, minb=14659KB/s, maxb=14659KB/s, mint=10022msec, maxt=10022msec

Disk stats (read/write):
  xvdc: ios=0/35348, merge=0/30, ticks=0/9632, in_queue=9632, util=96.36%
```

ランダムリード
 
```
# fio --filename=/mnt/testfile --direct=1 --rw=randread --bs=4k --size=5G --numjobs=32 --runtime=10 --group_reporting --name=file
file: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
...
file: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 1.59
Starting 32 processes
Jobs: 32 (f=32): [rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr] [100.0% done] [417.7M/0K /s] [104K/0  iops] [eta 00m:00s]
file: (groupid=0, jobs=32): err= 0: pid=5350
  read : io=3312.5MB, bw=339025KB/s, iops=84756 , runt= 10005msec
    clat (usec): min=3 , max=35535 , avg=364.44, stdev=1208.29
     lat (usec): min=4 , max=35536 , avg=367.36, stdev=1212.40
    bw (KB/s) : min= 2504, max=13824, per=3.09%, avg=10473.63, stdev=4228.70
  cpu          : usr=0.61%, sys=2.23%, ctx=142977, majf=0, minf=982
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=847987/0/0, short=0/0/0
     lat (usec): 4=0.06%, 10=79.25%, 20=4.19%, 50=0.01%, 100=0.01%
     lat (usec): 250=0.01%, 500=0.75%, 750=2.47%, 1000=1.80%
     lat (msec): 2=6.65%, 4=2.53%, 10=2.02%, 20=0.24%, 50=0.01%

Run status group 0 (all jobs):
   READ: io=3312.5MB, aggrb=339025KB/s, minb=347161KB/s, maxb=347161KB/s, mint=10005msec, maxt=10005msec

Disk stats (read/write):
  xvdc: ios=135256/2, merge=0/1, ticks=108472/0, in_queue=108472, util=97.32%
```

その他の注意点
仮想サーバーに、ポータブル・ストレージを接続した状態で、仮想サーバーをキャンセルすると、ポータブル・ストレージも一緒にキャンセルされてしまいます。 もしもデータ用のストレージとしている場合、取り返せない結果になりますので注意が必要です。

SLコマンドで、ポータブル・ストレージを操作できません。 ポータブル・ストレージを操作するサブコマンドがないので、シェルからポータブル・ディスクの付け替えといったことができません。

ポータブル・ディスク、SANディスクは、名前からして物理サーバーに、ファイバー・チャネルのアダプタを付ければアクセスできそうですが、残念ながら仮想サーバー専用のストレージです。物理サーバーに接続できないので名前に騙されないように注意が必要です。

ポータブル・ディスクは、データセンターを超えて接続することができません。例えば、北米サンノゼのポータブル・ディスクを東京データセンターの仮想サーバーに接続するといった使い方はできません。