XFS_QUOTA(8) دستورات مدیریت سیستم XFS_QUOTA(8)

xfs_quota - مدیریت و پایش سهمیه‌بندی دیسک در سیستم پرونده XFS

xfs_quota [ -x ] [ -f ] [ -p prog ] [ -c cmd ] ... [ -d project ] ... [ -D projects_file ] [ -P projid_file ] [ path ... ]
xfs_quota -V

دستور xfs_quota ابزاری جامع برای مدیریت، اعمال و گزارش‌گیری سهمیه‌بندی (Quota) کاربر، گروه و پروژه در سیستم‌های پرونده XFS است.

گزینه‌های xfs_quota عبارتند از:

دستورات xfs_quota می‌توانند به‌صورت تعاملی (پیش‌فرض) یا به عنوان آرگومان در خط فرمان اجرا شوند. چندین آرگومان -c می‌تواند مشخص شود. دستورات به همان ترتیبی که داده شده‌اند اجرا می‌شوند و سپس برنامه خارج می‌شود.
نام برنامه را برای اعلان‌ها (پرامپت) و برخی پیام‌های خطا تنظیم می‌کند؛ مقدار پیش‌فرض xfs_quota است.
حالت کارشناس (expert mode) را فعال می‌کند. تمام دستورات مدیریتی (بخش «دستورات مدیر سیستم» در زیر را ببینید) که امکان ایجاد تغییرات در سیستم سهمیه‌بندی را فراهم می‌کنند، تنها در حالت کارشناس در دسترس هستند.
حالت سیستم پرونده خارجی (غیر XFS) را فعال می‌کند. تعداد محدودی از دستورات کاربری و مدیریتی برای استفاده در برخی سیستم‌های پرونده خارجی در دسترس هستند.
نام پروژه‌ها یا شناسه‌های عددی می‌توانند با این گزینه مشخص شوند که خروجی دستورات منفرد xfs_quota را به مجموعه پروژه‌های مشخص‌شده محدود می‌کند. چندین آرگومان -d می‌تواند مشخص شود.
پرونده‌ای شامل نگاشت شناسه‌های عددی پروژه به درخت‌های دایرکتوری را مشخص می‌کند. در صورت مشخص نشدن این گزینه، به‌طور پیش‌فرض /etc/projects است.
پرونده‌ای شامل نگاشت شناسه‌های عددی پروژه به نام پروژه‌ها را مشخص می‌کند. در صورت مشخص نشدن این گزینه، به‌طور پیش‌فرض /etc/projid است.
شماره نسخه را چاپ کرده و خارج می‌شود.

آرگومان یا آرگومان‌های اختیاری path می‌توانند برای مشخص کردن نقاط اتصال (mount points) یا پرونده‌های دستگاه که سیستم‌های پرونده XFS را مشخص می‌کنند، استفاده شوند. در این صورت خروجی دستورات منفرد xfs_quota به مجموعه سیستم‌های پرونده مشخص‌شده محدود خواهد شد.

این صفحه راهنما به دو بخش تقسیم شده است: نخست، اطلاعات برای کاربران سیستم‌های پرونده با سهمیه‌بندی فعال، و دستورات xfs_quota مورد نیاز این کاربران؛ و سپس اطلاعاتی که تنها برای مدیران سیستم‌های پرونده XFS دارای سهمیه‌بندی مفید است و دستورات سهمیه‌بندی که اجازه تغییر در سیستم سهمیه‌بندی را می‌دهند.

توجه داشته باشید که تقریباً میان تمامی دستورات منفرد شرح داده شده در زیر، گزینه‌هایی برای مشخص کردن انواع سهمیه‌بندی مورد نظر مشترک است: سهمیه کاربر (-u)، سهمیه گروه (-g)، و/یا سهمیه پروژه (-p). همچنین چندین دستور گزینه‌هایی برای اعمال روی «بلاک‌های مصرف‌شده» (-b)، «آی‌نودهای مصرف‌شده» (-i)، و/یا «بلاک‌های بی‌درنگ (realtime) مصرف‌شده» (-r) ارائه می‌دهند.

