2026-04

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を構築し、データバックアップを行う

Rust勉強開始

五十の手習い

ゲームをしなくなって、AIと対話する機会が増えたら、PCで何かやりたい欲が湧いてきて、言語の勉強を始めることにしました。

十五年前にVisual C#は独学で、iOS風の時計を作ったあと、介護施設に就職して、帳票を組み版でフルスクラッチしたプリンタ制御を組み込んだ介護サービス提供システムの開発をするところまで突き進んだので、今更C#をしてもしょうがないかな。

また、Pythonのようなインタープリターを極めたところで、インタープリターは実行コストが重いけど、有志が作成した豊富なライブラリがあるのが魅力だけど、ライブラリを使うと依存関係が複雑になるだけですし、Pythonのバージョンに後方互換性がないのでバージョン管理が煩雑で好きじゃ無いです。

MicrosoftのWindowsの基幹が、Rustに置き換わっているということもあってRustを勉強することにしました。

Rustが凄い

Rustが凄いのはメモリを安全に制御するだけじゃ無くて、Microsoftからwindows-rsとういうWin32APIを直接叩けるクリート(Crate:木箱)というライブラリが用意されていることです。

メモリを安全に制御していなければコンパイルできないので、コンパイル出来ると言うことは安全にWin32APIを直接叩いて、高速な処理を実現できると言うことです。ユーザーモードのドライバすら叩ける、DirectXやWASAPIを叩ける。MS C/C++とMSVCランタイムライブラリでしか実現できなかった技術を最新のRustをでは過去のOSの資産からこれから先のOSの資産を含めて直接実行できるわけです。