/pve-moosefs

MooseFS Storage Plugin for Proxmox Virtual Environment (PVE)

Primary LanguagePerlGNU Affero General Public License v3.0AGPL-3.0

pve-moosefs

MooseFS integration for Proxmox VE

This plugin enables native support for MooseFS as a storage backend in Proxmox VE.

⚠️ Disclaimer

This project is under active development but should still be considered beta.

⚠️ Keep backups of your data. Snapshots are unsafe and may result in data loss. Snapshot support is still under active development and will remain experimental until this warning is removed. ⚠️⚠️⚠️ There is currently a known snapshotting issue with pve-moosefs running in mfsbdev mode discovered 2025-10-04 - a fix is coming ASAP, eta 1-3 days.

📷 Preview

image

✨ Features

Ask DeepWiki

  • Native MooseFS support in Proxmox VE
  • Support for MooseFS clusters with passwords and subfolders
  • Live VM migration across Proxmox hosts with MooseFS-backed storage
  • Clean unmounting when MooseFS storage is removed
  • MooseFS block device (mfsbdev) support for high performance
  • Instant snapshots and near instant rollbacks

🚧 Planned Features

  • Instant cloning

🚀 Installation & Usage

Prerequisites

  • Proxmox VE 9.0 or newer

Option 1: Easy Install

  1. Upgrade to Proxmox 9.0
  2. Download and install the .deb package from the Releases page.

Option 2: Manual Build

  1. Upgrade to Proxmox 9.0

  2. Clone this repository:

    git clone https://github.com/yourusername/pve-moosefs.git
    cd pve-moosefs
  3. Build the package:

    make
  4. Install it:

    dpkg -i *.deb

🖥️ Mounting MooseFS Storage

Via GUI

  1. Open the Proxmox Web Interface
  2. Navigate to Datacenter → Storage
  3. Click Add → MooseFS and complete the wizard

Via Command Line

pvesm add moosefs moosefs-vm-storage --path /mnt/mfs

This command creates a custom storage named moosefs-vm-storage using the MooseFS plugin.

Optional parameters:

  • --mfsmaster <hostname> — specify the MooseFS metadata server
  • --mfspassword <password> — use if your MooseFS export requires authentication
  • --mfssubfolder <folder> — mount a subfolder rather than the root of the MooseFS volume
  • --mfsport <port> — mount a MooseFS filesystem that uses a custom master port

🙏 Credits

Contributors:

  • @Zorlin — Principal author, testing, automation and quality control
  • @anwright — major fixes, snapshots, and cleanup
  • @pkonopelko — general advice and support

Inspiration and references (for plugin skeleton and packaging):

Changelog

v0.1.11 - Major Reliability and Safety Release (2025-11-07)

Critical Fixes:

  • Fixed: Multi-disk VMs can now hot-migrate successfully (#54)

    • Added intelligent retry logic with exponential backoff for NBD mapping
    • Resolves "link exists" errors when migrating VMs with multiple disks
    • Improved race condition handling during concurrent disk operations
  • Fixed: Windows VMs with TPM 2.0 now start correctly (#51)

    • Enhanced TPM state directory path resolution
    • Automatic creation of TPM directories with proper permissions
    • Ensures compatibility with Windows 11 TPM requirements
  • Fixed: LXC storage migration safety and data corruption (#50)

    • Graceful cleanup on allocation failures prevents orphaned resources
    • Improved error handling prevents cascade failures during cleanup
    • Snapshot operations now safely unmap NBD before execution
  • Fixed: LXC resize and creation with mfsbdev (#52)

    • Create image files before NBD mapping (mfsbdev requirement)
    • Better error messages for NBD module and device availability
    • Improved NBD device handling and LXC compatibility
  • Fixed: LXC snapshot backups with taint mode (#48)

    • Proper path untainting for vzdump compatibility
    • Enhanced snapshot operation safety
  • Fixed: NBD daemon crashes during snapshot operations (#53)

    • Added with_nbd_unmapped wrapper for safe snapshot operations
    • Prevents daemon crashes by unmapping before snapshots
  • Fixed: Helpful error messages when MooseFS master unreachable (#38)

    • Clearer diagnostics for connection issues

New Features:

  • Multiple MooseFS cluster support via mfsnbdlink property
  • Rust-based patch generator tool for easier development
  • UI support for mfsnbdlink configuration

Reliability Enhancements:

  • Graceful cleanup on allocation failures
  • Snapshot safety wrapper prevents daemon crashes
  • Improved NBD device collision detection
  • Better error handling for concurrent storage operations
  • Enhanced logging for troubleshooting

Known Issues:

  • #47: Post-migration mfsbdev state preservation under investigation

Note: This release represents a major step toward production-grade reliability. As always, maintain backups and test in non-production environments first.

v0.1.10 - Critical bug fixes

  • Improve mount detection, fix subfolder bug in bdev adapter
  • Improve NBD handling
  • Only allow "raw" image type in bdev mode
  • Further NBD logic fixes and tuning
  • Fix issue with free_image SUPER delegation
  • Fix volume attributes/notes
  • Switch to mfsrmsnapshot instead of rm for snapshots
  • Add mfsport support
  • Support optional password for mfsbdev

v0.1.7 - Critical Bug Fixes

  • Fixes rare but major crash condition for VMs and LXCs
  • Adds support for Proxmox VE 9.0

v0.1.5 - Bug Fixes

  • Improvements to LXC snapshot support
  • Reduced debugging log noise

v0.1.4 – Bug Fixes

  • Multiple small and defensive fixes
  • Improved support for LXC
  • Enhancements for live migration, unmapping, and cloning

v0.1.3 – New Features

  • Full support for MooseFS block device (mfsbdev)

v0.1.2 – Initial Block Device Support

  • Basic mfsbdev support added

v0.1.1 – Enhancements

  • GUI support for container storage
  • Allowed leading / in mfssubfolder paths

v0.1.0 – Initial Release

  • Core features implemented
  • MooseFS mount/unmount and shared storage setup
  • Snapshots not functional in this version