BestChat

كيف تستفيد شركة المرام من الذاكرة العالية في سيرفرات بروكسموكس عبر تهيئة ZFS ARC Cache

في شركة المرام، نوظّف ذواكر RAM عالية (حتى 3 تيرابايت في بعض السيرفرات) لتمكين ZFS ARC Cache ضمن Proxmox VE، ما يسرّع قواعد البيانات والتطبيقات ويُطيل عمر الأقراص.

ما هو ZFS ARC Cache؟

  • ARC كاش ذكي داخل RAM يقلّل الاعتماد على الأقراص.
  • كلما زادت RAM، زاد حجم البيانات المُخزّنة في الذاكرة وسرعة القراءة.

Min و Max للـ ARC

  • ARC Min: الحد الأدنى الذي لا ينخفض عنه الكاش.
  • ARC Max: الحد الأقصى الذي لن يتجاوزه الكاش.
  • يتأرجح ARC ديناميكيًا بين القيمتين حسب ضغط الذاكرة.

النسبة الموصى بها من الذاكرة

  • عموماً: 25%–50% من RAM للـ ARC.
  • خادم تخزين بحت: حتى 60–70%.
  • خادم تطبيقات/قواعد بيانات/VMs: اكتفِ بـ 20–30%.

ضبط القيم الفورية (Runtime)

echo 19327352832 > /sys/module/zfs/parameters/zfs_arc_min   # 18 GiB
echo 38654705664 > /sys/module/zfs/parameters/zfs_arc_max   # 36 GiB

التثبيت الدائم باستخدام nano (modprobe)

  1. افتح الملف:
    nano /etc/modprobe.d/zfs-arc.conf
  2. أضف:
    options zfs zfs_arc_min=19327352832 zfs_arc_max=38654705664
  3. احفظ واخرج: Ctrl+O ثم Enter، وبعدها Ctrl+X.
  4. حدّث الإقلاع وأعد التشغيل:
    update-initramfs -u -k all
    reboot

???? بديل: تثبيت الإعداد عبر خدمة systemd

يمكنك تعديل ملف الخدمة الحالي ليضبط min وmax معًا. مثال (Min=64GiB, Max=128GiB):

nano /etc/systemd/system/set-arc-max.service
[Unit]
Description=Set ZFS ARC min=64G max=128G
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo 68719476736  > /sys/module/zfs/parameters/zfs_arc_min"
ExecStart=/bin/sh -c "echo 137438953472 > /sys/module/zfs/parameters/zfs_arc_max"

[Install]
WantedBy=multi-user.target

ثمّ:

systemctl daemon-reload
systemctl enable set-arc-max.service
systemctl restart set-arc-max.service

ملاحظة: تستطيع استبدال القيم بقيم أخرى مثل Min=18GiB (19327352832) و Max=36GiB (38654705664) وفقاً لحجم RAM ودور الخادم.

فحص الكاش (ARC) بسرعة

# إظهار الحدود:
cat /proc/spl/kstat/zfs/arcstats | egrep "c_min|c_max"

# الحجم المستخدم الآن:
cat /proc/spl/kstat/zfs/arcstats | grep "^size"

# ملخص سريع (GiB + نسبة):
C_MIN=$(grep "^c_min" /proc/spl/kstat/zfs/arcstats | awk '{print $3}')
C_MAX=$(grep "^c_max" /proc/spl/kstat/zfs/arcstats | awk '{print $3}')
SIZE=$(grep "^size[[:space:]]" /proc/spl/kstat/zfs/arcstats | awk '{print $3}')
printf "ARC Min : %.1f GiB\nARC Max : %.1f GiB\nARC Used: %.1f GiB (%.2f%%)\n" \
  "$(echo "$C_MIN/1073741824" | bc -l)" \
  "$(echo "$C_MAX/1073741824" | bc -l)" \
  "$(echo "$SIZE/1073741824" | bc -l)" \
  "$(echo "100*$SIZE/$C_MAX" | bc -l)"