بسیاری از دستورات همچنین دارای راهنمای آنلاین مفصل هستند. از دستور help برای دریافت جزئیات بیشتر در مورد هر دستور استفاده کنید.

در بیشتر محیط‌های محاسباتی، فضای دیسک نامحدود نیست. زیرسیستم سهمیه‌بندی سازوکاری را برای کنترل استفاده از فضای دیسک فراهم می‌کند. سهمیه‌ها می‌توانند برای هر کاربر مجزا بر روی هر یک از/تمامی سیستم‌های پرونده محلی تنظیم شوند. زیرسیستم سهمیه‌بندی هنگامی که کاربران از حد تعیین‌شده خود فراتر می‌روند به آن‌ها هشدار می‌دهد، اما مقداری فضای اضافی برای کارهای جاری در نظر می‌گیرد (حد سخت / حد نرم). علاوه بر این، سیستم‌های پرونده XFS با غیرفعال بودن اعمال محدودیت می‌توانند به عنوان یک سیستم کارآمد برای حسابداری مصرف دیسک استفاده شوند.

برای بیشتر کاربران، سهمیه‌بندی دیسک یا موضوعی بی‌اهمیت است یا واقعیتی اجتناب‌ناپذیر در زندگی کاری. دو نوع سهمیه ممکن است اعمال شود: محدودیتی روی مقدار فضایی که یک کاربر می‌تواند اشغال کند، و محدودیتی روی تعداد پرونده‌ها (آی‌نودها) که می‌تواند در مالکیت داشته باشد.

دستور quota اطلاعات مربوط به سهمیه‌های تنظیم‌شده توسط مدیران سیستم و مصرف کنونی را ارائه می‌دهد.

برای هر محدودیت چهار عدد وجود دارد: مصرف کنونی، حد نرم (quota)، حد سخت و محدودیت زمانی (مهلت). حد نرم تعداد بلاک‌های ۱ کیلوبایتی (یا پرونده‌هایی) است که انتظار می‌رود کاربر زیر آن باقی بماند. از حد سخت نمی‌توان فراتر رفت. اگر مصرف کاربر به حد سخت برسد، درخواست‌های بعدی برای فضا (یا تلاش برای ایجاد یک پرونده) با خطای «Quota exceeded» (یا EDQUOT) شکست می‌خورند.

هنگامی که کاربر از حد نرم فراتر می‌رود، زمان‌سنج (تایمر مهلت) فعال می‌شود. هر زمان که مصرف به زیر حد نرم کاهش یابد، زمان‌سنج غیرفعال می‌شود. اگر زمان‌سنج منقضی شود، با محدودیت فراتر رفته طوری رفتار می‌شود که گویی به حد سخت رسیده است و منابع بیشتری به کاربر اختصاص داده نمی‌شود. تنها راه بازنشانی این وضعیت، فارغ از غیرفعال کردن اعمال محدودیت یا افزایش حد، کاهش میزان مصرف به زیر حد سهمیه است. تنها کاربر ارشد (یعنی فرآیندی با دسترسی‌های کافی) می‌تواند محدودیت‌های زمانی را تنظیم کند و این کار بر مبنای هر سیستم پرونده انجام می‌شود.

