iSCSI(SAN)への変更

iSCSI(SAN)への変更

変更前

変更前の特徴

  1. NASを構築し、データバックアップを行う

    • RYZEN 7 3700X & X570 & 332GB RAM & GeForce 1050TiのPCに、TrueNAS Communityを入れ、SMBサービスを使ってファイル共有を行い、SMB3のマルチチャネルで2Gbpsの通信速度を確保。
    • ROBOCOPYコマンドでオプションに/mirを指定しMainPCのデータを正として、TrueNASのバックアップを副として運用。
    • ROBOSOPYのオプションの/MT:4を使い2GBpsの帯域を使い切るように調整。
    • HDDによるRAID1構成のため、初期の書き込みではHDDの速度が上限となるが、2度目以降はNVMe SSDをストレージプールに追加しL2ARCによる高速化を図っている。

変更前のネットワーク構成図

graph TD
        
    subgraph "Switch"
        NIC_SW[1GbE]
    end

    subgraph "Main PC (Ryzen 9 9950X3D / Radeon RX9070XT)"
        OS_MainPC[Windows 11 Pro]
        NIC_MainPC_1[5GbE (SMB MulchiChannel)]
        NIC_MainPC_2[1GbE (SMB MulchiChannel)]
        OS_MainPC <--> NIC_MainPC_1
        OS_MainPC <--> NIC_MainPC_2
    end

    subgraph "TrueNAS Community (Ryzen 7 3700X)"
        OS_TrueNAS[TrueNAS Community / ZFS]
        Storage1[HDD 4TBx2 / NVMe / RAID1]
        Storage2[HDD 3TBx2 / NVMe / RAID1]
        DataSet1[DataSet]
        DataSet2[DataSet]
        NIC_TrueNAS_1[2.5GbE (SMB MulchiChannel)]
        NIC_TrueNAS_2[1bE (SMB MulchiChannel)]
        OS_TrueNAS <--> Storage1 <--> DataSet1
        OS_TrueNAS <--> Storage2 <--> DataSet2
        OS_TrueNAS <--> NIC_TrueNAS_1
        OS_TrueNAS <--> NIC_TrueNAS_2
    end

    NIC_SW <==> NIC_MainPC_2
    NIC_SW <==> NIC_TrueNAS_2
    NIC_SW <==> NIC_MainPC_1
    NIC_SW <==> NIC_TrueNAS_1

変更後

変更後の特徴

  1. SANを構築し、データバックアップを行う

    • MainPCのオンボードの5GbEのRJ45ポートとTrueNASの増設した5GbEのRJ45のNICの速度を活かすため、Cat.6ケーブルを直結し、iSCSIによるSANを構築。

    • Layer7のSMBプロトコルからLayer4のSCSI on TCP/IPへ移行し、オーバーヘッドを削減。

    • フレームバッファを9000 (9014)バイトに設定。

    • この図だとオーバーヘッドが増えているように見えるが、SMBは認証、ファイル使用状況の確認などを挟み、パケットにヘッダーを追加している。

      flowchart LR
          subgraph "App (Layer 7)"
              L72[App]
              L72 <--> I70[OS]
          end
      
          subgraph "SMB (Layer 7 <-> Layer4)"
              I70 <--> S73[SMB Header / Auth / Metadata]
          end
      
          subgraph "iSCSI (Layer 4 / Block)"
              I70 <--> I40[FS / Block]
              I40 <--> I41[iSCSI / SCSI Command]
          end
      
          subgraph "TCP/IP(Layer3)"
              S73 <--> S3[TCP]
              I41 <--> S3[TCP]
              S3 <--> S2[IP]
          end
          subgraph "Layer2"
              S2 <--> S1[Ethernet]
          end
    • TrueNAS側のメモリキャッシュがいっぱいになるまでは4.9Gbpsの速度を確認した。

    • 比較的大きなファイルの書き込みでは1.8Gbpsに貼り付くので、バイトに換算すると230MB/sはHDDの書き込み速度の上限だと思われる。

    • ファイルの更新チェックなどL2ARCが利くときは一瞬で終わる。

    • ROBOCOPYのMTオプションでのHDDへの書き込み速度は影響しないが、ネットワークの占有率と占有時間は変化する。

変更後のネットワーク構成図

graph TD
    subgraph "Switch"
        NIC_SW[1GbE]
    end

    subgraph "Main PC (Ryzen 9 9950X3D / Radeon RX9070XT)"
        OS_MainPC[Windows 11 Pro]
        NIC_MainPC_1[5GbE (iSCSI Link)]
        NIC_MainPC_2[1GbE]
        OS_MainPC <--> NIC_MainPC_1
        OS_MainPC <--> NIC_MainPC_2
    end

    subgraph "TrueNAS Community (Ryzen 7 3700X)"
        OS_TrueNAS[TrueNAS Community / ZFS]
        Storage1[HDD 4TBx2 / NVMe / RAID1]
        Storage2[HDD 3TBx2 / NVMe / RAID1]
        DataSet1[ZVol]
        DataSet2[ZVol]
        NIC_TrueNAS_1[5GbE (iSCSI Link)]
        NIC_TrueNAS_2[1bE]
        OS_TrueNAS <--> Storage1 <--> DataSet1
        OS_TrueNAS <--> Storage2 <--> DataSet2
        OS_TrueNAS <--> NIC_TrueNAS_1
        OS_TrueNAS <--> NIC_TrueNAS_2
    end

    NIC_SW <==> NIC_MainPC_2
    NIC_SW <==> NIC_TrueNAS_2
    NIC_MainPC_1 <==> NIC_TrueNAS_1

変更予定

SSDの価格が下落してきたあかつきには、TrueNASをヘッドレスサーバーにしてNVMe SSD 4枚挿しをし、SANの高速化を図りたい。またそのときにはMainPCとTrueNASの間をSPF+とトランシーバーと光ファイバーを導入して10Gbps以上の速度向上を図りたい。

graph LR
    subgraph "Main PC"
        NIC_M[SFP+ NIC]
    end

    subgraph "Storage Trench"
        Fiber((Optical Fiber))
        Trans_M[Transceiver SR]
        Trans_T[Transceiver SR]
    end

    subgraph "TrueNAS"
        NIC_T[SFP+ NIC]
    end

    NIC_M <--> Trans_M <--> Fiber <--> Trans_T <--> NIC_T