vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

Raspberry Pi 4 で作った iSCSI 領域を ESXi からマウントしたメモ

誤家庭ご家庭環境で vSphere 用の共有 Datastore を作る場合、適当な NASNFS を使うのが手軽ですが、VMFS* 使えなかったり、(ほとんどの場合)Thin Provisioning 固定になってしまったりと遊ぶには制約がちらほら。

どうせ遊ぶなら VMFS も触ってみて色々実験したい…

ということで、適当な Linux 環境を iSCSI Target 化し、そこに Datastore を作ることに。
Linux 環境は安価で手軽な Raspberry Pi を使ってみる。

まぁ、ラズパイなので信頼性は…なので、あくまでご家庭環境で試してみた程度に。

iSCSI ハード

Raspberry Pi 4 は 8GB でなくてもいい気がしますが、適当な在庫(ESXi on ARM 機を転用)と先々他用途に使うかもということでとりあえず大きいものに。

USB 外付け HDD は USB3.0 対応で、Raspberry Pi の場合バスパワーは弱いのでセルフパワー、もしくは USB でも別から給電できるものにする。
それと UASP の対応差で性能有無があるらしいので対応品にしておくよう注意*
f:id:masahiroirie:20210208224115j:plain

容量は適当。容量単価的には 4TB 辺りがコスパ良いが、そんなには要らないので節約。

* Raspberry Pi 4 だと Linux 側ドライバの UASP 対応が微妙なので無効にした方が良いという話もあったりなかったり…ベンチとってないので現状は分からないのですが、とりあえず有効のまま。 → 参考:Raspberry Pi 4でUSB3.0接続のSSDがとても遅い

OS を焼く

OS は適当な作業用端末で Raspberry Pi Imager を使って microSD に焼く。
f:id:masahiroirie:20210208224812j:plain 焼く OS は何でも大丈夫なのかな…とりあえず Ubuntu 20.04 LTS 64bit で。
f:id:masahiroirie:20210208224843j:plain 焼くデバイスmicroSD を選択し、作成開始。 f:id:masahiroirie:20210208224953j:plain 完了。結構時間がかかる…(1時間くらい?) f:id:masahiroirie:20210208230826j:plain

Ubuntu OS 設定

とりあえずホスト名、ネットワーク、Timezone ぐらいしておけば事足りる?

# ホスト名
mirie@ubuntu:~$ sudo hostnamectl set-hostname raspi01.home.lab

# ネットワーク
mirie@raspi01:~$ sudo vim /etc/netplan/99-config.yaml
---
network:
    ethernets:
        eth0:
            dhcp4: false
            dhcp6: false
            optional: false
            addresses: [192.168.0.21/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [192.168.0.41, 192.168.0.1]
    version: 2
    renderer: networkd
---
mirie@raspi01:~$ sudo netplan apply

# Timezone
mirie@raspi01:~$ sudo timedatectl set-timezone Asia/Tokyo


参考
Ubuntu 20.04 LTSのホスト名を変更する方法まとめ【デスクトップ・サーバー】 | LFI
Ubuntu 20.04 LTSで固定IPアドレスの設定 - Qiita
Ubuntu 20.04 LTS : システムのタイムゾーンを設定する : Server World

iSCSI Target を立ち上げる

Ubuntu だとtgtパッケージをインストールすれば良いらしい。

mirie@raspi01:~$ sudo apt-get install tgt -y
Reading state information... Done
The following additional packages will be installed:
  ibverbs-providers libconfig-general-perl libibverbs1 librdmacm1
Suggested packages:
  tgt-rbd
The following NEW packages will be installed:
  ibverbs-providers libconfig-general-perl libibverbs1 librdmacm1 tgt
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
【略】

Target の設定を conf に書く。

mirie@raspi01:~$ sudo vim /etc/tgt/conf.d/iscsi.conf

conf の中身はこんな感じ。一旦認証回りは省いてほぼ必要最小限。

<target raspi01.home.lab:lun1> # Target 名
        backing-store /dev/sda # Target バックエンド
        initiator-address 192.168.0.61 # iSCSI イニシエータ(≒マウントするESXi)の IP
        write-cache off # ラズパイの信頼性考えるとライトキャッシュは OFF が無難か…
</target>

Target バックエンドはブロックデバイス直の他、イメージファイルとしてファイルパスの指定も可能。

反映のためデーモン再起動。

mirie@raspi01:~$ sudo systemctl restart tgt

tgtadm で Target の情報を確認してみる。

mirie@raspi01:~$ sudo tgtadm --mode target --op show
Target 1: raspi01.home.lab:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2000399 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sda
            Backing store flags:
    Account information:
    ACL information:
        192.168.0.61

conf に書いた Target 名、デバイスACL(initiator-address) が反映されていれば良さげ。

参考
Ubuntu 20.04 LTS : iSCSI ターゲットの設定 (tgt) : Server World

ESXi からマウントする

(vCenter 止めていたのでホストクライアントから…) ホストクライアントのナビゲータでストレージ → アダプタ → ソフトウェア iSCSI で設定を入れる。
f:id:masahiroirie:20210208233409j:plain 固定ターゲット指定だと上手くいかず(名前解決の問題?)、動的ターゲットで アドレス&ポート指定のみで成功したのでとりあえずそれで。

バイスを開けば iSCSIバイスが認識されているはず(出ていなければ再スキャン?) f:id:masahiroirie:20210208233751j:plain
あとは新しいデータストアの作成を進めていけば、作成先に iSCSIバイスを選択でき、VMFS Datastore を作成できる。 f:id:masahiroirie:20210208234052j:plain

参考
iSCSI イニシエータ