در بیشتر موارد، تنها راه برای بازیابی کاربر از شرایط بیش از سهمیه، لغو هر فعالیتی است که روی سیستم پرونده در جریان است، حذف پرونده‌های کافی برای رساندن مصرف به زیر سهمیه، و تلاش مجدد برای اجرای برنامه ناموفق است.
با این حال، اگر کاربر در ویرایشگر متن باشد و عملیات ذخیره پرونده به دلیل وضعیت مازاد سهمیه شکست بخورد، این رویکرد مناسبی نیست. به احتمال زیاد تلاش اولیه برای نوشتن پرونده، محتوای قبلی آن را کوتاه (truncate) کرده است؛ بنابراین اگر ویرایشگر بدون نوشتن صحیح پرونده بسته شود، نه تنها تغییرات اخیر از دست می‌روند، بلکه احتمالاً بخش زیادی یا حتی تمام محتوای قبلی پرونده نابود خواهد شد.
چندین راه خروج ایمن برای کاربری که در این وضعیت گرفتار شده وجود دارد: می‌تواند از دستور فرار به شل (shell escape) در ویرایشگر برای بررسی فضای پرونده‌ها و حذف موارد اضافه استفاده کند. به عنوان راه دیگر، با استفاده از sh(1)، می‌تواند ویرایشگر را به تعلیق درآورد (suspend)، چند پرونده را حذف کرده و سپس آن را از سر بگیرد. احتمال سوم، نوشتن پرونده در یک سیستم پرونده دیگر است (شاید در فایلی روی /tmp) که در آن سهمیه کاربر به پایان نرسیده است. سپس پس از اصلاح وضعیت سهمیه، می‌توان پرونده را به سیستم پرونده اصلی منتقل کرد.

زیرسیستم سهمیه‌بندی XFS اجازه می‌دهد سهمیه پیش‌فرضی برای هر کاربر، گروه یا پروژه‌ای که محدودیت سهمیه به‌طور صریح برای آن تنظیم نشده، اعمال شود. این محدودیت‌ها در قالب محدودیت‌های شناسه 0 ذخیره شده و نمایش داده می‌شوند، هرچند که در عمل شناسه 0 را محدود نمی‌کنند.

فهرست تمام مسیرها را همراه با دستگاه‌ها/شناسه‌های پروژه نمایش می‌دهد. فهرست مسیرها می‌تواند از چند منبع حاصل شود: خط فرمان، جدول نقاط اتصال (mount table)، و پرونده /etc/projects.
دستور free را ببینید.

quota [ -g | -p | -u ] [ -bir ] [ -hnNv ] [ -f file ] [ ID | name ] ...
میزان مصرف و محدودیت‌های فردی را برای یک name یا شناسه کاربری عددی ID نمایش می‌دهد. گزینه -h گزارش را در قالبی «خوانا برای انسان» مشابه با دستور df(1) ارائه می‌دهد. گزینه -n به‌جای نام، شناسه‌های عددی را گزارش می‌کند. گزینه -N سرآیند (هدر) را حذف می‌کند. گزینه -v اطلاعات پرجزئیات (verbose) را خروجی می‌دهد. گزینه -f خروجی را به جای خروجی استاندارد به file می‌فرستد.

free [ -bir ] [ -hN ] [ -f file ]
میزان مصرف سیستم پرونده را بسیار شبیه به ابزار df(1) گزارش می‌دهد. این دستور می‌تواند میزان مصرف را برای فضای بلاک‌ها (b)، آی‌نودها (i)، و/یا بلاک‌های بی‌درنگ (r) نمایش دهد و مقادیر مصرف‌شده، آزاد و کل فضای در دسترس را نشان می‌دهد. اگر سهمیه پروژه در حال استفاده باشد (بخش «سهمیه‌بندی درخت دایرکتوری» در زیر را ببینید)، میزان مصرف آن پروژه‌ها (درخت‌های دایرکتوری) را نیز گزارش خواهد کرد. گزینه -h گزارش را در قالبی «خوانا برای انسان» ارائه می‌دهد. گزینه -N سرآیند را حذف می‌کند. گزینه -f گزارش را به‌جای خروجی استاندارد در file می‌نویسد.

help [ command ]
راهنمای آنلاین برای تمام دستورات یا یک command خاص.

خروج از xfs_quota.
دستور quit را ببینید.

