اتصال و mount دیسک (Volume) ابر آریانت
دیسک جدا (Volume) فضای ذخیرهسازی بلاکی است که جدا از سرور ساخته و به آن وصل میشود. برای دادههایی که باید از خود سرور مستقل باشند مناسب است: فایلهای آپلودی، پایگاه داده، دادهی کانتینرها یا نسخههای پشتیبان. دیسک را میتوانید از یک سرور جدا و به سرور دیگری در همان دیتاسنتر وصل کنید و حجمش را بدون از دست دادن داده بزرگ کنید.
در این آموزش یک دیسک میسازید و وصل میکنید، آن را فرمت و بهصورت دائمی mount میکنید، و پس از افزایش حجم، فایلسیستم را بزرگ میکنید.
پیشنیازها
- یک سرور ابری با Ubuntu 24.04 (یا 22.04) و کاربر sudo
- برای بخش CLI: CLI آریانت با توکن دارای دسترسی
cloud:servers:write
حجم دیسک بین ۱۰ تا ۱۰۲۴۰ گیگابایت است و فقط افزایش حجم ممکن است. دیسک بر اساس حجم ساعتی هزینه دارد و پس از حذف سرور میماند و هزینهاش ادامه دارد تا خودتان حذفش کنید.
۱. ساخت و اتصال دیسک
در پنل: در صفحهی سرور، زبانهی «دیسکها» دیسک جدا بسازید و وصل کنید، یا از منوی ابر «ذخیرهسازی ← دیسکها» دیسک بسازید و به سرور وصل کنید.
با CLI:
# create a 50 GB volume and attach it to server 12 (same datacenter)
arianet cloud volumes create --name data --size 50 --server 12 --wait
# or attach an existing volume
arianet cloud volumes attach <volume-id> --server 12 --wait
اطلاعات دیسک، از جمله مسیر دستگاه در سرور:
arianet cloud volumes get <volume-id>
فیلد device مسیر پایدار دستگاه داخل سرور است (برای دیسکهای virtio؛ برای scsi خالی است) و device_id_prefix بخشی از شناسهی دیسک است که در serial و نام آن در /dev/disk/by-id/ دیده میشود.
۲. پیدا کردن دیسک در سرور
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,SERIAL
ls -l /dev/disk/by-id/
دیسک تازه با حجمی که ساختید و بدون MOUNTPOINTS دیده میشود؛ معمولاً /dev/vdb (روی virtio) یا /dev/sdb (روی scsi). در ادامه فرض میکنیم /dev/vdb است؛ نام را با خروجی خودتان عوض کنید.
نام دستگاه را دقیق بررسی کنید. mkfs روی دیسک اشتباه (مثلاً دیسک اصلی /dev/vda) همهی دادهها را پاک میکند.
۳. بررسی خالی بودن و فرمت
sudo blkid /dev/vdb || echo "no filesystem"
- اگر خروجی
no filesystemبود، دیسک خالی است؛ فرمتش کنید. - اگر
TYPE="ext4"یاTYPE="xfs"نوشت، دیسک فایلسیستم دارد (مثلاً قبلاً روی سرور دیگری استفاده شده یا هنگام ساخت فایلسیستم انتخاب کردهاید). فرمت نکنید و به مرحلهی ۴ بروید.
فرمت دیسک خالی با ext4، روی کل دیسک و بدون پارتیشن (بزرگ کردن بعدی سادهتر میشود):
sudo mkfs.ext4 -L data /dev/vdb
برای XFS: sudo mkfs.xfs -L data /dev/vdb (بستهی xfsprogs).
۴. mount موقت
sudo mkdir -p /mnt/data
sudo mount /dev/vdb /mnt/data
df -h /mnt/data
۵. mount دائمی با fstab
نامهایی مثل /dev/vdb ممکن است پس از اتصال دیسکهای دیگر عوض شوند، پس در fstab از UUID فایلسیستم استفاده کنید:
UUID=$(sudo blkid -s UUID -o value /dev/vdb)
echo "UUID=$UUID /mnt/data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
گزینهی nofail مهم است: اگر روزی دیسک جدا شده باشد، سرور به جای گیر کردن در حالت emergency، بدون آن بوت میشود. برای XFS به جای ext4 بنویسید xfs.
fstab را بدون ریاستارت آزمایش کنید:
sudo umount /mnt/data
sudo systemctl daemon-reload
sudo mount -a
sudo findmnt --verify
findmnt /mnt/data
اگر mount -a خطا نداد و findmnt /mnt/data دیسک را نشان داد، پس از ریاستارت هم mount میشود. در پایان یک بار sudo reboot کنید و دوباره df -h /mnt/data را ببینید.
دسترسی به کاربر خودتان (اختیاری):
sudo chown $USER:$USER /mnt/data
۶. بزرگ کردن دیسک
حجم دیسک را با CLI افزایش دهید (یا با POST /volumes/{id}/actions/resize در وب سرویس ابر، یا با تغییر size در منبع arianet_volume در Terraform):
arianet cloud volumes resize <volume-id> --size 100 --wait
سپس در سرور:
lsblk /dev/vdb # should show the new size
اگر حجم جدید دیده نشد، دستگاه را دوباره بخوانید (نام vdb را با دیسک خودتان عوض کنید):
echo 1 | sudo tee /sys/class/block/vdb/device/rescan
فایلسیستم را بدون unmount بزرگ کنید:
# ext4 on the whole disk
sudo resize2fs /dev/vdb
# xfs (takes the mount point)
sudo xfs_growfs /mnt/data
df -h /mnt/data
اگر روی دیسک پارتیشن ساختهاید (مثلاً /dev/vdb1)، اول پارتیشن را بزرگ کنید: sudo growpart /dev/vdb 1 (بستهی cloud-guest-utils) و سپس sudo resize2fs /dev/vdb1.
۷. جدا کردن دیسک
- سرویسهایی که از دیسک استفاده میکنند را متوقف کنید.
sudo umount /mnt/data- اگر دیسک را برنمیگردانید، خط آن را از
/etc/fstabپاک کنید. arianet cloud volumes detach <volume-id>یا از پنل.
خطاهای رایج
| خطا | راهحل |
|---|---|
wrong fs type, bad option, bad superblock | دیسک فرمت نشده یا نوع فایلسیستم در دستور یا fstab اشتباه است. sudo blkid /dev/vdb را ببینید. |
target is busy هنگام umount | پردازشی از دیسک استفاده میکند: sudo lsof +f -- /mnt/data. از پوشهی /mnt/data هم خارج شوید (cd ~). |
| سرور پس از جدا کردن دیسک بوت نمیشود | خط fstab بدون nofail است. از کنسول پنل وارد شوید (یا حالت نجات) و خط را اصلاح کنید. |
پس از resize، df حجم قبلی را نشان میدهد | فایلسیستم را بزرگ نکردهاید؛ resize2fs یا xfs_growfs را اجرا کنید. |
| دیسک به سرور وصل نمیشود | دیسک و سرور باید در یک دیتاسنتر باشند و دیسک نباید به سرور دیگری وصل باشد (already_attached). |
نسخهی پشتیبان دیسک
اسنپشات سرور ابری کپی دیسک اصلی سرور است. برای دادههای مهم روی دیسک جدا، نسخهی پشتیبان جداگانه بگیرید (اسنپشات، پشتیبانگیری و بازگردانی).
قدم بعدی
دیسک خود را بسازید
در ابر آریانت دیسک جدا تا ۱۰ ترابایت بسازید، هر وقت لازم شد بزرگش کنید و فقط برای ساعتهایی که وجود دارد هزینه بدهید. در پنل آریانت به «سرور ابری / Cloud Computing ← ذخیرهسازی ← دیسکها» بروید.