مرحبا بالجميع!
في هذه المقالة سوف نتحدث عن كيفية أتمتة مهمة توسيع مساحة القرص على أحد خوادمنا. وما هو الصعوبة في هذه المهمة البسيطة التي اضطررت إلى تنفيذها تلقائيًا - تسأل؟ لا شيء إذا كنت لا تستخدم تصاعد المدمجة المتتالية. أشعر أن هناك المزيد من الأسئلة! حسناً ، دعنا نذهب تحت القط.
أولاً ، سوف أخبرك عن سبب استخدامنا للتركيب المتكامل المتتالي.
لدينا نظام واحد يحتاج إلى تخزين للملفات الصغيرة (فحص المستندات ، إلخ). متوسط حجم الملف هو من 200 كيلو بايت إلى 1 ميجابايت ، والبيانات ثابتة ، لا يتغير. هناك مليارات الملفات الموجودة فيه ويتزايد العدد كل يوم. مرة واحدة ، عندما كان حجم وحدة التخزين يتجاوز بالفعل 6 تيرابايت ، أدركنا أن المشاكل ستبدأ قريبًا ، أحدها كان وقت النسخ الاحتياطي والاسترداد. ثم قررنا تقسيم البيانات إلى أقراص ، وتم استدعاء UnionFS لمساعدتنا في ذلك.
تم تحديد الخوارزمية على النحو التالي: تتم كتابة البيانات على القرص لا يزيد عن 2 تيرابايت ، عندما ينتهي نضيف قرصًا جديدًا إلى الجهاز الظاهري ، وضع علامة عليه ، إضافته إلى UnionFS ، نقل القرص القديم إلى ReadOnly ، إزالة نسخة منه ، الكتابة إلى الشريط ، إزالته من النسخة الاحتياطية عبر الإنترنت.
كما فهمت بالفعل ، فإن هذه الخوارزمية تتطلب اهتمامًا كبيرًا من المسؤول - لا تتوفر أي حركة حرجة وتخزين. لذلك ، قررنا استبعاد العامل البشري تمامًا وتذكرنا أن لدينا ZABBIX ، والذي يمكنه التعامل جيدًا مع هذا الأمر بأنفسنا إذا أضفنا القليل من سحر PowerShell و Bash إلى الخوارزمية.
الآن حول كيفية القيام بذلك.
في Zabbix ، يتم تكوين مشغل للمساحة الحرة ويتم إنشاء زر للوضع اليدوي:

عندما يتم تشغيل المشغل ، يتم تشكيل مهمة في sheduler لخادم الروبوت والتي توجد عليها جميع برامج التشغيل الآلي:
Powershell.exe "Enable-ScheduledTask \PROD_TASKS\Add_HDD_OS0226”
في الوقت المحدد ، يتم تشغيل البرنامج النصي على الخادم والذي:
يضيف القرص إلى الجهاز المرغوب فيه:
(في نفس الوقت يختار الحجم الأكثر حرية) $vm = Get-VM -Name $vmName New-HardDisk -VM $vm -CapacityGB $newHDDCapacity -Datastore $datastoreName –ThinProvisioned
يبحث عن تفاصيل وصول الخادم:
OFFTopنستخدم مستودعًا مخصصًا لتفاصيل الوصول استنادًا إلى TeamPass ، لذلك يعثر البرنامج النصي على الخادم المطلوب في النظام ويتلقى تفاصيله تلقائيًا. يتم ذلك لأننا نقوم كل شهر بتغيير كل كلمات المرور تلقائيًا ، ولكن هذا موضوع مقالة منفصلة
#Generate TeamPass API request string $vmTPReq = " TeamPass" #Send request to TeamPass $vmCreds = Invoke-WebRequest($vmTPReq) -UseBasicParsing | ConvertFrom-Json #Convert credentials $credential = New-Object System.Management.Automation.PSCredential($vmCreds.login,(ConvertTo-SecureString $vmCreds.pw -asPlainText -Force))
يأتي على SSH:
#Create partition & FS, mount disk to directory, edit fstab...etc. New-SSHSession -ComputerName $vmCreds.url -Credential $credential -Verbose -AcceptKey:$true $results = Invoke-SSHCommand -SessionId 0 -Command "/mnt/autodoit.sh" Remove-SSHSession -Index 0 -Verbose
وضع علامة عليها وإضافتها إلى حامل UnionFS:
لسوء الحظ ، في وقت كتابة هذا التقرير ، لم نحل العديد من المشكلات المتعلقة بالإنشاء التلقائي للمهام في VEEAM لأرشفة القرص القديم وكتابته على شريط ، لذلك لا يزال يتم ذلك يدويًا. ولكن سنقوم بالتأكيد بتحديث البرنامج النصي بمجرد أن نحل بعض المشاكل.
أرسلت بواسطة فيتالي
روزمان (
PBCVIT ).
تم استعارة جزء من التعليمات البرمجية لمصفوفات الإلتصاق ، وتم حفظ روابط المؤلف في الكود.
لا توجد شكاوى ضد UnionFS ؛ فهي تعمل بثبات لأكثر من عامين.
السؤال عن سبب تنظيم التخزين بشكل عام هو بلاغي عام ، فقط تقبله كما هو.
يرجى ملاحظة أنه يجب استخدام أنواع مختلفة من تعيين محرك الأقراص لأنظمة مختلفة. لذلك كن حذرًا وستأتي القوة معك.