سیستم سهمیه‌بندی XFS از چندین جنبه با سایر سیستم‌های پرونده تفاوت دارد. مهم‌تر از همه، XFS اطلاعات سهمیه‌بندی را به عنوان فراداده (metadata) سیستم پرونده در نظر می‌گیرد و از ژورنال‌نویسی (journaling) برای ارائه سطح بالاتری از تضمین سازگاری استفاده می‌کند. از این رو، مدیریت آن متفاوت است، به ویژه:

1.
دستور quotacheck هیچ تاثیری بر سیستم‌های پرونده XFS ندارد. نخستین باری که حسابداری سهمیه فعال می‌شود (در زمان اتصال/mount)، XFS به‌طور خودکار یک quotacheck داخلی انجام می‌دهد؛ پس از آن، سیستم سهمیه‌بندی تا زمانی که سهمیه‌ها به‌صورت دستی خاموش نشوند، همیشه کاملاً سازگار خواهد بود.
2.
هیچ نیازی به پرونده(های) سهمیه در ریشه سیستم پرونده XFS وجود ندارد.
3.
سیستم XFS میان حسابداری سهمیه (accounting) و اعمال محدودیت (enforcement) تمایز قائل می‌شود. حسابداری سهمیه باید در زمان متصل کردن (mount) سیستم پرونده XFS فعال شود. با این حال، می‌توان در هر زمانی که حسابداری سهمیه فعال است، اعمال محدودیت را روشن یا خاموش کرد. گزینه «quota» برای دستور mount هم حسابداری و هم اعمال سهمیه (کاربر) را روشن می‌کند. گزینه «uqnoenforce» باید برای روشن کردن حسابداری کاربر با غیرفعال بودن اعمال محدودیت استفاده شود.
4.
روشن کردن سهمیه‌بندی روی سیستم پرونده ریشه (root filesystem) اندکی با موارد فوق متفاوت است. در لینوکس XFS، فلگ‌های اتصال سهمیه باید از طریق پارامتر بوت «rootflags=» ارسال شوند.
5.
استفاده از دستور state برای پایش زیرسیستم سهمیه‌بندی XFS در مراحل مختلف مفید است؛ می‌توان از آن برای مشاهده روشن بودن سهمیه‌ها و همچنین برای پایش فضای اشغال‌شده توسط خود سیستم سهمیه‌بندی استفاده کرد.
6.
سازوکاری درون xfsdump تعبیه شده است که امکان پشتیبان‌گیری از اطلاعات محدودیت سهمیه را برای بازیابی‌های بعدی در صورت نیاز فراهم می‌سازد.
7.
محدودیت‌های سهمیه را نمی‌توان پیش از روشن کردن سهمیه‌بندی تنظیم کرد.
8.
سیستم‌های پرونده XFS حسابداری سهمیه را برای کاربر ارشد (شناسه کاربری صفر) نگه می‌دارند و این ابزار اطلاعات مصرف کاربر ارشد را نمایش می‌دهد. با این حال، محدودیت‌ها هرگز بر کاربر ارشد اعمال نمی‌شوند (و همچنین برای شناسه گروه و پروژه صفر نیز اعمال نمی‌گردند).
9.
سیستم‌های پرونده XFS حسابداری سهمیه را انجام می‌دهند چه کاربر محدودیت سهمیه داشته باشد و چه نداشته باشد.
10.
سیستم XFS از مفهوم سهمیه پروژه پشتیبانی می‌کند که می‌تواند برای پیاده‌سازی نوعی سهمیه‌بندی درخت دایرکتوری استفاده شود (یعنی محدود کردن یک درخت دایرکتوری به استفاده از تنها بخشی از فضای در دسترس سیستم پرونده؛ یا صرفاً برای ردیابی مقدار فضای مصرفی یا تعداد آی‌نودها در آن درخت).

