12 Commits

Author SHA1 Message Date
Timur Kumakbayev 6c4411ede9 Merge pull request #95 from brngates98/issue94-add-lxc
feat: advertise rootdir for LXC root volumes (plugindata + docs)
2026-05-04 02:18:16 +05:00
Brian Gates 45bb0e24eb Update README to include LXC support details
Added support for LXC container root volumes in the plugin documentation.
2026-05-03 17:12:36 -04:00
Brian Gates 2c222ef704 Update plugindata to include rootdir in content 2026-05-03 17:11:57 -04:00
Timur Kumakbayev 40eb92df32 Merge pull request #93 from brngates98/issue84
Refactor pod capacity retrieval and space calculations
2026-05-04 01:58:30 +05:00
Brian Gates f7d06166fc Run Perltidy and fix linting issues 2026-05-03 16:48:34 -04:00
Brian Gates ed358b13c5 Fix purestorage pod status totals, usage scope, and space metrics 2026-05-03 16:27:05 -04:00
Brian Gates 397e2f5b64 Refactor pod capacity retrieval and space calculations 2026-05-03 15:28:50 -04:00
Timur Kumakbayev d6b0035d5e Merge pull request #90 from tommymcguiver/api-version-13-updates
API Version 13
2026-02-27 10:59:13 +05:00
Ken Miles e0e4009426 Merge remote-tracking branch 'origin/main' into api-version-13-updates 2026-02-26 09:49:04 +10:00
Timur Kumakbayev c1ff0acf15 Merge pull request #87 from tommymcguiver/syslogging-improvments-2
Improve syslogging implementation and code
2026-02-25 15:13:00 +05:00
Ken Miles 63b2c46104 API Version 13
Modify function signatures, no functionality changes
2026-02-25 13:50:02 +10:00
Ken Miles 0ace4fe87d Improve syslogging implementation and code
Convert direct print statements to use the logger for consistent info message handling.

Also convert warn and die calls to log with the common logger for unified logging.

Removes repetition, enables logging to syslog which allows each message to be timestamped, and can more easily compare
with other systemctl logs like multipathd and iscsid daemons and proxmox services to make it easier to identify race
conditions.
2026-02-24 15:52:59 +10:00
2 changed files with 308 additions and 198 deletions
+273 -196
View File
File diff suppressed because it is too large Load Diff
+35 -2
View File
@@ -5,11 +5,13 @@
This plugin enables the integration of Pure Storage arrays with Proxmox
Virtual Environment (VE) using multipath iSCSI or Fibre Channel (FC).
It allows you to use Pure Storage as a backend for your virtual machine
disks, providing high performance and reliability.
disks, and optionally for LXC container root volumes when configured,
providing high performance and reliability.
## Table of Contents
- [Features](#features)
- [Linux containers (LXC)](#linux-containers-lxc)
- [Prerequisites](#prerequisites)
- [Multipath Configuration](#multipath-configuration)
- [iSCSI Configuration](#iscsi-configuration)
@@ -39,6 +41,21 @@ disks, providing high performance and reliability.
- Instant storage migration
- The plugin will automatically map the iSCSI volumes needed on the
host the VM is being migrated to
- Optional **LXC** support — include `rootdir` in `content` to allow raw
image-backed container root disks on the same block path as QEMU disks
(see [Linux containers (LXC)](#linux-containers-lxc))
## Linux containers (LXC)
The plugin exposes the Proxmox **`rootdir`** content type so a storage
section can host **LXC root filesystems** as raw volumes, alongside
`images` (QEMU disks), when you set e.g. `content images,rootdir`.
LXC on this backend uses the same allocation and device path logic as VM
disks. **Support is best-effort and community-tested** — validate create,
resize, and delete for your workloads on a real array before relying on it
in production. If you only need QEMU VMs, keep `content images` (omit
`rootdir`).
## Prerequisites
@@ -234,6 +251,10 @@ pvesm add purestorage <storage_id> \
--content images
```
To allow **LXC container root disks** on the same pool as well, use
`--content images,rootdir` instead of `--content images` (see
[Linux containers (LXC)](#linux-containers-lxc)).
Alternatively, you can manually edit the storage configuration file
`/etc/pve/storage.cfg`.
@@ -257,7 +278,7 @@ purestorage: <storage_id>
| podname | (`optional`, conflicts with `vgname`) The pod name where virtual disks will be stored. This should match the configuration on your Pure Storage array. |
| vnprefix | (`optional`) The prefix to prepend to name of virtual disks. |
| hgsuffix | (`optional`) A suffix that is appended to the hostname when the plugin interacts with the Pure Storage array. This can help differentiate hosts if necessary. |
| content | Specifies the types of content that can be stored. For virtual machine disk images, use images. |
| content | Specifies the types of content that can be stored. Use `images` for QEMU VM disks. Add `rootdir` (e.g. `images,rootdir`) to allow LXC root volumes on the same pool; see [Linux containers (LXC)](#linux-containers-lxc). |
| protocol | (`optional`, default is `iscsi`) Specifies the storage protocol (`iscsi`, `fc`). |
| check_ssl | (`optional`, default is `no`) Verify the server's TLS certificate. Set to `yes` to enable SSL certificate verification. |
| token_ttl | (`optional`, default is `3600`) Session token time-to-live in seconds. The plugin caches PureStorage API session tokens in `/etc/pve/priv/purestorage/` (automatically replicated across cluster nodes). Tokens are proactively refreshed at 80% of TTL to prevent expiration during operations. |
@@ -289,6 +310,18 @@ purestorage: pure-cluster
content images
```
**LXC-capable pool** (`images` and `rootdir`; best-effort — see
[Linux containers (LXC)](#linux-containers-lxc)):
```text
purestorage: pure-lxc
address https://purestorage.example.com
token abc123
vgname pure_vg
hgsuffix ""
content images,rootdir
```
> [!NOTE]
> When multiple arrays are specified (Active Cluster configuration -
> experimental feature), the plugin automatically connects volumes to hosts