ストレージインターフェースを調べてみた

# はじめに
ストレージインターフェースについて調べてみました

# ストレージに求められもの
https://www.atmarkit.co.jp/ait/articles/0808/25/news120.html

# 参考
https://www.atmarkit.co.jp/ait/articles/0809/24/news139.html
https://active.nikkeibp.co.jp/atclact/active/14/100700086/103000001/

# インタフェースのまとめ
これみれば大丈夫
https://www.fujitsu.com/jp/products/computing/storage/lib-f/tech/interface/

**[一般向け低速]IDE(ATA) -> SATA -> SCSI -> SAS  [業務向け高速]**

# インターフェースとは(HW)
、コンピュータ本体とストレージを接続して通信する際の規約で、コネクターの形状や電気信号の形式などを定めているものです。


# 内臓/外付けインターフェース

**一般向け**

* IDE(ATA)
  - SATAよりも古い規格
  - 用途：パソコンが中心
* SATA
  - 用途：パソコンが中心
  - 100MB/s

**サーバー向け**

* SCSI
  - 用途：サーバが中心。**SASに移りつつある。**
  - 最大転送速度：320MB/s（Urtra320 SCSI）
  - 内蔵/外付けいずれにも対応
* SAS
  - SASはSCSI,SATAに比べ、高速、高信頼の設計で、主に企業の重要なシステムで使用されるHDDです
  - 150～250MB/s

**IDE(ATA) -> SATA -> SCSI -> SAS   [業務向け/高速]**

## 

## SCSIとSAS
https://www.fujitsu.com/jp/products/computing/storage/lib-f/tech/interface/sas/

**サーバー向け**
**SCSIからSASへ**

* SCSIの最大転送速度が320Mbit/s（Ultra320 SCSI）に対して、SASは最大3Gbit/sの転送が可能です
* SCSIが接続できるHDD台数が15台までに対し、SASは規格上1万6000台以上接続
* SASはSCSIの高速版


コスト優先であればSATA,1日8時間以上稼働させる業務システムであればSASが良いだろう。

# ネットワークに特化したインターフェース

## SANとは(Storage Area Network)
http://nw.seeeko.com/archives/50424396.html

NASとSANの違い
http://nw.seeeko.com/archives/50424393.html

FC-SANとIP-SAN
http://nw.seeeko.com/archives/50424388.html

* SANは、ストレージとサーバ間をFC（ファイバチャネル）で接続したストレージ専用のネットワークのこと。
* 光ファイバーを使用して、LANとは独立したストレージ専用のネットワーク
* 従来サーバとストレージは、銅線ケーブルを利用したSCSIという転送方式で接続されていましたが、Fibre Channelは、これよりも高速なデータ転送が可能です。ただし、Fibre Channelは専用の機器やケーブルが必要で、高価というデメリットもあります。

## ファイル単位とブロック単位の違い
NASはファイル単位・SANで接続されたストレージはブロック単位の読み書きというのを何かの本で読んだことがある人も多いでしょう。こう言われると何を言っているか分からないかもしれません。例を挙げて説明します。1Gのファイルの一部を変更した場合，NASでは1Gのファイルとして変更しますが，SANでは変更した部分のブロックのみの変更を実施します。
つまり，ブロック単位で処理するSANは高速です。
※そもそもSANからすると，ファイルという概念がないので，ファイル単位に扱えません。これは欠点でもあり，ファイル単位のアクセス制御ができません。

## iSCSI
* イーサネットを利用してSANを利用する
* FCケーブルとFCスイッチの代わりにIPネットワークを用いてSANを構築する
* NAS

https://islandcnt.exblog.jp/22394619/


# LinuxでのiSCSIの利用方法
## ファイルストレージとブロックストレージ違い
https://www.eizo.co.jp/it/solutions/it-infrastructure/storage_system/folder6818/
https://active.nikkeibp.co.jp/atclact/active/14/100700086/111700009/?ST=act-server&P=2


### ブロックストレージ
ブロックストレージは論理ボリュームをサーバーへ提供し、サーバーはSAS/iSCSI/FC/FCoEなどの専用プロトコルでストレージネットワーク（SAN）経由で論理ボリュームにアクセスします。論理ボリュームはファイルシステムにフォーマットして利用するのが一般的で？？？、フォーマットすることにより、ファイルシステムと論理ボリューム内のブロックが関連付けられます。

もちろん、ブロック・ストレージをOSがファイルシステムとしてフォーマットして使えば、そのOSを介してアクセスするユーザからはファイル・ストレージとしてアクセス可能になります。

https://japan.zdnet.com/article/20388598/


### ファイルストレージ
ファイルストレージは、ストレージ上に構成されたファイルシステムを、ネットワーク上のサーバーやクライアントに提供します。

NAS
ファイルを格納するファイルシステムはNASのハードウェア側で作成管理される。
。NFSもCIFSも仮想ファイルシステムのプロトコルなので、クライアントからのアクセスは全てファイル単位でのアクセスになるのが特徴です。


一方iSCSIは、IPネットワークを通じて、疑似的なSCSI接続を実現する技術です。SCSI接続は、物理的なディスク装置をサーバーに接続するものですので、LinuxサーバーにiSCSIで接続されたディスク領域は、内蔵ハードディスクやSAN接続のLUNと同じように、/dev/sdaなどのデバイスファイルからアクセスする物理ディスクとして認識されます。
**したがってLinuxサーバー側でファイルシステムを作成して利用する形**


## LinuxでのiSCSI
* iSCSIに対応したストレージ機器が必要
* LinuxではiSCSIに接続専用のアダプタカードを使う場合とNICを用いる場合がある
* アダプタカードを使用する場合はそれ自身のHW機能でiSCSIの処理を行うため、**HWイニシエータ**
* LinuxのNICを用いる場合はLinuxでiSCSIの処理を行うので**ソフトウェアイニシエータ**と呼ばれる
* RHEL7ではLinuxサーバーをiSCSIのストレージ装置として動作させる**ソフトウェアターゲット**と呼ばれる機能がある

Linuxサーバー(イニシエータ)  <-----> ストレージ(ターゲット)

実際には通常のNICとOS上のiSCSIドライバでも十分の速度と安定性を発揮
NFS、CIFS、ISCSI、SANが比較対象にあがるのかな？


## ちなみに
業務用サーバーでは、通常はストレージ装置専用のネットワークを用意します。これは、ストレージへのアクセスと通常のネットワーク通信がお互いのネットワーク帯域を圧迫することを回避する効果と、ネットワークに障害が発生した際の影響範囲を制限する効果があります。通常のネットワーク接続とストレージ接続の両方に、同時に障害が発生するという状況を避けることができます。





## Linuxでターゲットサーバー構築

```bash
yum install targetcli
systemctl enable target.service 
systemctl start target.service
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3260
firewall-cmd --add-service = iscsi-target # firewall-cmd --add-service = iscsi-target --permanent
```

論理ボリューム作成

targetcliでiSCSIストレージとして公開する設定を行う
接続可能なクライアントを指定するACLを定義します。

## Linuxでイニシエータサーバー構築
```
yum install iscsi-initiator-utils 
systemctl enable iscsid.service 
systemctl start iscsid.service
```