مقدمه‌ای بر GlusterFS و نصب آن


مقدمه‌ای بر GlusterFS (سیستم فایل) و نصب آن بر روی RHEL/CentOS و Fedora

ما در جهانی زندگی می‌کنیم که داده‌ها به شکلی غیرقابل‌پیش‌بینی در حال افزایش هستند و نیاز داریم این داده‌ها، چه ساختارمند و چه غیرساختارمند، را به شکلی کارآمد ذخیره کنیم. سیستم‌های محاسباتی توزیع‌شده مزایای گسترده‌ای نسبت به سیستم‌های محاسباتی متمرکز ارائه می‌دهند. در این سیستم‌ها، داده‌ها به صورت توزیع‌شده در چندین گره به عنوان سرور ذخیره می‌شوند.

GlusterFS Storage

ذخیره‌سازی GlusterFS

مفهوم سرور متادیتا در سیستم فایل توزیع‌شده دیگر موردنیاز نیست. در سیستم‌های فایل توزیع‌شده، دیدگاهی مشترک از تمام فایل‌هایی که بین سرورهای مختلف توزیع شده‌اند، ارائه می‌شود. فایل‌ها/پوشه‌ها در این سرورهای ذخیره‌سازی به روش‌های معمول قابل دسترسی هستند.

برای مثال، مجوزهای دسترسی به فایل‌ها/پوشه‌ها می‌توانند مانند مدل استاندارد مجوزهای سیستمی، یعنی مالک، گروه و دیگران، تنظیم شوند. دسترسی به سیستم فایل اساساً به نحوه طراحی پروتکل خاص برای عملکرد آن بستگی دارد.

GlusterFS چیست؟

GlusterFS یک سیستم فایل توزیع‌شده است که برای استفاده در فضای کاربری تعریف شده است، یعنی سیستم فایل در فضای کاربری (FUSE). این یک سیستم فایل مبتنی بر نرم‌افزار است که به دلیل انعطاف‌پذیری خود شناخته می‌شود.

به شکل زیر نگاه کنید که به صورت شماتیک جایگاه GlusterFS را در یک مدل سلسله‌مراتبی نشان می‌دهد. به طور پیش‌فرض، پروتکل TCP توسط GlusterFS استفاده می‌شود.

GlusterFS Design

طراحی GlusterFS

مزایای GlusterFS

  • نوآوری: حذف متادیتا و بهبود چشمگیر عملکرد که به یکپارچه‌سازی داده‌ها و اشیاء کمک می‌کند.
  • انعطاف‌پذیری: سازگاری با افزایش و کاهش حجم داده‌ها.
  • مقیاس‌پذیری خطی: قابلیت دسترسی به پتابایت‌ها و فراتر از آن.
  • سادگی: مدیریت آسان و مستقل از کرنل در حالی که در فضای کاربری اجرا می‌شود.

چه چیزی GlusterFS را در میان سایر سیستم‌های فایل توزیع‌شده متمایز می‌کند؟

  • مقیاس‌پذیر: نبود سرور متادیتا، سیستم فایل را سریع‌تر می‌کند.
  • مقرون‌به‌صرفه: بر روی سخت‌افزارهای معمولی قابل پیاده‌سازی است.
  • انعطاف‌پذیر: همان‌طور که قبلاً گفته شد، GlusterFS یک سیستم فایل صرفاً نرم‌افزاری است. داده‌ها در سیستم‌های فایل بومی مانند ext4، xfs و غیره ذخیره می‌شوند.
  • متن‌باز: در حال حاضر، GlusterFS توسط شرکت Red Hat Inc، یک شرکت متن‌باز چندمیلیارد دلاری، به عنوان بخشی از Red Hat Storage نگهداری می‌شود.