path [ N ]
تمام مسیرها را با دستگاه‌ها/شناسه‌های پروژه فهرست می‌کند یا مسیر جاری را روی ورودی N-اُم فهرست تنظیم می‌کند (مسیر جاری توسط بسیاری از دستورات شرح‌داده‌شده در اینجا استفاده می‌شود و سیستم پرونده‌ای را که دستور به سمت آن هدایت می‌شود مشخص می‌کند). فهرست مسیر می‌تواند از چند منبع حاصل شود: خط فرمان، جدول نقاط اتصال، و پرونده /etc/projects.

report [ -gpu ] [ -bir ] [ -ahntlLNU ] [ -f file ]
اطلاعات سهمیه‌بندی سیستم پرونده را گزارش می‌دهد. این دستور تمامی مصرف سهمیه را برای یک سیستم پرونده، بر اساس نوع سهمیه مشخص‌شده (u/g/p و/یا blocks/inodes/realtime) گزارش می‌کند. به‌طور پیش‌فرض بلاک‌ها را در واحدهای ۱ کیلوبایتی گزارش می‌دهد. گزینه -h گزارش را در قالبی «خوانا برای انسان» مشابه با دستور df(1) ارائه می‌کند. گزینه -f گزارش را به‌جای خروجی استاندارد به file می‌فرستد. گزینه -a روی تمام سیستم‌های پرونده گزارش می‌دهد. به‌طور پیش‌فرض، نام کاربر/گروه/پروژه را خروجی می‌دهد. اگر نامی برای یک شناسه تعریف نشده باشد، شناسه عددی را خروجی می‌دهد. گزینه -n شناسه عددی را به جای نام نمایش می‌دهد. گزینه‌های -L و -U حدود پایینی و/یا بالایی شناسه‌ها را برای گزارش‌گیری مشخص می‌کنند. اگر حدود پایینی/بالایی مشخص شوند، به‌طور پیش‌فرض تنها شناسه‌ها در خروجی نمایش داده می‌شوند؛ با گزینه -l، یک جستجو برای ترجمه این شناسه‌ها به نام‌ها انجام خواهد شد. گزینه -N اطلاعات را بدون سطر سرآیند گزارش می‌دهد. گزینه -t گزارشی مختصر و خلاصه ارائه می‌دهد.

state [ -gpu ] [ -av ] [ -f file ]
اطلاعات وضعیت کلی سهمیه‌بندی را گزارش می‌دهد. این دستور وضعیت حسابداری سهمیه، اعمال سهمیه و تعداد اکستنت‌های (extents) استفاده‌شده توسط فراداده سهمیه را در سیستم پرونده گزارش می‌کند. گزینه -f اطلاعات وضعیت را به‌جای خروجی استاندارد به file می‌فرستد. گزینه -a وضعیت را روی تمام سیستم‌های پرونده و نه فقط مسیر جاری گزارش می‌دهد.

limit [ -g | -p | -u ] bsoft=N | bhard=N | isoft=N | ihard=N | rtbsoft=N | rtbhard=N -d | id | name
محدودیت‌های بلاک سهمیه (bhard/bsoft)، محدودیت‌های تعداد آی‌نود (ihard/isoft) و/یا محدودیت‌های بلاک بی‌درنگ (rtbhard/rtbsoft) را برابر با N تنظیم می‌کند، که در آن N عددی نشان‌دهنده بایت‌ها یا آی‌نودها است. برای محدودیت‌های بلاک، عددی با پسوند ضریب s/b/k/m/g/t/p/e همان‌طور که در mkfs.xfs(8) شرح داده شده نیز پذیرفته می‌شود. برای محدودیت‌های آی‌نود، هیچ پسوندی مجاز نیست. گزینه -d (پیش‌فرض‌ها) می‌تواند برای تنظیم مقدار پیش‌فرضی که استفاده خواهد شد به کار رود، در غیر این صورت باید یک name خاص کاربر/گروه/پروژه (user/group/project) یا id عددی مشخص شود.