# كفاءة الكاش:
H=$(grep '^hits' /proc/spl/kstat/zfs/arcstats | awk '{print $3}')
M=$(grep '^misses' /proc/spl/kstat/zfs/arcstats | awk '{print $3}')
echo "ARC Efficiency: $(echo "scale=2; 100*$H/($H+$M)" | bc -l) %"

سكربت تقرير شامل arc-report.sh

أضف سكربت جاهز يطبع Min/Max/Used/%/Efficiency، مع وضع مراقبة حيّة:

nano /usr/local/bin/arc-report.sh
#!/bin/bash
# ZFS ARC Detailed Report
command -v bc >/dev/null 2>&1 || { echo "bc مفقود: apt install -y bc"; exit 1; }
arc_stats="/proc/spl/kstat/zfs/arcstats"
getv(){ grep -E "^$1( |$)" "$arc_stats" | awk '{print $3}'; }
C_MIN=$(getv c_min); C_MAX=$(getv c_max)
SIZE=$(grep -E "^size[[:space:]]" "$arc_stats" | awk '{print $3}')
HITS=$(getv hits); MISSES=$(getv misses); TOTAL=$((HITS + MISSES))
USEDP=$(echo "scale=2; 100*$SIZE/$C_MAX" | bc -l)
EFF=$( [ "$TOTAL" -gt 0 ] && echo "scale=2; 100*$HITS/$TOTAL" | bc -l || echo "0")
echo "===== ZFS ARC Report ====="
printf "ARC Min       : %.1f GiB\n" "$(echo "$C_MIN/1073741824" | bc -l)"
printf "ARC Max       : %.1f GiB\n" "$(echo "$C_MAX/1073741824" | bc -l)"
printf "ARC Used      : %.1f GiB (%.2f%%)\n" "$(echo "$SIZE/1073741824" | bc -l)" "$USEDP"
printf "ARC Efficiency: %.2f %%\n" "$EFF"
printf "ARC Hits      : %'d\n" "$HITS"
printf "ARC Misses    : %'d\n" "$MISSES"
if [ "$1" = "-w" ]; then while sleep 2; do clear; "$0"; done; fi
chmod +x /usr/local/bin/arc-report.sh
# تقرير فوري:
arc-report.sh
# مراقبة حيّة:
arc-report.sh -w

فوائد تهيئة ARC Cache

  • ✅ تسريع قواعد البيانات (MariaDB/PostgreSQL) والتطبيقات (Laravel/Odoo/Elasticsearch).
  • ✅ تقليل عمليات القراءة/الكتابة على الأقراص → إطالة عمر HDD/SSD.
  • ✅ تقليل استهلاك الطاقة بفضل خفض I/O على الأقراص.
  • ✅ تجربة مستخدم أسرع وثابتة تحت الضغط.

???? مثال عملي من سيرفرات المرام

نوع السيرفر RAM ARC Min ARC Max نسبة من RAM كفاءة (Hits%) النتيجة
128 GiB 128 GiB 16 GiB 24 GiB 12–18% 95% أداء جيد للتطبيقات المتوسطة
256 GiB 256 GiB 32 GiB 128 GiB 50% 97% تسريع كبير لقواعد البيانات
512 GiB 512 GiB 64 GiB 192 GiB 37% 96% مثالي للأرشفة وElastic
Enterprise 3 TiB 128 GiB 1.5 TiB 50% 97–98% أداء فائق لآلاف المستخدمين

خاتمة

اعتماد المرام على ZFS ARC مع ضبط Min/Max عبر modprobe أو systemd ومراقبته بوساطة سكربت arc-report.sh، يضمن أداء أسرع، استقرار أعلى، وإطالة عمر الأقراص لعملائنا.

هل كانت المقالة مفيدة ؟ 0 أعضاء وجدوا هذه المقالة مفيدة (0 التصويتات)

Powered by WHMCompleteSolution