This post is also available in:
Series: Oracle RAC 12.2 — Complete Installation on VMware Workstation
📌 About this series: This guide covers Oracle RAC 12c, which is out of support. The goal is to document learning and revisit concepts — not to recommend this version for production. Read the full context in the series overview →
📋 This series — Oracle RAC 12.2 on VMware Workstation:
⚙️ Prerequisite: VMware Workstation installed on the Linux host. A Linux server accessible on the local network (vpslab) to host the iSCSI target.
Why targetcli Instead of Openfiler?
Openfiler was widely used in Oracle RAC labs for years, but it has been discontinued since 2011 and the official website is offline. targetcli is based on Linux-IO Target (LIO), the standard iSCSI backend in Oracle Linux, RHEL, and CentOS since version 7. It is officially documented by Oracle at docs.oracle.com and requires no additional VM — it runs directly on any Linux server.
Environment Topology
vpslab (192.168.15.3)
└── targetcli — iSCSI server
└── /srv/lab/storage/rac-storage/
labnote → vmnet0 (Bridged → enp0s20f0u2)
├── orclrac1 eth0: 192.168.15.170 (public)
│ orclrac1 eth2: 192.168.15.130 (iSCSI) ← same vmnet0
└── orclrac2 eth0: 192.168.15.171 (public)
orclrac2 eth2: 192.168.15.131 (iSCSI) ← same vmnet0💡 Why do eth0 and eth2 share the same vmnet? VMware doesn’t allow two Bridged vmnets on the same physical NIC. Since
enp0s20f0u2is already used by vmnet0, a separate vmnet2 isn’t possible. Logical separation is done by IP — iSCSI traffic reaches vpslab (192.168.15.3) over the same physical network.
Configure VMware Networks
Open the Virtual Network Editor:
VMware Workstation → Edit → Virtual Network Editor → Change SettingsVMnet0 — Public and iSCSI Network (Bridged)
- Type: Bridged
- Bridged to: the active NIC on the host in the
192.168.15.xnetwork
VMnet1 — RAC Interconnect (Host-only)
- Type: Host-only
- DHCP: Disabled ← required
- Subnet:
10.10.10.0 / 255.255.255.0
⚠️ Disabling DHCP on the interconnect is mandatory. If left enabled, Clusterware may fail when attempting to use this network.
Final result:
| VMnet | Type | DHCP | Subnet | Purpose |
|---|---|---|---|---|
| vmnet0 | Bridged | — | 192.168.15.0/24 | Public network and iSCSI |
| vmnet1 | Host-only | Disabled | 10.10.10.0/24 | RAC interconnect |
Configure the iSCSI Target on vpslab
Run this section on vpslab (
192.168.15.3) as root.
Install targetcli
apt install -y targetcli-fb
systemctl enable rtslib-fb-targetctl
systemctl start rtslib-fb-targetctl
systemctl status rtslib-fb-targetctlOn Ubuntu the package is
targetcli-fband the service isrtslib-fb-targetctl. On Oracle Linux/RHEL the package istargetcliand the service istarget.
Create Directory Structure
mkdir -p /srv/lab/storage/rac-storageCreate the LUN Files
⚠️ Use
ddinstead oftruncate.truncatecreates sparse files — the declared size doesn’t match real allocated space and targetcli won’t report sizes correctly to initiators.
cd /srv/lab/storage/rac-storage
dd if=/dev/zero of=lun-ocr-vote1.img bs=1M count=10240 status=progress
dd if=/dev/zero of=lun-ocr-vote2.img bs=1M count=10240 status=progress
dd if=/dev/zero of=lun-ocr-vote3.img bs=1M count=10240 status=progress
dd if=/dev/zero of=lun-gimr.img bs=1M count=40960 status=progress
dd if=/dev/zero of=lun-data1.img bs=1M count=61440 status=progress
dd if=/dev/zero of=lun-fra1.img bs=1M count=40960 status=progress
du -sh /srv/lab/storage/rac-storage/*.imgLUN mapping:
| LUN | File | Size | Device | Oracle Disk Group |
|---|---|---|---|---|
| lun-0 | lun-ocr-vote1.img | 10 GB | /dev/sdc | +OCR (voting) |
| lun-1 | lun-ocr-vote2.img | 10 GB | /dev/sdh | +OCR (voting) |
| lun-2 | lun-ocr-vote3.img | 10 GB | /dev/sdg | +OCR (voting) |
| lun-3 | lun-gimr.img | 40 GB | /dev/sdf | +MGMT (GIMR) |
| lun-4 | lun-data1.img | 60 GB | /dev/sde | +DATA |
| lun-5 | lun-fra1.img | 40 GB | /dev/sdd | +FRA |
Configure the iSCSI Target via targetcli
sudo targetcliInside the interactive shell:
/backstores/fileio create lun-ocr-vote1 /srv/lab/storage/rac-storage/lun-ocr-vote1.img 10G write_back=false
/backstores/fileio create lun-ocr-vote2 /srv/lab/storage/rac-storage/lun-ocr-vote2.img 10G write_back=false
/backstores/fileio create lun-ocr-vote3 /srv/lab/storage/rac-storage/lun-ocr-vote3.img 10G write_back=false
/backstores/fileio create lun-gimr /srv/lab/storage/rac-storage/lun-gimr.img 40G write_back=false
/backstores/fileio create lun-data1 /srv/lab/storage/rac-storage/lun-data1.img 60G write_back=false
/backstores/fileio create lun-fra1 /srv/lab/storage/rac-storage/lun-fra1.img 40G write_back=false
/iscsi create iqn.2024-01.com.vpslab:rac-storage
cd /iscsi/iqn.2024-01.com.vpslab:rac-storage/tpg1
set attribute authentication=0
set attribute demo_mode_write_protect=0
set attribute generate_node_acls=1The
0.0.0.0:3260portal is created automatically when the target IQN is created. Do not runportals/ create.
luns/ create /backstores/fileio/lun-ocr-vote1
luns/ create /backstores/fileio/lun-ocr-vote2
luns/ create /backstores/fileio/lun-ocr-vote3
luns/ create /backstores/fileio/lun-gimr
luns/ create /backstores/fileio/lun-data1
luns/ create /backstores/fileio/lun-fra1
lsExpected output:
o- tpg1 ............................... [gen-acls, no-auth]
o- luns ............................. [LUNs: 6]
| o- lun0 ........................... [fileio/lun-ocr-vote1]
| o- lun1 ........................... [fileio/lun-ocr-vote2]
| o- lun2 ........................... [fileio/lun-ocr-vote3]
| o- lun3 ........................... [fileio/lun-gimr]
| o- lun4 ........................... [fileio/lun-data1]
| o- lun5 ........................... [fileio/lun-fra1]
o- portals .......................... [Portals: 1]
o- 0.0.0.0:3260 ................... [OK]cd /
saveconfig
exitAllow Firewall Access
ufw allow 3260/tcp
ufw reload
ufw status | grep 3260Verify the Service
ss -tlnp | grep 3260
targetcli lsTest Discovery
From the labnote host or any machine on the LAN:
iscsiadm -m discovery -t sendtargets -p 192.168.15.3Next Up
In Post 2 we’ll install Oracle Linux, configure orclrac1, clone it to orclrac2, and connect the iSCSI Initiator to the target created here.

4 Comments
Pingback: Oracle RAC 12.2 on VMware Workstation — Post 4: Oracle Database Installation and DBCA | Execute Step
Pingback: Oracle RAC 12.2 on VMware Workstation — Series Overview | Execute Step
Pingback: Oracle RAC 12.2 on VMware Workstation — Post 2: Oracle Linux Configuration and iSCSI | Execute Step
Pingback: Oracle RAC 12.2 on VMware Workstation — Post 5: Final Validation and Quick Reference | Execute Step