timer [ -g | -p | -u ] [ -bir ] value [ -d | id | name ]
امکان تغییر مهلت زمانی اعمال سهمیه (یعنی مدت زمانی که اجازه داده می‌شود بگذرد قبل از اینکه محدودیت‌های نرم به عنوان محدودیت‌های سخت اعمال شوند) را فراهم می‌سازد. تنظیمات مهلت فعلی را می‌توان با استفاده از دستور state نمایش داد.
هنگام تنظیم زمان‌سنج پیش‌فرض از طریق گزینه -d، یا برای id صفر، یا اگر هیچ آرگومانی بعد از value داده نشود، آرگومان value تعداد ثانیه‌هایی است که مدت زمان نسبی پس از تجاوز از حدود نرم، قبل از اعمال حدود سخت را نشان می‌دهد.
هنگام تنظیم هر زمان‌سنج فردی دیگر بر اساس id یا name، مقدار value تعداد ثانیه‌ها از زمان حال است که در آن هنگام محدودیت‌های سخت اعمال خواهند شد. این امر اجازه می‌دهد مهلت بخشش (grace time) کاربری که از حدود نرم فراتر رفته تمدید شود.
برای value، واحدهای 'minutes'، 'hours'، 'days'، و 'weeks' نیز قابل درک هستند (همان‌طور که اختصارات آن‌ها 'm'، 'h'، 'd'، و 'w' معتبرند).

warn [ -g | -p | -u ] [ -bir ] value -d | id | name
امکان مشاهده و تغییر حد هشدارهای سهمیه (یعنی تعداد دفعاتی که هشدار برای فردی فراتر از سهمیه ارسال می‌شود) را فراهم می‌کند. گزینه -d (پیش‌فرض‌ها) می‌تواند برای تنظیم زمان پیش‌فرضی که استفاده خواهد شد به کار رود، در غیر این صورت باید name خاص کاربر/گروه/پروژه (user/group/project) یا id عددی مشخص شود. توجه: این ویژگی در حال حاضر پیاده‌سازی نشده است.

اعمال سهمیه را برای سیستم پرونده شناسایی‌شده توسط مسیر جاری روشن می‌کند. این امر مستلزم آن است که سیستم پرونده با سهمیه فعال متصل (mount) شده باشد و حسابداری سهمیه در حال حاضر فعال باشد. گزینه -v (پرجزئیات) وضعیت را پس از اتمام عملیات نمایش می‌دهد.
اعمال سهمیه را غیرفعال می‌کند، در حالی که حسابداری سهمیه فعال باقی می‌ماند. گزینه -v (پرجزئیات) وضعیت را پس از اتمام عملیات نمایش می‌دهد.
سهمیه‌بندی را برای سیستم پرونده شناسایی‌شده توسط مسیر جاری به‌طور دائم خاموش می‌کند. سهمیه‌بندی پس از آن تنها با قطع اتصال (unmount) و سپس اتصال مجدد می‌تواند دوباره روشن شود.
هرگونه فضای اختصاص داده شده به فراداده سهمیه را از سیستم پرونده شناسایی‌شده توسط مسیر جاری حذف می‌کند. سهمیه‌بندی نباید روی سیستم پرونده فعال باشد، در غیر این صورت این عملیات خطا گزارش می‌دهد.

dump [ -g | -p | -u ] [ -L | -U ] [ -f file ]
اطلاعات محدودیت سهمیه را برای ابزارهای پشتیبان‌گیری، در خروجی استاندارد (پیش‌فرض) یا در یک file تخلیه (dump) می‌کند. گزینه‌های -L و -U حدود شناسه‌های پایینی و/یا بالایی را برای تخلیه مشخص می‌کنند. البته این اطلاعات تنها محدودیت‌ها هستند و اطلاعات مصرف را شامل نمی‌شوند.

