من سرویس Docker را تحت استوریج overlay2 و با فایل سیستم XFS راه اندازی کردم، زمانیکه قصد دارم یک کانتینر با حجم دلخواه ایجاد کنم با خطای docker: Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option مواجه شدم.
خطای بالا میگه storage-opt فقط روی حالت overlay در سیستم فایل xfs ساپورت میشه. برای حل مشکل باید دایرکتوری / سرور را با گزینه ی pqouta مانت کنیم تا استوریج quota را به ازای container فعال کنیم. ابتدا با دستور docker info چک کنید که Storage Driver برابر با overlay2 هست یا نه؟ و اینکه Backing Filesystem تون هم باید روی xfs باشه.
در صورتیکه Filesystem برابر با ext4 هستش که اینجا داستان داره و باید فایل سیستم تون رو به xfs فرمت کنید حتما. اما اگر همه چیز اوکی هست دستور mount رو بزنید و xfs رو grep کنید :
در خطی که مربوط به دایرکتوری / هست اگر در انتهای خروجی noquota زده بود یعنی quota روی این سیستم فعال نیست و اگر این quota فعال نباشه من نمیتونم بخشی از هارد دیسک را در اختیار کانتینری که میخوام ایجاد کنم بذارم.
ابتدا یک بک آپ قبل از هر گونه تغییرات از سرور بگیرید. سپس برای فعال کردن quota فایل grub را از مسیر زیر باز کنید :
خطی که نوشته GRUB_CMDLINE_LINUX="" را به صورت زیر تغییر بدید و rootflags=uquota,pquota رو بین دو تا کوتیشن قرار بدید :
برای اعمال تغییرات بنا بر نوع توزیع لینوکسی که دارید یکی از دستورات زیر را وارد کنید :
روی Debian :
روی CentOS/Rocky Linux
در آخر سرور را جهت اعمال تغییرات reboot میکنیم. بعد از بالا آمدن سرور اگر مجددا دستور mount رو بزنید مشاهده میکنید که qouta روی دایرکتوری / شما فعال شده :
مجددا اگر دستور docker run جهت ایجاد کانتینر را وارد کنید، container شما با موفقیت ایجاد خواهد شد.
کد PHP:
root@docker:~# docker run -it --storage-opt size=250G debian /bin/bash
docker: Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option.
See 'docker run --help'.
خطای بالا میگه storage-opt فقط روی حالت overlay در سیستم فایل xfs ساپورت میشه. برای حل مشکل باید دایرکتوری / سرور را با گزینه ی pqouta مانت کنیم تا استوریج quota را به ازای container فعال کنیم. ابتدا با دستور docker info چک کنید که Storage Driver برابر با overlay2 هست یا نه؟ و اینکه Backing Filesystem تون هم باید روی xfs باشه.
کد PHP:
Storage Driver: overlay2
Backing Filesystem: xfs
در صورتیکه Filesystem برابر با ext4 هستش که اینجا داستان داره و باید فایل سیستم تون رو به xfs فرمت کنید حتما. اما اگر همه چیز اوکی هست دستور mount رو بزنید و xfs رو grep کنید :
کد PHP:
# mount | grep xfs
/dev/sda1 on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k, noquota)
در خطی که مربوط به دایرکتوری / هست اگر در انتهای خروجی noquota زده بود یعنی quota روی این سیستم فعال نیست و اگر این quota فعال نباشه من نمیتونم بخشی از هارد دیسک را در اختیار کانتینری که میخوام ایجاد کنم بذارم.
ابتدا یک بک آپ قبل از هر گونه تغییرات از سرور بگیرید. سپس برای فعال کردن quota فایل grub را از مسیر زیر باز کنید :
کد PHP:
# vim /etc/default/grub
خطی که نوشته GRUB_CMDLINE_LINUX="" را به صورت زیر تغییر بدید و rootflags=uquota,pquota رو بین دو تا کوتیشن قرار بدید :
کد PHP:
GRUB_CMDLINE_LINUX="rootflags=uquota,pquota"
برای اعمال تغییرات بنا بر نوع توزیع لینوکسی که دارید یکی از دستورات زیر را وارد کنید :
روی Debian :
کد PHP:
# grub-mkconfig -o /boot/grub/grub.cfg
روی CentOS/Rocky Linux
کد PHP:
# grub2-mkconfig -o /boot/grub2/grub.cfg
در آخر سرور را جهت اعمال تغییرات reboot میکنیم. بعد از بالا آمدن سرور اگر مجددا دستور mount رو بزنید مشاهده میکنید که qouta روی دایرکتوری / شما فعال شده :
کد PHP:
# mount | grep xfs
/dev/sda1 on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k, usrquota,prjquota)
مجددا اگر دستور docker run جهت ایجاد کانتینر را وارد کنید، container شما با موفقیت ایجاد خواهد شد.