ذخیره سازی / پشتیبان گیری

Proxmox Backup Server 4.2: نصب، datastore و بکاپ Proxmox VE

راهنمای Proxmox Backup Server 4.2؛ نصب، ساخت datastore، اتصال به Proxmox VE با API token، job بکاپ، prune و GC، verify، رمزنگاری، restore و sync به سرور دوم.

نوشته‌ی تیم پیکوگاید ۱۱ دقیقه مطالعه
در این صفحه
  1. PBS چطور بکاپ را نگه می‌دارد
  2. سخت افزار
  3. نصب
  4. مخزن no-subscription
  5. ساخت datastore
  6. کاربر و API token برای Proxmox VE
  7. افزودن PBS به Proxmox VE
  8. رمزنگاری
  9. job بکاپ در Proxmox VE
  10. prune و garbage collection
  11. verify
  12. restore
  13. نسخه‌ی خارج از سایت با sync
  14. مشکلات رایج
  15. قدم بعدی

Proxmox Backup Server (PBS) سرور بکاپ رسمی Proxmox است که بکاپ ماشین‌های مجازی و کانتینرهای Proxmox VE را به صورت افزایشی و deduplicate شده نگه می‌دارد. نسخه‌ی فعلی PBS 4.2 است (۹ اردیبهشت ۱۴۰۵، بر پایه‌ی Debian 13.4، kernel 7.0 و ZFS 2.4). روال کار این است: PBS را روی یک سرور جدا از ISO نصب می‌کنید، روی دیسک‌ها datastore می‌سازید، آن را در Proxmox VE به عنوان storage از نوع pbs اضافه می‌کنید و job بکاپ را در Proxmox VE زمان بندی می‌کنید. prune، garbage collection و verify روی خود PBS اجرا می‌شوند و برای نسخه‌ی خارج از سایت، datastore را با sync job به PBS دوم می‌فرستید. طبق FAQ رسمی، پشتیبانی PBS 3 در اوت ۲۰۲۶ تمام شده است؛ نصب تازه را با نسخه‌ی 4 انجام دهید.

PBS چطور بکاپ را نگه می‌دارد

  • chunk و deduplication: دیسک ماشین مجازی به قطعه‌های هم‌اندازه (معمولاً 4 MiB) تقسیم می‌شود و هر قطعه با SHA-256 شناسایی می‌شود. قطعه‌ای که قبلاً ذخیره شده دوباره فرستاده نمی‌شود.
  • dirty bitmap: Proxmox VE بلوک‌های تغییر کرده‌ی دیسک ماشین را دنبال می‌کند و فقط chunkهای تغییر کرده آپلود می‌شوند؛ برای پیدا کردن تغییرها به snapshot روی storage نیازی نیست.
  • فشرده سازی و رمزنگاری: داده با Zstandard فشرده می‌شود، روی TLS منتقل می‌شود و در صورت نیاز در سمت کلاینت با AES-256-GCM رمزنگاری می‌شود.
  • بازنویسی نمی‌شود: PBS بلوک‌های موجود را بازنویسی نمی‌کند، پس یک هاست Proxmox VE آلوده نمی‌تواند بکاپ‌های قبلی را تغییر دهد.

سخت افزار

حداقل (فقط ارزیابی) پیشنهاد رسمی برای محیط عملیاتی
پردازنده 64 بیتی، ۲ هسته Intel یا AMD جدید، دست کم ۴ هسته
حافظه 2 GB 4 GiB برای سیستم، cache و سرویس‌ها به اضافه‌ی دست کم 1 GiB به ازای هر TiB فضای بکاپ
دیسک سیستم بیش از 8 GB 32 GiB یا بیشتر؛ RAID سخت افزاری با cache دارای باتری یا ZFS mirror
دیسک بکاپ — SSD سازمانی؛ اگر HDD است، ZFS special device روی دو SSD به صورت mirror
شبکه یک کارت چند کارت چند گیگابیتی با افزونگی