restore [ -g | -p | -u ] [ -f file ]
محدودیت‌های سهمیه را از یک file پشتیبان بازیابی می‌کند. پرونده باید در قالبی باشد که توسط دستور dump تولید شده است.

quot [ -g | -p | -u ] [ -bir ] [ -acnv ] [ -f file ]
مالکیت سیستم پرونده را بر اساس کاربر، گروه یا پروژه خلاصه می‌کند. این دستور از یک رابط کاربری ویژه XFS بنام «bulkstat» برای اسکن سریع کل سیستم پرونده و گزارش اطلاعات مصرف استفاده می‌کند. این دستور حتی زمانی که سهمیه‌های سیستم پرونده فعال نیستند نیز می‌تواند استفاده شود، زیرا یک اسکن کامل سیستم پرونده است (همچنین ممکن است زمان زیادی ببرد...). گزینه -a اطلاعات را روی تمام سیستم‌های پرونده نمایش می‌دهد. گزینه -c یک هیستوگرام را به جای گزارش نمایش می‌دهد. گزینه -n شناسه‌های عددی را به جای نام‌ها نمایش می‌دهد. گزینه -v اطلاعات پرجزئیات را نمایش می‌دهد. گزینه -f خروجی را به‌جای خروجی استاندارد به file ارسال می‌کند.

project [ -cCs [ -d depth ] [ -p path ] id | name ]
گزینه‌های -c، -C، و -s امکان نگهداری سازوکار سهمیه‌بندی درخت دایرکتوری را فراهم می‌کنند. گزینه -d امکان محدود کردن سطح بازگشت (تکرار بازگشتی) را هنگام پردازش دایرکتوری‌های پروژه فراهم می‌سازد و گزینه -p امکان مشخص کردن مسیرهای پروژه را در خط فرمان بدون نیاز به وجود /etc/projects فراهم می‌آورد. تمامی گزینه‌ها در زیر به تفصیل مورد بحث قرار گرفته‌اند.

سازوکار سهمیه پروژه در XFS می‌تواند برای پیاده‌سازی نوعی سهمیه‌بندی درخت دایرکتوری استفاده شود، که در آن یک دایرکتوری مشخص و تمام پرونده‌ها و زیردایرکتوری‌های زیر آن (یعنی یک درخت) می‌توانند به استفاده از زیرمجموعه‌ای از فضای در دسترس سیستم پرونده محدود شوند.

یک درخت مدیریت‌شده باید در ابتدا با استفاده از گزینه -s در دستور project راه‌اندازی شود. نام یا شناسه پروژه مشخص‌شده با یک یا چند درخت تعریف‌شده در /etc/projects تطبیق داده می‌شود، و سپس این درخت‌ها به‌صورت بازگشتی پیمایش می‌شوند تا آی‌نودهای تحت تأثیر به عنوان بخشی از آن درخت علامت‌گذاری شوند. این فرآیند یک فلگ آی‌نود و شناسه پروژه را روی هر پرونده در درخت تحت تأثیر تنظیم می‌کند. پس از انجام این کار، پرونده‌های جدید ایجادشده در درخت به‌طور خودکار بر اساس شناسه پروژه خود به حساب آن درخت منظور می‌شوند. تلاش برای ایجاد یک پیوند سخت (hard link) به یک پرونده در درخت تنها در صورتی موفقیت‌آمیز خواهد بود که شناسه پروژه با شناسه پروژه آن درخت مطابقت داشته باشد. ابزار xfs_io می‌تواند برای تنظیم شناسه پروژه برای یک پرونده دلخواه استفاده شود، اما این کار تنها توسط یک کاربر دارای امتیاز مجاز است.

درختی که قبلاً راه‌اندازی شده است می‌تواند با استفاده از گزینه project -C از کنترل سهمیه پروژه خارج شود؛ این گزینه درخت را به‌طور بازگشتی پیمایش کرده و آی‌نودهای تحت تأثیر را از کنترل سهمیه پروژه پاک می‌کند.

