Update Servers/Virtualization/Proxmox/Configuring iSCSI-based Cluster Storage.md
All checks were successful
GitOps Automatic Deployment / GitOps Automatic Deployment (push) Successful in 6s

This commit is contained in:
2026-01-06 21:36:03 -07:00
parent 8b684e836e
commit 25d859af8f

View File

@@ -8,8 +8,6 @@ This approach is intended to:
- Avoid third-party plugins or middleware
- Be fully reproducible via CLI
---
## Assumptions
- TrueNAS **CORE** (not SCALE)
- ZFS pool already exists and is healthy
@@ -21,8 +19,6 @@ This approach is intended to:
!!! warning "Important"
`volblocksize` **cannot be changed after zvol creation**. Choose carefully.
---
## Target Architecture
```
@@ -34,14 +30,12 @@ ZFS Pool
└─ VM Disks
```
---
## Step 1 Create a Dedicated Zvol for Proxmox
### Variables
Adjust as needed before execution.
```
```sh
POOL_NAME="CLUSTER-STORAGE"
ZVOL_NAME="iscsi-proxmox"
ZVOL_SIZE="14T"
@@ -49,7 +43,7 @@ VOLBLOCKSIZE="16K"
```
### Create the Zvol (Thick-Provisioned)
```
```sh
zfs create -V ${ZVOL_SIZE} \
-o volblocksize=${VOLBLOCKSIZE} \
-o compression=lz4 \
@@ -63,110 +57,66 @@ zfs create -V ${ZVOL_SIZE} \
---
## Step 2 Configure iSCSI Target (TrueNAS CLI)
### Enable iSCSI Service
```
```sh
# Enable iSCSI Service
service iscsitarget start
sysrc iscsitarget_enable=YES
```
---
### Create iSCSI Portal
```
# Create iSCSI Portal
ctladm create -p 0.0.0.0
```
---
### Create Target
```
# Create Target
ctladm create -t proxmox-target
```
---
### Create Extent
```
ctladm create -b block \
-l /dev/zvol/${POOL_NAME}/${ZVOL_NAME} \
proxmox-extent
```
---
# Create Extent
ctladm create -b block -l /dev/zvol/${POOL_NAME}/${ZVOL_NAME} proxmox-extent
### Associate Target + Extent
```
ctladm add -t proxmox-target -l proxmox-extent
```
!!! tip
At this point, the LUN is live and can be discovered by initiators.
---
## Step 3 Connect from Proxmox VE Nodes
Perform the following **on each Proxmox node**.
### Install iSCSI Utilities
```
```sh
# Install iSCSI Utilities
apt update
apt install -y open-iscsi lvm2
```
---
### Discover Target
```
# Discover Target
iscsiadm -m discovery -t sendtargets -p <TRUENAS_IP>
```
---
### Log In
```
# Log In
iscsiadm -m node --login
```
---
### Verify Device
```
lsblk
```
---
## Step 4 Create Shared LVM (One Node Only)
!!! warning "Important"
**Only run LVM creation on ONE node**. All other nodes will only scan.
### Initialize Physical Volume
```
```sh
# Initialize Physical Volume
pvcreate /dev/sdX
```
---
### Create Volume Group
```
# Create Volume Group
vgcreate vg_proxmox_iscsi /dev/sdX
```
---
## Step 5 Register Storage in Proxmox
### Rescan LVM (Other Nodes)
```
```sh
pvscan
vgscan
```
---
### Add Storage (GUI or CLI)
**Datacenter → Storage → Add → LVM**
@@ -176,8 +126,6 @@ vgscan
- Content: `Disk image`
- Shared: ✔️
---
## Step 6 Validation
- Snapshot create / revert / delete
@@ -187,34 +135,19 @@ vgscan
!!! success
If all validation tests pass, the storage is production-ready.
---
## Step 7 Decommission NFS (After Cutover)
```
```sh
zfs destroy CLUSTER-STORAGE/NFS-STORAGE
```
---
## Step 8 Expand iSCSI Storage (No Downtime)
### Expand Zvol (TrueNAS)
```
```sh
# Expand Zvol (TrueNAS)
zfs set volsize=16T CLUSTER-STORAGE/iscsi-proxmox
zfs set refreservation=16T CLUSTER-STORAGE/iscsi-proxmox
```
---
### Rescan on Proxmox Nodes
```
# Rescan on Proxmox Nodes
pvresize /dev/sdX
```
---
## Final Notes
- Maintain ≥1520% free pool capacity
- Monitor pool usage and fragmentation
- Prefer PBS restores for large migrations
```