PBS را روی یک سرور فیزیکی جدا نصب کنید. نصب روی خود Proxmox VE ممکن است، ولی مستندات رسمی آن را توصیه نمی‌کنند: اگر هاست از کار بیفتد، بکاپ‌ها هم در دسترس نیستند. ZFS روی RAID سخت افزاری پشتیبانی نمی‌شود؛ دیسک‌ها را به صورت HBA یا JBOD به سیستم بدهید (ساخت RAID در سرورهای HPE این حالت را در کنترلرهای HPE توضیح می‌دهد).

نصب

  1. ISO را از صفحه‌ی دانلود Proxmox بگیرید؛ در مهر ۱۴۰۵ فایل proxmox-backup-server_4.2-1.iso با حجم حدود 1.48 GB است. hash آن را با مقدار صفحه‌ی دانلود مقایسه کنید.
  2. USB را با Etcher یا Rufus در حالت DD mode یا با dd بسازید. UNetbootin با این ISO کار نمی‌کند.
  3. Install Proxmox Backup Server (Graphical) را انتخاب کنید. اگر رابط گرافیکی بالا نیامد، گزینه‌ی Console همان مراحل را در حالت متنی اجرا می‌کند.
  4. دیسک سیستم و فایل سیستم را انتخاب کنید: ext4 (پیش فرض)، xfs یا ZFS. همه‌ی داده‌ی دیسک‌های انتخاب شده پاک می‌شود.
  5. منطقه‌ی زمانی، رمز root (دست کم ۸ نویسه؛ مستندات دست کم ۱۲ نویسه را توصیه می‌کنند)، ایمیل اعلان‌ها و شبکه (IP ثابت، مثلاً 192.0.2.20/24) را وارد کنید. هنگام نصب فقط IPv4 یا فقط IPv6 قابل تنظیم است.

بعد از ریبوت، رابط وب در https://192.0.2.20:8007 است. با کاربر root و realm Linux PAM وارد شوید.

مخزن no-subscription

مخزن enterprise (pbs-enterprise.sources) به طور پیش فرض فعال است و کلید اشتراک می‌خواهد. بدون اشتراک، در آن فایل خط Enabled: false را اضافه کنید و مخزن no-subscription را بسازید:

cat > /etc/apt/sources.list.d/proxmox.sources <<'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
apt update
apt full-upgrade

طبق مستندات، مخزن no-subscription برای آزمایش و محیط غیرعملیاتی است و بسته‌هایش به اندازه‌ی enterprise آزموده نمی‌شوند. اگر apt update خطا داد، upgrade را ادامه ندهید.

ساخت datastore

datastore یک پوشه روی ext4، xfs یا ZFS است که chunkها را در ۶۵ هزار و ۵۳۶ زیرپوشه نگه می‌دارد. ext3 و ext4 با قابلیت dir_nlink خاموش پشتیبانی نمی‌شوند. دیسک‌های خالی را ببینید و یک ZFS mirror با datastore خودکار بسازید:

proxmox-backup-manager disk list
proxmox-backup-manager disk zpool create store1 --devices sdb,sdc --raidlevel mirror --add-datastore true
proxmox-backup-manager datastore list

datastore در /mnt/datastore/store1 ساخته می‌شود. برای یک دیسک تنها یا RAID سخت افزاری، disk fs create store1 --disk sdb --filesystem ext4 --add-datastore true را به کار ببرید. همین کارها در رابط وب در Administration → Storage / Disks (زبانه‌های ZFS و Directory) و Add Datastore انجام می‌شود. RAIDZ و raid10 هم در --raidlevel قابل انتخاب‌اند؛ انتخاب سطح در مقایسه‌ی سطح‌های RAID آمده است.

کاربر و API token برای Proxmox VE

از root@pam برای بکاپ استفاده نکنید. مستندات بخش ransomware پیشنهاد می‌کنند هر کلاستر Proxmox VE یک API token جدا با کمترین دسترسی داشته باشد. نقش DatastoreBackup اجازه‌ی ساختن بکاپ و restore بکاپ‌های متعلق به خود را می‌دهد، ولی اجازه‌ی حذف نمی‌دهد:

