اگر با سرورهای ابری کار کرده باشید، حتماً به این نیاز برخوردهاید: فضای دیسک اولیه تمام شده و باید دیسک جدیدی به سرور اضافه کنید. در دنیای فیزیکی، این کار به معنای خرید هارد جدید و باز کردن کیس سرور است؛ اما در فضای ابری، راهحل استاندارد استفاده از دیسک بلاک است. دیسک بلاک یک حجم ذخیرهسازی مستقل است که میتوانید آن را به سرور خود متصل کنید، فرمت کنید و به عنوان یک پارتیشن جداگانه یا بخشی از یک حجم منطقی بزرگتر استفاده کنید. در این مقاله، قدمبهقدم یاد میگیرید که چگونه یک دیسک بلاک را به سرور ابری خود متصل کنید، آن را فرمت کنید، بهصورت دائمی مانت کنید و در نهایت حجم آن را بدون از دست دادن داده افزایش دهید.
دیسک بلاک چیست و چرا به آن نیاز دارید؟
دیسک بلاک (Block Storage) یک حجم ذخیرهسازی سطحپایین است که بهصورت یک دستگاه بلوکی (مانند /dev/vdb) به سرور شما متصل میشود. برخلاف فضای دیسک سیستمی که همراه با سرور ایجاد میشود، دیسک بلاک یک منبع مستقل است که میتوانید آن را بین سرورها جابهجا کنید، بهصورت جداگانه بکاپ بگیرید و بدون نیاز به تغییر در سیستمعامل، آن را بزرگتر کنید.
کاربردهای رایج دیسک بلاک عبارتند از:
- ذخیرهسازی دیتابیسهای حجیم (MySQL، PostgreSQL) جدا از دیسک سیستم
- نگهداری فایلهای آپلود شده کاربران و محتوای رسانهای
- فایلهای لاگ و بکاپ که نباید فضای دیسک اصلی را اشغال کنند
- انتقال داده بین سرورها بدون نیاز به کپی از طریق شبکه
نکته مهم: دیسک بلاک بهصورت پیشفرض خام (Raw) است و قبل از استفاده باید آن را فرمت کنید. اگر آن را بهدرستی در فایل /etc/fstab ثبت نکنید، بعد از ریاستارت سرور، دیسک از دسترس خارج میشود.
اتصال دیسک بلاک به سرور
بعد از ایجاد دیسک بلاک در پنل مدیریتی (مثلاً در سرویس ابری ServerNet)، باید آن را به سرور خود متصل کنید. این کار معمولاً از طریق پنل انجام میشود و بعد از اتصال، دیسک بهصورت یک دستگاه جدید در سیستم ظاهر میشود.
شناسایی دستگاه جدید
بعد از اتصال، ابتدا مطمئن شوید که سیستم دستگاه جدید را دیده است. در لینوکس، میتوانید از دستور زیر استفاده کنید:
lsblk
خروجی مشابه زیر خواهید دید:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 20G 0 disk
└─vda1 252:1 0 20G 0 part /
vdb 252:16 0 100G 0 disk
در این مثال، vdb دیسک بلاک جدید با ظرفیت 100 گیگابایت است. اگر دستگاه را نمیبینید، چند ثانیه صبر کنید و دوباره دستور را اجرا کنید. در برخی هایپروایزرها ممکن است نیاز به اسکن مجدد باس SCSI باشد:
echo "- - -" > /sys/class/scsi_host/host0/scan
خطای رایج: اشتباه گرفتن دستگاهها
قبل از هر اقدامی، مطمئن شوید که دستگاه درست را انتخاب کردهاید. اگر دیسک سیستمی (vda) را فرمت کنید، دادههای سرور خود را از دست میدهید. همیشه از lsblk استفاده کنید و اندازه دیسک را چک کنید تا مطمئن شوید دستگاه موردنظر شماست.
فرمتبندی و مانت دیسک بلاک
بعد از شناسایی دستگاه، باید آن را فرمت کنید. انتخاب فایلسیستم به نیاز شما بستگی دارد:
- ext4: گزینه پیشفرض و مطمئن برای اکثر کاربردهای عمومی
- xfs: مناسب برای فایلهای بزرگ و عملکرد بالا، اما کاهش حجم آن سخت است
- btrfs: امکانات پیشرفته مانند snapshot و compression داخلی
فرمتبندی با ext4
mkfs.ext4 /dev/vdb
این دستور یک فایلسیستم ext4 روی دیسک ایجاد میکند. اگر دیسک قبلاً استفاده شده و داده دارد، با پیام تأیید مواجه میشوید. دقت کنید که این عملیات همه دادههای دیسک را پاک میکند.
ایجاد دایرکتوری مانت و مانت موقت
mkdir -p /mnt/data
mount /dev/vdb /mnt/data
حالا میتوانید از دایرکتوری /mnt/data برای ذخیرهسازی استفاده کنید. اما این مانت موقت است و بعد از ریاستارت از بین میرود.
مانت دائمی با fstab
برای اینکه دیسک بعد از هر ریاستارت بهصورت خودکار مانت شود، باید آن را در فایل /etc/fstab ثبت کنید. ابتدا UUID دیسک را پیدا کنید:
blkid /dev/vdb
خروجی مشابه:
/dev/vdb: UUID="a1b2c3d4-..." TYPE="ext4"
سپس خط زیر را به انتهای /etc/fstab اضافه کنید:
UUID=a1b2c3d4-... /mnt/data ext4 defaults,nofail 0 2
گزینه nofail مهم است؛ اگر دیسک در دسترس نباشد، سرور همچنان بالا میآید و در حالت boot منتظر نمیماند. بعد از ویرایش، صحت فایل را با دستور زیر بررسی کنید:
mount -a
اگر خطایی وجود نداشت، فایلسیستم بهدرستی مانت میشود. در غیر این صورت، خطا را قبل از ریاستارت برطرف کنید.
خطای رایج: استفاده از نام دستگاه در fstab
هرگز از نام دستگاه (مثل /dev/vdb) در fstab استفاده نکنید. نام دستگاهها ممکن است بعد از ریاستارت تغییر کند (مثلاً به vdc تبدیل شود) و سیستم نتواند دیسک را مانت کند. همیشه از UUID استفاده کنید.
افزایش حجم دیسک بلاک بدون از دست دادن داده
یکی از مهمترین مزیتهای دیسک بلاک، امکان افزایش حجم آن بدون نیاز به حذف و ایجاد مجدد است. این کار در دو مرحله انجام میشود: افزایش حجم در پنل مدیریتی و سپس توسعه پارتیشن و فایلسیستم در سیستمعامل.
مرحله ۱: افزایش حجم در پنل
در پنل مدیریتی سرور ابری خود (مثلاً در ServerNet)، دیسک بلاک موردنظر را انتخاب کرده و گزینه افزایش حجم (Resize) را بزنید. اندازه جدید را وارد کنید (مثلاً از 100GB به 200GB) و عملیات را تأیید کنید. این کار معمولاً بدون قطعی انجام میشود و دیسک بهصورت داغ (Hot) بزرگ میشود.
مرحله ۲: توسعه پارتیشن در سیستمعامل
بعد از افزایش حجم در پنل، سیستمعامل هنوز اندازه جدید را نمیداند. ابتدا دستگاه را اسکن کنید:
partprobe /dev/vdb
سپس اندازه جدید را با lsblk بررسی کنید. حالا باید پارتیشن را بزرگ کنید. اگر دیسک را بدون پارتیشنبندی (مستقیم روی دستگاه) فرمت کردهاید، فقط کافی است فایلسیستم را توسعه دهید:
resize2fs /dev/vdb
اگر دیسک را با پارتیشنبندی (مثلاً /dev/vdb1) استفاده کردهاید، ابتدا پارتیشن را بزرگ کنید. از fdisk استفاده کنید:
fdisk /dev/vdb
داخل fdisk:
- دستور
pرا بزنید تا پارتیشنها را ببینید - دستور
dرا بزنید تا پارتیشن حذف شود (فقط پارتیشن، نه دادهها) - دستور
nرا بزنید و پارتیشن جدید با همان شماره و شروع قبلی ایجاد کنید - دستور
wرا بزنید تا تغییرات ذخیره شود
بعد از این کار، پارتیشن بزرگ شده است اما فایلسیستم هنوز کوچک است. حالا فایلسیستم را توسعه دهید:
resize2fs /dev/vdb1
در نهایت، اندازه جدید را بررسی کنید:
df -h /mnt/data
خطای رایج: فراموش کردن توسعه فایلسیستم
خیلی از کاربران بعد از افزایش حجم در پنل، انتظار دارند که فضا بلافاصله در دسترس باشد. اما تا زمانی که resize2fs اجرا نشود، سیستم همان اندازه قبلی را نشان میدهد. همیشه بعد از افزایش حجم در پنل، مراحل توسعه پارتیشن و فایلسیستم را کامل کنید.
مدیریت پیشرفته: ترکیب چند دیسک با LVM
اگر نیاز به ترکیب چند دیسک بلاک در یک حجم واحد دارید، از LVM (Logical Volume Manager) استفاده کنید. این کار به شما امکان میدهد چند دیسک را به یک حجم منطقی بزرگ تبدیل کنید و بعداً بدون توقف سرویس، دیسک جدید اضافه کنید.
ایجاد حجم فیزیکی و گروه حجمی
pvcreate /dev/vdb /dev/vdc
vgcreate vg_data /dev/vdb /dev/vdc
lvcreate -L 180G -n lv_data vg_data
سپس فایلسیستم را روی حجم منطقی ایجاد کنید:
mkfs.ext4 /dev/vg_data/lv_data
mkdir -p /mnt/data
mount /dev/vg_data/lv_data /mnt/data
برای مانت دائمی، از blkid /dev/vg_data/lv_data استفاده کنید و UUID را در fstab ثبت کنید.
افزایش حجم با LVM
وقتی فضای گروه حجمی تمام شد، دیسک جدیدی اضافه کنید و آن را به گروه حجمی بیفزایید:
pvcreate /dev/vdd
vgextend vg_data /dev/vdd
lvextend -L 280G /dev/vg_data/lv_data
resize2fs /dev/vg_data/lv_data
با این روش، میتوانید بهصورت نامحدود ظرفیت اضافه کنید بدون اینکه حتی یک لحظه سرویس شما قطع شود.
نکات نهایی و عیبیابی
در این بخش به چند نکته مهم اشاره میکنیم که در کار روزمره با دیسک بلاک به کارتان میآید:
- قبل از هر عملیات مهم (مثل افزایش حجم یا تغییر فایلسیستم)، از دادههای خود بکاپ بگیرید. دیسک بلاک را میتوانید بهصورت snapshot در پنل ذخیره کنید.
- اگر بعد از افزایش حجم،
resize2fsخطای "Device or resource busy" داد، دیسک را باumount /mnt/dataجدا کنید، عملیات را انجام دهید و دوباره مانت کنید. - برای دیتابیسهای سنگین، از فایلسیستم xfs استفاده کنید اما به یاد داشته باشید که کاهش حجم xfs تقریباً غیرممکن است.
- همیشه گزینه
nofailرا در fstab قرار دهید تا اگر دیسک در دسترس نبود، سرور بالا بیاید و شما بتوانید مشکل را برطرف کنید.
اگر از سرویس ابری ServerNet استفاده میکنید، میتوانید دیسک بلاک را بهسادگی از پنل مدیریتی ایجاد و به سرور خود متصل کنید و از همان ابتدا با رعایت نکات این مقاله، یک زیرساخت ذخیرهسازی منعطف و مقیاسپذیر داشته باشید.
مدیریت صحیح دیسک بلاک یکی از مهارتهای اساسی هر مدیر سرور ابری است. با تمرین این مراحل، میتوانید بدون نگرانی از از دست رفتن داده، فضای ذخیرهسازی خود را در هر زمان که نیاز داشتید افزایش دهید و از انعطافپذیری کامل زیرساخت ابری بهرهمند شوید.