iSCSIストレージシステムの構築

(1).DAS、SAN、NASの3種類のストレージ方式

参考:https://blog.csdn.net/qq_23348071/article/details/73963407

DASはDirect-Attached Storageの略称で、直結ストレージと呼ばれます。これはコンピュータストレージの一種で、特定のコンピュータに直接接続され、他のコンピュータからアクセスできないものです。個人ユーザーにとっては、ハードディスクドライブが直結ストレージの一般的な形式です。企業では、サーバー内の個々のディスクが直結ストレージと見なされ、サーバー外部(しかしSCSI、SATA、SASインターフェースを介して直接接続可能)のドライブグループとして機能します。サーバーがネットワーク経由でデータを読み書きする必要がないため、DASはネットワークストレージよりも高いパフォーマンスを提供できます。これが、高性能を必要とする特定のタイプのアプリケーションにDASを採用する企業が多い理由です。直結ストレージの主な代替手段は、ネットワーク接続ストレージ(NAS)およびストレージエリアネットワーク(SAN)です。

DASの利点:使用が簡単で、ブロックデバイスとして直接認識されます。

DASの欠点:I/OとCPUを消費します。

NASはNetwork Attached Storageの略称です。NASサーバーはネットワークに接続され、データストレージ機能を持つサーバーであり、専用のデータストレージサーバーです。ネットワーク接続ストレージは標準ネットワークプロトコル(TCP/IP)を使用してデータ転送を実現し、ネットワーク内のWindows/Linux/Mac OSなどの異なるオペレーティングシステムのコンピュータにファイル共有とデータバックアップを提供します。一部のNASシステムはFTP、HTTP、SQL、SQLSERVERなどの機能もサポートできます。NASはNFS技術を使用してUnix系システム間のストレージ共有を実現し、CIFS技術を使用してWindowsとUnix系システム間のデータ共有を実現します。SambaソフトウェアはCIFS技術を使用しています。

国内のNASメーカー:シンナス、シーゲイト、西部デジタル、クアルコム。国際的なNASメーカー:Netapp、OUO、Dell、EMC。専門のオープンソースNASシステム:freeNAS、nas4free、OpenMediaValut、シンナス。

NASの利点:I/O消費がフロントエンドサーバーからバックエンドストレージデバイスに転移され、拡張が容易です。

NASの欠点:以前はネットワークがボトルネックとなっていましたが、現在は10G光ファイバーカードを使用することでこの問題を解決できます。

SANはStorage Area Networkの略称です。SANは高速ネットワークであり、コンピュータとストレージシステム間のデータ転送を提供します。ストレージデバイスとは、コンピュータデータを保存するための1台または複数台のディスクデバイスを指し、通常はディスクアレイを指します。ファイバーチャネル(Fibre Channel、略称FC)技術を使用し、FCスイッチを介してストレージアレイとサーバーホストを接続し、データストレージ専用のエリアネットワークを構築します。SANストレージは専用ネットワークを基盤としているため、拡張性が非常に強く、SANシステム内にストレージスペースを追加する場合でも、ストレージスペースを使用するサーバーを数台追加する場合でも簡単です。

現在一般的なSANにはFC-SANとIP-SAN(iSCSIと呼ばれる)があり、その中でFC-SANはファイバーチャネルプロトコルを介してSCSIプロトコルを転送し、IP-SANはTCPプロトコルを介してSCSIプロトコルを転送します。

NASとSANの違い:第一に、ネットワークアーキテクチャ。NASはTCP/IPを直接使用してデータを転送し、SANはSCSIまたはiSCSIプロトコルを使用してデータを転送します。第二に、ファイル読み書きの実現方法。NASはNFSとCIFS技術を使用してファイル共有を実現し、NASはオペレーティングシステムベースの「ファイルレベル」の読み書き操作であることを示しています。一方、SANではコンピュータとストレージ間のインターフェースは下位レベルのブロックプロトコルであり、プロトコルヘッダーの「ブロックアドレス+オフセットアドレス」に従って位置を特定します。共有ストレージとフロントエンドのオペレーティングシステムの種類は関係なく、どのオペレーティングシステムでも正常に認識できます。

