psychic99

unraidsupertier

Sep 8th, 2025
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | Source Code | 0 0
  1. #!/bin/bash
  2. # /{user script location}/btrfs-nvme-tier.sh
  3.  
  4. DATA_PATH="/data"
  5. NVME_THRESHOLD=75 # Start tiering when NVMe hits 75% full
  6. SSD_ADDED_FLAG="/var/lib/btrfs-ssd-added"
  7.  
  8. # Function to check NVMe space usage
  9. get_nvme_usage() {
  10. btrfs filesystem usage $DATA_PATH | grep "Device allocated:" | head -2 | \
  11. awk '{gsub(/%/, "", $3); print $3}' | sort -n | tail -1
  12. }
  13.  
  14. # Function to add SSDs and create tiered storage
  15. add_ssd_tier() {
  16. echo "$(date): Adding SSD tier - NVMe usage at ${1}%"
  17.  
  18. # Add SSD devices to the filesystem
  19. btrfs device add /dev/sda1 /data
  20. btrfs device add /dev/sdb1 /data
  21.  
  22. # Convert to have mirrored SSDs as well
  23. # This creates a mixed topology: NVMe RAID1 + SSD RAID1
  24. btrfs balance start -dconvert=raid1 -mconvert=raid1 /data
  25.  
  26. # Mark that SSDs have been added
  27. touch $SSD_ADDED_FLAG
  28.  
  29. echo "$(date): SSD tier added successfully"
  30. }
  31.  
  32. # Function to tier older data to SSDs
  33. tier_cold_data() {
  34. echo "$(date): Tiering cold data to SSDs"
  35.  
  36. # Move less-utilized chunks from NVMe to SSD
  37. # This preferentially moves older/fragmented data
  38. btrfs balance start -dusage=60,devid=1 /data &
  39. btrfs balance start -dusage=60,devid=2 /data &
  40. wait
  41.  
  42. echo "$(date): Data tiering complete"
  43. }
  44.  
  45. # Main logic
  46. CURRENT_USAGE=$(get_nvme_usage)
  47.  
  48. if [ $CURRENT_USAGE -gt $NVME_THRESHOLD ]; then
  49. if [ ! -f $SSD_ADDED_FLAG ]; then
  50. # First time hitting threshold - add SSDs
  51. add_ssd_tier $CURRENT_USAGE
  52. else
  53. # SSDs already added - just tier data
  54. tier_cold_data
  55. fi
  56. fi
  57.  
  58. echo "$(date): NVMe usage: ${CURRENT_USAGE}%"
Tags: btrfs unraid
Advertisement
Add Comment
Please, Sign In to add comment