proxmox-backup-manager user create pve@pbs --password 'CHANGE-ME'
proxmox-backup-manager acl update /datastore/store1 DatastoreBackup --auth-id pve@pbs
proxmox-backup-manager user generate-token pve@pbs cluster1
proxmox-backup-manager acl update /datastore/store1 DatastoreBackup --auth-id 'pve@pbs!cluster1'

مقدار value در خروجی generate-token همان secret است و دیگر نمایش داده نمی‌شود؛ آن را ذخیره کنید. دسترسی token هرگز از دسترسی کاربرش بیشتر نمی‌شود، به همین دلیل ACL برای هر دو لازم است. fingerprint گواهی PBS را هم بردارید:

proxmox-backup-manager cert info | grep Fingerprint

افزودن PBS به Proxmox VE

در Proxmox VE مسیر Datacenter → Storage → Add → Proxmox Backup Server را باز کنید: ID (مثلاً pbs1)، Server، Username (pve@pbs!cluster1)، Password (secret توکن)، Datastore (store1) و Fingerprint. از خط فرمان:

pvesm add pbs pbs1 --server 192.0.2.20 --datastore store1 \
  --username 'pve@pbs!cluster1' --fingerprint 64:d3:ff:...:ab:fe --password
pvesm status --storage pbs1

با --password بدون مقدار، رمز پرسیده می‌شود و در history نمی‌ماند. storage از نوع pbs همیشه shared است و روی همه‌ی نودهای کلاستر دیده می‌شود.

رمزنگاری

در زبانه‌ی Encryption همان پنجره می‌توانید کلید را خودکار بسازید (autogen). کلید در /etc/pve/priv/storage/pbs1.enc ذخیره می‌شود و فقط root به آن دسترسی دارد. بدون این کلید هیچ بکاپی قابل بازیابی نیست؛ اگر کلید فقط روی همان کلاستری باشد که از دست رفته، بکاپ‌ها هم از دست رفته‌اند. یک نسخه‌ی کاغذی بگیرید:

proxmox-backup-client key paperkey /etc/pve/priv/storage/pbs1.enc --output-format text > qrkey.txt

نسخه‌ای از کلید را در password manager و روی یک USB در جای امن نگه دارید. برای چند کلاستر می‌توانید یک master key از نوع RSA تعریف کنید تا کلید AES هر بکاپ به صورت رمز شده کنار بکاپ ذخیره شود. بکاپ‌های رمز شده با کلیدهای متفاوت با هم deduplicate نمی‌شوند، پس برای هر کلید datastore جدا بهتر است. طبق مستندات، اگر PBS در شبکه‌ی داخلی قابل اعتماد است، رمزنگاری فقط بازیابی را سخت‌تر می‌کند؛ برای سرور خارج از سایت یا سرور کمتر قابل اعتماد آن را روشن کنید.

job بکاپ در Proxmox VE

در Datacenter → Backup → Add این موارد را تنظیم کنید:

فیلد مقدار پیشنهادی
Storage pbs1
Schedule مثلاً 21:00 برای هر شب؛ فهرست کشویی نمونه‌های آماده دارد
Selection mode All یا ماشین‌های انتخاب شده
Mode Snapshot، بدون توقف ماشین
Retention Keep all (نگه داری روی PBS)
Advanced Repeat missed روشن، تا اگر نود هنگام زمان بندی خاموش بود، job بعداً اجرا شود

برای ماشین‌هایی که هنگام بکاپ زیر بار نوشتن سنگین کند می‌شوند، گزینه‌ی fleecing در زبانه‌ی Advanced داده‌ی بلوک‌های در حال تغییر را روی یک storage محلی سریع cache می‌کند. QEMU Guest Agent را در ماشین‌ها نصب کنید تا فایل سیستم هنگام snapshot یکپارچه بماند.

prune و garbage collection