(2).IP-SANサーバーの設定

1)実験環境

storage1 192.168.10.11 サーバー側、共有ディスクとしてsdbを追加

client1 192.168.10.12 クライアント

client2 192.168.10.13 クライアント

IP-SANはC/Sモードで実行され、デフォルトポートは3260です。

2)storage1をIP-SANストレージサーバーとして設定

[root@storage1 ~]# yum -y install targetcli  //targetのインストール
[root@storage1 ~]# targetcli  //設定のための対話インターフェースに入る
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.  //helpコマンドでヘルプドキュメントを確認できます

/> /backstores/block create disk1 /dev/sdb  ///dev/sdbを使用してブロックストレージオブジェクトdisk1を作成し、disk1はカスタム名です
Created block storage object disk1 using /dev/sdb.
/> /iscsi create iqn.2023-11.storage1:storage  //iSCSI targetを作成し、target名は同一サブネット内で一意であることを確認してください。
WWN not valid as: iqn, naa, eui  //エラーが発生しました
/> /iscsi create iqn.2023-11.com.storage1:storage  //命名形式:iqn.yyyy.mm.<ホスト名(ドメイン名)を逆順にする>:カスタム名。カスタム名にアンダースコアを含めることはできません
Created target iqn.2023-11.com.storage1:storage.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.  //監視しているIPアドレスとポート番号を確認できます
/> /iscsi/iqn.2023-11.com.storage1:storage/tpg1/acls create iqn.2023-11.com.storage1:user1
Created Node ACL for iqn.2023-11.com.storage1:user1  //ACLルールリストを作成し、クライアントはルールリスト内のユーザーのみがtargetストレージに接続できます
/> /iscsi/iqn.2023-11.com.storage1:storage/tpg1/luns create /backstores/block/disk1  //ブロックストレージオブジェクトdisk1をtargetの論理ユニットとして指定し、論理ユニット番号LUN0
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2023-11.com.storage1:user1
/> /iscsi/iqn.2023-11.com.storage1:storage/tpg1/portals/ delete 0.0.0.0 3260  //元々監視していたIPアドレスとポート番号を削除
Deleted network portal 0.0.0.0:3260
/> /iscsi/iqn.2023-11.com.storage1:storage/tpg1/portals create 192.168.10.11 3260  //新しい監視IPアドレスとポート番号を追加
Using default IP port 3260
Created network portal 192.168.10.11:3260.  //注意:サーバー側のローカルIPアドレスとポート番号

LUNはLogical Unit Numberの略称で、論理ユニット番号と呼ばれます。SCSIの概念です。ブロックストレージオブジェクトがtargetストレージシステムに追加されると、コードが割り当てられます。後でブロックデバイスを区別する際には、target内のLUN番号を指定するだけで済みます。ブロックストレージオブジェクトがLUNを指定されると、「論理」ディスクとなり、ストレージクライアントで使用されます。

3)ACLルールリストのユーザー名とパスワードの設定

/> cd /iscsi/iqn.2023-11.com.storage1:storage/tpg1/acls/iqn.2023-11.com.storage1:user1/
/iscsi/iqn.20...storage1:user1> set auth userid=admin  //ユーザーを作成
Parameter userid is now 'admin'.
/iscsi/iqn.20...storage1:user1> set auth password=secret123  //パスワードを設定
Parameter password is now 'secret123'.
/iscsi/iqn.20...storage1:user1> saveconfig  //保存はルートディレクトリで実行する必要があり、さもないとエラーが発生します
Command not found saveconfig
/iscsi/iqn.20...storage1:user1> cd /  //ルートディレクトリに戻る
/> saveconfig  //保存
Configuration saved to /etc/target/saveconfig.json
/> exit  //終了
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

4)targetサービスの起動

[root@storage1 ~]# systemctl start target && systemctl enable target  //起動し、起動時に自動起動を設定
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
[root@storage1 ~]# firewall-cmd --permanent --zone=public --add-port=3260/tcp  //ポート番号を追加
success
[root@storage1 ~]# firewall-cmd --reload
success

