誤家庭ご家庭環境で vSphere 用の共有 Datastore を作る場合、適当な NAS で NFS を使うのが手軽ですが、VMFS* 使えなかったり、(ほとんどの場合)Thin Provisioning 固定になってしまったりと遊ぶには制約がちらほら。
どうせ遊ぶなら VMFS も触ってみて色々実験したい…
ということで、適当な Linux 環境を iSCSI Target 化し、そこに Datastore を作ることに。
Linux 環境は安価で手軽な Raspberry Pi を使ってみる。
まぁ、ラズパイなので信頼性は…なので、あくまでご家庭環境で試してみた程度に。
iSCSI ハード
- Raspberry Pi 4 (8GB)
- USB3.0 外付け HDD ケース (Logitec LGB-EKU3)
- SATA 3.5inch HDD (TOSHIBA DT01ACA200 2.0TB)
- システム用 micro SDXC 32GB
- 他ケース、USB 電源 etc...
Raspberry Pi 4 は 8GB でなくてもいい気がしますが、適当な在庫(ESXi on ARM 機を転用)と先々他用途に使うかもということでとりあえず大きいものに。
USB 外付け HDD は USB3.0 対応で、Raspberry Pi の場合バスパワーは弱いのでセルフパワー、もしくは USB でも別から給電できるものにする。
それと UASP の対応差で性能有無があるらしいので対応品にしておくよう注意*
容量は適当。容量単価的には 4TB 辺りがコスパ良いが、そんなには要らないので節約。
* Raspberry Pi 4 だと Linux 側ドライバの UASP 対応が微妙なので無効にした方が良いという話もあったりなかったり…ベンチとってないので現状は分からないのですが、とりあえず有効のまま。 → 参考:Raspberry Pi 4でUSB3.0接続のSSDがとても遅い
OS を焼く
OS は適当な作業用端末で Raspberry Pi Imager を使って microSD に焼く。
焼く OS は何でも大丈夫なのかな…とりあえず Ubuntu 20.04 LTS 64bit で。
焼くデバイスに microSD を選択し、作成開始。
完了。結構時間がかかる…(1時間くらい?)
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 で設定を入れる。
固定ターゲット指定だと上手くいかず(名前解決の問題?)、動的ターゲットで アドレス&ポート指定のみで成功したのでとりあえずそれで。
デバイスを開けば iSCSI デバイスが認識されているはず(出ていなければ再スキャン?)
あとは新しいデータストアの作成を進めていけば、作成先に iSCSI デバイスを選択でき、VMFS Datastore を作成できる。
参考
iSCSI イニシエータ