در نهایت، گزینه project -c می‌تواند برای بررسی راه‌اندازی صحیح درخت استفاده شود؛ اگر درخت درست باشد چیزی گزارش نمی‌کند، در غیر این صورت مسیرهای آی‌نودهایی را که فاقد شناسه پروژه مابقی درخت هستند، یا اگر فلگ آی‌نود تنظیم نشده باشد، گزارش می‌دهد.

گزینه -d می‌تواند برای محدود کردن سطح بازگشت استفاده شود (-1 نامحدود است، 0 فقط سطح بالاست، 1 سطح اول است و ...). گزینه -p امکان تعیین مسیرهای پروژه را در خط فرمان بدون نیاز به وجود /etc/projects اضافه می‌کند. توجه داشته باشید که اگر پرونده projects وجود داشته باشد، از آن نیز استفاده می‌شود.

فعال کردن اعمال سهمیه در یک سیستم پرونده XFS (محدود کردن یک کاربر به مقدار معینی فضا).

# mount -o uquota /dev/xvm/home /home
# xfs_quota -x -c 'limit bsoft=500m bhard=550m tanya' /home
# xfs_quota -x -c report /home

فعال کردن سهمیه پروژه در یک سیستم پرونده XFS (محدود کردن پرونده‌ها در دایرکتوری‌های لاگ به استفاده از تنها ۱ گیگابایت فضا).

# mount -o prjquota /dev/xvm/var /var
# echo 42:/var/log >> /etc/projects
# echo logfiles:42 >> /etc/projid
# xfs_quota -x -c 'project -s logfiles' /var
# xfs_quota -x -c 'limit -p bhard=1g logfiles' /var

همانند بالا بدون نیاز به پرونده‌های پیکربندی.

# rm -f /etc/projects /etc/projid
# mount -o prjquota /dev/xvm/var /var
# xfs_quota -x -c 'project -s -p /var/log 42' /var
# xfs_quota -x -c 'limit -p bhard=1g 42' /var

سازوکار تخصیص XFS همیشه قبل از اقدام به تخصیص، حداکثر فضای مورد نیاز را رزرو می‌کند. اگر فضای کافی برای این رزرو به دلیل رسیدن به حد سهمیه بلاک وجود نداشته باشد، این امر ممکن است منجر به شکست تخصیص شود، حتی اگر فضای کافی وجود داشته باشد. بنابراین اعمال سهمیه گاهی اوقات می‌تواند در شرایطی رخ دهد که کاربر زیر سهمیه است و نتیجه نهایی عملیات در صورتی که اجازه اجرا می‌یافت، همچنان کاربر را زیر سهمیه باقی می‌گذاشت. این سربار اضافی معمولاً در محدوده ده‌ها بلاک است.

هر دوی این ویژگی‌ها عوارض جانبی اجتناب‌ناپذیر نحوه عملکرد XFS هستند، بنابراین هنگام تعیین محدودیت‌های بلاک باید آن‌ها را در نظر داشت.

پشتیبانی از سهمیه برای سیستم‌های پرونده با زیرحجم‌های بی‌درنگ (realtime subvolumes) هنوز پیاده‌سازی نشده است، و همچنین سازوکار هشدار سهمیه پیاده‌سازی نشده است (ابزار لینوکسی warnquota(8) می‌تواند برای ارائه عملکرد مشابه در آن پلتفرم استفاده شود).

/etc/projects
نگاشت شناسه‌های عددی پروژه به درخت‌های دایرکتوری.
/etc/projid
نگاشت شناسه‌های عددی پروژه به نام‌های پروژه.

df(1), mount(1), sync(2), projid(5), projects(5), xfs(5), warnquota(8)

مه ۲۰۲۵ xfsprogs