(3).クライアントの設定

1)クライアントclient1の設定

クライアントのインストールと設定

[root@client1 ~]# yum -y install iscsi-initiator-utils
[root@client1 ~]# vim /etc/iscsi/initiatorname.iscsi  //発信者設定を変更し、サーバーのACLルール名にします
InitiatorName=iqn.2023-11.com.storage1:user1  //サーバーのACLルールリスト名に変更
[root@client1 ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP  //57行目、コメントを解除
node.session.auth.username = admin  //61行目、コメントを解除し、ACLルールリスト内のユーザー名に変更
node.session.auth.password = secret123  //62行目、コメントを解除し、対応するユーザー名のパスワードに変更
[root@client1 ~]# systemctl start iscsid

iSCSIデバイスの検出とログイン

[root@client1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.10.11  //デバイスを検索
192.168.10.11:3260,1 iqn.2023-11.com.storage1:storage
//ログイン方法1
[root@client1 ~]# iscsiadm -m node -l  //デバイスにログイン
Logging in to [iface: default, target: iqn.2023-11.com.storage1:storage, portal: 192.168.10.11,3260] (multiple)
Login to [iface: default, target: iqn.2023-11.com.storage1:storage, portal: 192.168.10.11,3260] successful.
[root@client1 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

//ログイン方法2
[root@client1 ~]# systemctl restart iscsid  //デバイスを検出した後、直接再起動することもできます
[root@client1 ~]# ls /dev/sd*             
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

クライアント上のtargetストレージサーバー情報の保存場所の確認

[root@client1 ~]# yum -y install tree
[root@client1 ~]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2023-11.com.storage1:storage
│       └── 192.168.10.11,3260,1
│           └── default
├── send_targets
│   └── 192.168.10.11,3260
│       ├── iqn.2023-11.com.storage1:storage,192.168.10.11,3260,1,default -> /var/lib/iscsi/nodes/iqn.2023-11.com.storage1:storage/192.168.10.11,3260,1
│       └── st_config
├── slp
└── static

10 directories, 2 file

ハードディスクのフォーマット(最初の1台のみフォーマットが必要)、マウントして使用

[root@client1 ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=4, agsize=1310720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none
[root@client1 ~]# mkdir /shared
[root@client1 ~]# mount /dev/sdb /shared
[root@client1 ~]# echo client1 > /shared/test.txt

2)クライアントclient2の設定

[root@client2 ~]# yum -y install iscsi-initiator-utils
[root@client2 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2023-11.com.storage1:user1
[root@client2 ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP  //57行目、コメントを解除
node.session.auth.username = admin  //61行目、コメントを解除し、ACLルールリスト内のユーザー名に変更
node.session.auth.password = secret123  //62行目、コメントを解除し、対応するユーザー名のパスワードに変更
[root@client2 ~]# systemctl restart iscsid
[root@client2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.10.11  //デバイスを検索
192.168.10.11:3260,1 iqn.2023-11.com.storage1:storage
[root@client2 ~]# iscsiadm -m node -l  //デバイスにログイン
Logging in to [iface: default, target: iqn.2023-11.com.storage1:storage, portal: 192.168.10.11,3260] (multiple)
Login to [iface: default, target: iqn.2023-11.com.storage1:storage, portal: 192.168.10.11,3260] successful.
[root@client2 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb
[root@client2 ~]# mkdir /shared
[root@client2 ~]# mount /dev/sdb /shared/  //マウント
[root@client2 ~]# ls /shared/
test.txt

注意:この時点では同期されません。XFSファイルシステムを使用しているため、XFSファイルシステムは複数のクライアントが同時に使用することをサポートしていないからです。今後の使用時には、sdbをclient1で認識させた後、/sharedディレクトリにマウントし、client1でnfsサーバーをインストールして/shareディレクトリをclient2に共有することで、データ同期を確保できます。

タグ: iSCSI ストレージ linux SAN targetcli

6月9日 21:09 投稿