prune فقط metadata بکاپ (manifest و index) را پاک می‌کند؛ فضای دیسک بعد از اجرای garbage collection آزاد می‌شود. GC دو مرحله دارد: ابتدا زمان دسترسی (atime) همه‌ی chunkهای مورد استفاده را به روز می‌کند و بعد chunkهایی را که atime آن‌ها از ۲۴ ساعت و ۵ دقیقه قبل از شروع GC قدیمی‌تر است حذف می‌کند. chunkهای داخل این مهلت حذف نمی‌شوند و در انتهای گزارش GC با عنوان Pending removals می‌آیند؛ به همین دلیل ممکن است فضای بکاپ‌های prune شده در اولین GC کامل آزاد نشود.

نمونه‌ی نگه داری از مستندات رسمی (بکاپ روزانه با پوشش ده ساله):

proxmox-backup-manager prune-job create store1-daily --store store1 --schedule daily \
  --keep-last 3 --keep-daily 13 --keep-weekly 8 --keep-monthly 11 --keep-yearly 9
proxmox-backup-manager datastore update store1 --gc-schedule 'sat 03:00'

گزینه‌ها به ترتیب last، hourly، daily، weekly، monthly و yearly پردازش می‌شوند و هر گزینه فقط بکاپ‌هایی را می‌پوشاند که گزینه‌ی قبلی نپوشانده است. پیش از اعمال، اثر تنظیم را در Prune Simulator رابط وب ببینید. GC هفتگی برای بیشتر محیط‌ها نقطه‌ی شروع مناسبی است.

verify

verify همه‌ی chunkهای یک بکاپ را می‌خواند و checksum آن‌ها را بررسی می‌کند تا خرابی تدریجی دیسک (bit rot) پیش از روز بازیابی دیده شود. مستندات دو job را توصیه می‌کنند: یک job روزانه برای بکاپ‌های تازه و تأیید نشده، و یک job ماهانه که همه چیز را دوباره بررسی کند:

proxmox-backup-manager verify-job create store1-new --store store1 --schedule daily --ignore-verified true
proxmox-backup-manager verify-job create store1-all --store store1 --schedule monthly --ignore-verified true --outdated-after 30

در job دوم، بکاپی که بیش از ۳۰ روز از آخرین verify آن گذشته دوباره بررسی می‌شود. پیش فرض هر job یک thread خواندن و ۴ thread بررسی است. همین کار در زبانه‌ی Verify Jobs هر datastore انجام می‌شود.

restore

  • ماشین کامل: در Proxmox VE روی storage pbs1 → Backups، بکاپ را انتخاب و Restore را بزنید. برای آزمایش، ماشین را با VMID جدید بازیابی کنید تا ماشین اصلی بازنویسی نشود.
  • live-restore: با تیک Live restore، ماشین هم‌زمان با شروع بازیابی روشن می‌شود و داده در پس زمینه کپی می‌شود. سرعت خواندن ماشین تا پایان کپی محدود است و اگر بازیابی نیمه کاره قطع شود، ماشین در وضعیت نامعلوم می‌ماند.
  • فایل تکی: دکمه‌ی File Restore در همان زبانه، محتوای بکاپ را مثل یک file browser باز می‌کند و فایل یا پوشه (به صورت zip) دانلود می‌شود. این قابلیت فقط برای بکاپ روی PBS وجود دارد.

مستندات PBS برای تشخیص ransomware داخل ماشین‌ها، restore و بوت آزمایشی منظم را توصیه می‌کنند، دست کم برای نمونه‌های تصادفی هر هفته یا هر ماه.

نسخه‌ی خارج از سایت با sync

روی PBS دوم (مثلاً در سایت پشتیبان) سرور اول را به عنوان remote اضافه کنید و یک sync job از نوع pull بسازید:

proxmox-backup-manager remote create pbs-main --host 192.0.2.20 --auth-id sync@pbs \
  --password 'SECRET' --fingerprint 64:d3:ff:...:ab:fe
proxmox-backup-manager sync-job create main-to-dr --remote pbs-main --remote-store store1 \
  --store store1 --schedule '02:30'