مفاهیم ذخیره‌سازی در GlusterFS

  • Brick: هر پوشه‌ای که برای اشتراک‌گذاری در میان مجموعه ذخیره‌سازی مورد اعتماد در نظر گرفته شده است.
  • Trusted Storage Pool: مجموعه‌ای از فایل‌ها/پوشه‌های به اشتراک گذاشته شده که بر اساس پروتکل طراحی‌شده عمل می‌کنند.
  • Block Storage: دستگاه‌هایی که داده‌ها از طریق آن‌ها به صورت بلوک در سیستم‌ها جابه‌جا می‌شوند.
  • Cluster: در Red Hat Storage، مفهوم کلاستریا مجموعه ذخیره‌سازی مورد اعتماد، به معنای همکاری سرورهای ذخیره‌سازی بر اساس پروتکل تعریف‌شده است.
  • سیستم فایل توزیع‌شده: سیستمی که داده‌ها در آن بین گره‌های مختلف توزیع شده و کاربران می‌توانند بدون دانستن مکان واقعی فایل به آن دسترسی پیدا کنند. کاربر احساس دسترسی از راه دور را تجربه نمی‌کند.
  • FUSE: ماژول کرنلی قابل بارگذاری که به کاربران اجازه می‌دهد سیستم‌های فایل را بدون دخالت در کد کرنل ایجاد کنند.
  • glusterd: دیمن مدیریت GlusterFS که ستون فقرات سیستم 파일 است و در تمام مدت زمانی که سرورها فعال هستند، اجرا می‌شود.
  • POSIX: رابط سیستم‌عامل قابل‌حمل (POSIX) مجموعه‌ای از استانداردها است که توسط IEEE برای سازگاری بین انواع مختلف یونیکس در قالب رابط برنامه‌نویسی کاربردی (API) تعریف شده است.
  • RAID: آرایه اضافی دیسک‌های مستقل (RAID) فناوری‌ای است که قابلیت اطمینان ذخیره‌سازی را از طریق افزونگی افزایش می‌دهد.
  • Subvolume: یک Brick که حداقل توسط یک مترجم پردازش شده است.
  • Translator: کدی که اقدامات اولیه آغازشده توسط کاربر از نقطه اتصال را انجام می‌دهد. این کد یک یا چند زیرحجم را به هم متصل می‌کند.
  • Volume: مجموعه‌ای منطقی از Brickها. تمام عملیات‌ها بر اساس انواع مختلف حجم‌هایی که توسط کاربر ایجاد شده‌اند، انجام می‌شوند.

انواع مختلف حجم‌ها

نمایش انواع مختلف حجم‌ها و ترکیب‌هایی از این انواع حجم‌های پایه نیز به صورت زیر مجاز است:

  • حجم توزیع‌شده
  • حجم تکرارشده
  • حجم نواری
  • حجم توزیع‌شده-تکرارشده

نصب GlusterFS در RHEL/CentOS و Fedora

در این مقاله، ما GlusterFS را برای اولین بار نصب و پیکربندی می‌کنیم تا دسترسی بالا به ذخیره‌سازی فراهم شود. برای این منظور، دو سرور را برای ایجاد حجم‌ها و تکرار داده‌ها بین آن‌ها در نظر می‌گیریم.
Distributed Volume

Replicated Volume

Striped Volume

Distributed Replicated Volume

مرحله ۱: داشتن حداقل دو گره

  • CentOS 6.5 (یا هر سیستم‌عامل دیگر) را روی دو گره نصب کنید.
  • نام‌های میزبان را به صورت “server1” و “server2” تنظیم کنید.
  • اتصال شبکه‌ای فعال.
  • دیسک ذخیره‌سازی در هر دو گره با نام “/data/brick”.

مرحله ۲: فعال کردن مخازن EPEL و GlusterFS

قبل از نصب GlusterFS روی هر دو سرور، باید مخازن EPEL و GlusterFS را برای رفع وابستگی‌های خارجی فعال کنیم. از لینک زیر برای نصب و فعال‌سازی مخزن EPEL در هر دو سیستم استفاده کنید: [نحوه فعال‌سازی مخزن EPEL در RHEL/CentOS]

سپس، مخزن GlusterFS را در هر دو سرور فعال کنید:

# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

مرحله ۳: نصب GlusterFS

نرم‌افزار را روی هر دو سرور نصب کنید:

# yum install glusterfs-server

دیمن مدیریت GlusterFS را راه‌اندازی کنید:

# service glusterd start

وضعیت دیمن را بررسی کنید:

# service glusterd status

خروجی نمونه:

service glusterd start
service glusterd status
glusterd.service – LSB: glusterfs server
Loaded: loaded (/etc/rc.d/init.d/glusterd)
Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago
Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/glusterd.service
├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid
├ 19304 /usr/sbin/glusterfsd –xlator-option georep-server.listen-port=24009 -s localhost…
└ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/…

مرحله ۴: پیکربندی SELinux و iptables

فایل /etc/sysconfig/selinux را باز کنید و SELinux را در هر دو سرور به حالت “permissive” یا “disabled” تغییر دهید. فایل را ذخیره کرده و ببندید:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# mls – Multi Level Security protection.
SELINUXTYPE=targeted

سپس، iptables را در هر دو گره خالی کنید یا دسترسی به گره دیگر را از طریق iptables مجاز کنید:

# iptables -F

مرحله ۵: پیکربندی مجموعه ذخیره‌سازی مورد اعتماد

دستور زیر را روی ‘Server1’ اجرا کنید:

gluster peer probe server2

دستور زیر را روی ‘Server2’ اجرا کنید:

gluster peer probe server1

توجه: پس از اتصال این مجموعه، فقط کاربران مورد اعتماد می‌توانند سرورهای جدید را به این مجموعه اضافه کنند.

مرحله ۶: راه‌اندازی حجم GlusterFS

در هر دو سرور server1 و server2:

# mkdir /data/brick/gv0

حجم را روی یکی از سرورها ایجاد کرده و آن را راه‌اندازی کنید. در اینجا، من از ‘Server1’ استفاده کرده‌ام:

# gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0
# gluster volume start gv0

سپس، وضعیت حجم را تأیید کنید:

# gluster volume info

توجه: اگر حجم راه‌اندازی نشود، پیام‌های خطا در /var/log/glusterfs در یکی یا هر دو سرور ثبت می‌شوند.

مرحله ۷: تأیید حجم GlusterFS

حجم را به یک پوشه در /mnt متصل کنید:

# mount -t glusterfs server1:/gv0 /mnt

اکنون می‌توانید فایل‌ها را در نقطه اتصال ایجاد یا ویرایش کنید و به صورت یکپارچه از سیستم فایل استفاده کنید.

ویژگی‌های GlusterFS

  • خودترمیمی: اگر یکی از Brickها در یک حجم تکرارشده از کار بیفتد و کاربران فایل‌ها را در Brick دیگر تغییر دهند، دیمن خودترمیمی به محض فعال شدن دوباره Brick، به طور خودکار تغییرات انجام‌شده در زمان قطعی را همگام‌سازی می‌کند.
  • تعادل مجدد: اگر یک Brick جدید به یک حجم موجود که حاوی حجم زیادی داده است اضافه شود، می‌توان عملیات تعادل مجدد را انجام داد تا داده‌ها بین تمام Brickها، از جمله Brick جدید، توزیع شود.
  • تکرار جغرافیایی: این ویژگی نسخه‌های پشتیبان داده‌ها را برای بازیابی در برابر بلایا فراهم می‌کند. در اینجا مفهوم حجم‌های اصلی و فرعی مطرح می‌شود. اگر حجم اصلی از کار بیفتد، تمام داده‌ها از طریق حجم فرعی قابل دسترسی هستند. این ویژگی برای همگام‌سازی داده‌ها بین سرورهای جغرافیایی جدا از هم استفاده می‌شود. شروع یک جلسه تکرار جغرافیایی نیازمند مجموعه‌ای از دستورات gluster است.

✍️ نویسنده: حسین سیلانی

🔗 درباره من: seilany.ir

📢 نویسندگی و مشارکت در وبلاگ: t.me/seilany