Skip to content

moosefs/pve-moosefs

Repository files navigation

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