proxmox-backup-manager sync-job update main-to-dr --rate-in 20MiB
  • remove-vanished خاموش بماند: پیش فرض آن false است. اگر مهاجم سرور اول را بگیرد و بکاپ‌ها را پاک کند، با روشن بودن این گزینه پاک شدن به سرور دوم هم منتقل می‌شود.
  • کاربر sync@pbs روی سرور اول فقط دسترسی خواندن (مثلاً نقش DatastoreReader) داشته باشد؛ sync فقط گروه‌هایی را منتقل می‌کند که این کاربر می‌تواند بخواند.
  • جهت push: sync job می‌تواند از سرور اول به دوم push کند؛ مستندات برای هر push job یک remote و کاربر اختصاصی روی مقصد را توصیه می‌کنند. از PBS 4.2، push job می‌تواند snapshotهای رمز نشده را پیش از ارسال به مقصد کمتر قابل اعتماد رمزنگاری کند.
  • دیسک جداشدنی: روی دیسک USB یک removable datastore بسازید. sync job با گزینه‌ی run-on-mount هنگام وصل شدن دیسک اجرا می‌شود و با unmount-on-done بعد از پایان، دیسک را جدا می‌کند.

این ترکیب، نسخه‌ی دوم و نسخه‌ی خارج از سایت قاعده‌ی بکاپ ۳-۲-۱ را می‌سازد.

مشکلات رایج

  • 401 Unauthorized در apt update: مخزن enterprise بدون اشتراک فعال است؛ بخش مخزن no-subscription را انجام دهید.
  • خطای fingerprint در Proxmox VE: گواهی PBS عوض شده است؛ fingerprint تازه را با cert info بگیرید و با pvesm set pbs1 --fingerprint ... جایگزین کنید.
  • خطای دسترسی هنگام prune از Proxmox VE: token نقش DatastoreBackup دارد و حق حذف ندارد؛ Retention را روی Keep all بگذارید.
  • فضا بعد از prune آزاد نشد: GC اجرا نشده یا chunkها هنوز در مهلت ۲۴ ساعت و ۵ دقیقه هستند؛ GC بعدی را ببینید یا با proxmox-backup-manager garbage-collection start store1 دستی اجرا کنید.
  • ساخت datastore روی دیسک USB شکست می‌خورد: دیسک با فایل سیستم خانواده‌ی FAT فرمت شده است؛ آن را با ext4 یا xfs فرمت کنید.

قدم بعدی

اگر نصب Proxmox VE هنوز انجام نشده، نصب Proxmox VE را ببینید. بعد از اولین شب بکاپ، یک ماشین را با VMID جدید restore و بوت کنید و زمان واقعی بازیابی را یادداشت کنید؛ این عدد مبنای برنامه‌ی بازگشت از حادثه است.

منابع

  1. Proxmox Backup Server 4.2 released (press release) www.proxmox.com
  2. Proxmox Backup Server Roadmap pbs.proxmox.com
  3. Proxmox Backup Server Documentation — Installation pbs.proxmox.com
  4. Proxmox Backup Server Documentation — Backup Storage pbs.proxmox.com
  5. Proxmox Backup Server Documentation — User Management pbs.proxmox.com
  6. Proxmox Backup Server Documentation — Proxmox VE Integration pbs.proxmox.com
  7. Proxmox Backup Server Documentation — Maintenance Tasks pbs.proxmox.com
  8. Proxmox Backup Server Documentation — Managing Remotes & Sync pbs.proxmox.com
  9. Proxmox Backup Server Documentation — Backup Client Usage (Encryption) pbs.proxmox.com
  10. Proxmox Backup Server Documentation — Technical Overview pbs.proxmox.com
  11. Proxmox Backup Server Documentation — FAQ pbs.proxmox.com
  12. Proxmox Backup Server Documentation — Command Syntax pbs.proxmox.com
  13. Proxmox VE Administration Guide — Storage (Proxmox Backup Server backend) pve.proxmox.com
  14. Proxmox VE Administration Guide — Backup and Restore pve.proxmox.com
  15. Proxmox Backup Server ISO Downloads www.proxmox.com