افزایش ظرفیت پارتیشن ها توی LVM

توی یه سرور RHEL که از LVM برای مدیریت دیسک و پارتیشن استفاده میشه، لازم شد که حجم رو افزایش بدیم. یه دیسک sdb داریم که میخایم به 2 تا پارتیشن اضافه اش کنیم. LVM این کار رو انجام میده بدون اینکه پارتیشن ها نیاز به فرمت داشته باشن و داده های قدیمی از دست برن. یه چیزی مثل سرویس های ابری که هر وقت بخایم منابع اضافه میکنیم.

قبل از افزایش حجم وضعیت اینطور بود:

همینطور که میبینید /home و / هر کدوم 40 گیگابایت هستن که باید زیاد بشن.

میبینیم که /dev/sdb به دیکسها اضافه شده اما پارتیشن بندی نشده.

همینطور که میبینیم sdb اصلا به هیچ volume group ای از LVM اضافه نشده پس معلومه که قابل استفاده است.

میبینیم که یه logical volume داریم vg0 که یه دونه pv هم داره که در واقع همون sda3 هست که قبلا دیدیم و بازم مطمثن شدیم که sdb استفاده نمیشه

یه نگاه مجدد به logical volume ها میندازیم.

با دستور بالا sdb رو به یه phisical volume تعریف کردیم که بتونیم توی LVM ازش استفاده کنیم. در وا

میبینیم که sdb اضافه شده.

حالا sdb رو به volume group vg0 اضافه میکنیم که بتونیم به logical volume ها اضافه اش کنیم.

همینطور که میبینیم اضافه شده. الان vg0 حدود یک ترابایت خالی داره.

حالا 512 گیگابایتش رو به / یا همون root اضافه کردیم.

از فضای خالی باقیمانده بقیه شو به /home اضافه کردیم.

همینطور که میبینید / و /home حجمشون زیاد شده.

ارور دسترسی روی gitlab

gitlab رو توی داکر بالا آوردم ولی بعضی از کاربران برای لاگین ارور 422 میگرفتن. بعد از بررسی متوجه شدم که باید از مسیر زیر کانفیگ رو تیک بزنیم که resource های خارجی هم بتونن دسترسی داشته باشن. چون gitlab رو روی داکر بالا میارید این وسط لودبالانسر قرار میگیره

Admin → Settings → Network → Outbound Requests 

برگه تقلب راه اندازی RabbitMQ و Celery روی داکر

برای بالا آوردن RabbitMQ و اجرای Celery به شرط تنظیمات درستش همین دستورات زیر کافیه:

راه اندازی RabbitMQ تو Docker

راه اندازی Celery:

راه اندازی مستقیم با جنگو

راه اندازی Celery beat

اکستنشن Celery beat

مانیتور flow

گشت و گذار اولیه توی داکر for inspection

دستورات اولیه کار با داکر و تنظیمات اولیه.

پیاده سازی gitlab بر روی داکر با پشتیبانگیری

برای پیاده سازی gitlab بر روی داکر از compose زیر استفاده کردم:

برای پشتیبانی گیری و برگرداندن بک آپ هم از کامند های زیر استفاده می شود:

پشتیبانگیری از کانتینر و volume داکر MySQL

یک اسکریپت نوشتم که هر روز از volume کانتینر MySQL پشتیبان بگیره و ذخیره کنه و برای تست هم خود کانتینر با volume اش رو پاک کردم و و دوباره بک آپ رو برگردوندم و تمامی جدول ها و داده های توی اون هم برگشت.

کامند پشتیبان گیری:

و با کامندهای زیر هم پشتیبان رو به روی کانتینر جدید برگردوندم:

لازمه که بدونیم که خود کانتینر با compose زیر ساخته شده و دو تا volume داره:

فایل Compose برای MySQL

میخایم یه کانتینر از MySQL بسازیم به صورتی که فایلهای دیتابیس شامل کانفیگ هاش توی یک volume ذخیره بشه.

برای این کار باید فایل compose به صورت زیر باشه:

مقایسه docker volume و bind mount

توی داکر به سه شکل میتونیم فایل ها رو با خود هاست داکر به اشتراک بزاریم. اگر یک کانتینر از بین بره طبیعتا تمامی داده های توی اون هم از بین میره و این خطرناکه.

داکر یک مکانیزم داره به اسم volume که اینها رو خود داکر مدیریت میکنه و اگر کانتینر خاموش بشه یا از بین بره میشه یه کانتینر دیگه بالا آورد که از اون استفاده کنه. البته بهتره قبل از پاک کردن کانتینر فعلی یکی دیگه بسازیم.

توی داکر میشه بجای volume از bind mount هم استفاده کرد. bind mount ساده است مثل اینکه یک فولدر رو بین کانتینر و هاست فعلی به اشتراک بزاریم.

حالت بعدی استفاده از tmpfs هست که فقط در صورتی که هاست لینوکس باشه قابل استفاده است. و این دیتا توی حافظه memory ذخیره میشه بنابراین دائمی نیست.

شمای کلی قابلیت های داکر در این زمینه توی عکس زیر معلومه:

پشتیبانگیری از docker containers

یکی از چالش هایی که برخوردیم پشتیبان گیری از سرویس هایی بود که روی داکر هستن. چند تا اپلیکیشن و یک دیتابیس داریم که هر کدوم توی یک container هستن. طبیعتا اگر container پاک بشه تمامی اون داده ها هم از بین می روند. برای اینکه این اتفاق نیوفته باید پشتیبان بگیریم.

data volume توی برای نگهداری دیتا خارج از فایل سیستم کانتینر هست. داکر هیچ وقت این data volume ها رو پاک نمیکنه مگر اینکه خودمون volume های مربوط به یک کانتینر رو باهاش پاک کنیم.

docker rm -v

اگر همه کانتینرهایی که با یک volume کار میکنن رو پاک کنیم، پاک کردن و دسترسی به اون volume سخت میشه. به این volume ها میگن dangling volume. برای اینکه dangling volume وجود نداشته باشه بهتره همیشه یک کانتینر مرتبط با اون volume بسازیم.

برای اینکه بک آپ کاملی داشته باشیم باید از موارد زیر پشتیبان بگیریم:

  • image های داکر
    • از کانتینرهای داکر
    • از volume های موجود