وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

فایل pagefile.sys فضای درایو C ویندوز سرور را گرفته؛ چه کار کنیم؟

بررسی حجم و مصرف pagefile، حافظه متعهدشده و تنظیم ایمن Virtual Memory هنگام کمبود فضای درایو C ویندوز سرور.

انتشار:
توسط تیم فنی نت‌آرام
۷ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله فایل pagefile.sys فضای درایو C ویندوز سرور را گرفته؛ چه کار کنیم؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
درایو C ویندوز سرور پر شده و هنگام بررسی فضا، فایل بزرگی به نام pagefile.sys پیدا کرده‌اید. این فایل بخشی از مدیریت حافظه ویندوز است و ممکن است برای ثبت اطلاعات عیب‌یابی هنگام توقف ناگهانی سیستم نیز لازم باشد. بزرگ‌بودنش الزاماً نشانه خطا نیست و حذف دستی آن راه مطمئنی برای آزادکردن فضا نیست.
در این راهنما اندازه فایل، فشار حافظه و نیاز سرور به گزارش خرابی را با هم می‌سنجیم. سپس دو مسیر عملی را بررسی می‌کنیم: افزایش فضای درایو سیستم یا تنظیم حساب‌شده فایل صفحه روی دیسک مناسب دیگر. این آموزش برای Windows Server در سرور مجازی ایران یا سرور اختصاصی ایران است. قبل از تغییر تنظیم حافظه یا ریبوت، زمان نگهداری، بکاپ و دسترسی کنسول را آماده کنید.

۱. pagefile چیست و چرا ممکن است بزرگ شود؟

ویندوز برای مدیریت حافظه‌ای که برنامه‌ها درخواست می‌کنند از RAM و منابع پشتیبان از جمله pagefile استفاده می‌کند. این فایل «RAM واقعی جدید» نیست و سرعت دیسک جای سرعت حافظه را نمی‌گیرد. مقدار مناسب آن به بار واقعی، تنظیمات سرور و نوع memory dump مورد نیاز بستگی دارد؛ فرمول ثابت مانند «همیشه نصف RAM» برای همه مناسب نیست.
اگر مدیریت خودکار فعال باشد، ویندوز ممکن است اندازه فایل را با توجه به شرایط تغییر دهد. صفحه‌فایل کم‌حجم می‌تواند سقف حافظه متعهدشده را پایین بیاورد و به خطای تخصیص حافظه منجر شود. طبق راهنمای مایکروسافت، نزدیک‌شدن مقدار حافظه متعهدشده به سقف آن می‌تواند برنامه‌ها و سیستم را دچار مشکل کند.

۲. ببینید کدام فایل و کدام درایو فضا می‌گیرد

PowerShell را با دسترسی مدیر باز کنید:
کد / دستورGet-CimInstance Win32_PageFileUsage | Format-Table Name,AllocatedBaseSize,CurrentUsage,PeakUsage -AutoSize
Name مسیر فایل و AllocatedBaseSize اندازه تخصیص‌یافته را نشان می‌دهد؛ مقادیر این کلاس بر حسب مگابایت‌اند. CurrentUsage مصرف فعلی و PeakUsage اوج ثبت‌شده از زمان شروع سیستم را نشان می‌دهد. عدد کم مصرف فعلی به‌تنهایی ثابت نمی‌کند کاهش فایل در زمان اوج امن است. اگر چند فایل دارید، همه مسیرها را بررسی کنید.
فضای درایو C و درایو احتمالی دوم را نیز ببینید:
کد / دستورGet-Volume | Format-Table DriveLetter,FileSystemLabel,FileSystem,SizeRemaining,Size -AutoSize
خروجی ظرفیت و فضای خالی را بر حسب بایت نشان می‌دهد. فقط به اندازه pagefile نگاه نکنید؛ گزارش برنامه‌ها، بکاپ‌ها و فایل‌های دیگر هم ممکن است بخش زیادی از فضا را بگیرند. فایل پشتیبان یا پایگاه داده را صرفاً به‌خاطر بزرگ‌بودن پاک نکنید.

۳. تنظیم فعلی و فشار حافظه را ثبت کنید

کد / دستورGet-CimInstance Win32_ComputerSystem | Select-Object AutomaticManagedPagefile Get-CimInstance Win32_PageFileSetting | Format-Table Name,InitialSize,MaximumSize -AutoSize
اگر مدیریت خودکار فعال است، بسته به نسخه و حالت تنظیم ممکن است جدول دوم خالی باشد؛ این موضوع به‌تنهایی نبود pagefile را ثابت نمی‌کند. خروجی Win32_PageFileUsage وضعیت فایل فعال را بهتر نشان می‌دهد. از تنظیم فعلی و هر مقدار سفارشی یادداشت یا تصویر خصوصی بگیرید تا در صورت نیاز بازگردانی ممکن باشد.
در Task Manager به Performance ← Memory بروید و مقدار Committed را بخوانید. عدد اول مصرف متعهدشده فعلی و عدد دوم سقف آن است. برای نمونه، اگر در زمان شلوغی عدد اول به عدد دوم نزدیک می‌شود، کم‌کردن بی‌برنامه pagefile می‌تواند درخواست‌های تازه حافظه را با شکست روبه‌رو کند. مقدار را در ساعات اوج هم ثبت کنید؛ یک عکس لحظه‌ای از سرور کم‌کار کافی نیست.
اگر شمارنده‌ها در نسخه و زبان ویندوز شما با این نام موجود باشند، می‌توانید چند نمونه از مقدار و سقف را بگیرید:
کد / دستورGet-Counter '\Memory\Committed Bytes','\Memory\Commit Limit' -SampleInterval 5 -MaxSamples 3
این مقادیر بر حسب بایت‌اند. برای شناسایی برنامه‌هایی که حافظه خصوصی زیادی گرفته‌اند، یک نمای اولیه بگیرید:
کد / دستورGet-Process | Sort-Object PrivateMemorySize64 -Descending | Select-Object -First 10 Name,Id,@{Name='PrivateMB';Expression={[math]::Round($_.PrivateMemorySize64 / 1MB,1)}}
این فهرست مالک مستقیم هر بخش pagefile را ثابت نمی‌کند، اما به پیدا کردن برنامه‌ای که مصرفش رشد کرده کمک می‌کند. اگر مصرف یک برنامه غیرعادی است، تنظیم و گزارش همان برنامه را بررسی و طبق راهنمایش اصلاح کنید؛ پردازش سیستم یا پایگاه داده را برای آزادکردن فضا به‌صورت ناگهانی نبندید.

۴. روش اول: فضای C را اصولی بیشتر کنید

اگر دیسک سیستم واقعاً برای ویندوز، به‌روزرسانی‌ها، گزارش‌ها و نیاز حافظه کوچک است، اضافه‌کردن فضا معمولاً از کوچک‌کردن شتاب‌زده pagefile مناسب‌تر است. در ماشین مجازی ابتدا ظرفیت دیسک را در زیرساخت افزایش دهید و سپس در ویندوز بررسی کنید آیا فضای آزادِ قابل افزایش کنار پارتیشن C وجود دارد. افزایش دیسک مجازی به‌تنهایی پارتیشن را بزرگ نمی‌کند.
مراحل شناسایی پارتیشن و افزایش آن در راهنمای بزرگ‌کردن درایو C بعد از افزایش دیسک VPS آمده است. اگر پارتیشن بازیابی یا چیدمان دیگری مانع افزایش مستقیم است، آن را بدون شناخت حذف نکنید. در سرور اختصاصی هم روش توسعه دیسک به RAID، کنترلر و طرح پارتیشن وابسته است. پس از افزایش، فضای خالی و عملکرد برنامه‌ها را دوباره بررسی کنید.

۵. روش دوم: تنظیم بخشی از pagefile روی درایو دیگر

اگر درایو محلی و پایدار دیگری دارید، می‌توانید با برنامه‌ریزی از آن برای بخشی از فایل صفحه استفاده کنید. ابتدا مطمئن شوید درایو همیشه هنگام بوت در دسترس است، فضای کافی دارد و از نظر سرعت و محرمانگی برای داده حافظه مناسب است. یک درایو شبکه یا دیسک موقت را بدون تأیید سازگاری به‌عنوان مقصد انتخاب نکنید. اگر هر دو حرف درایو روی همان دیسک فیزیکی باشند، فقط محل اشغال ظرفیت تغییر می‌کند و الزاماً سرعت بهتر نمی‌شود.
پیش از کاهش فایل درایو بوت، نیاز memory dump را مشخص کنید. این گزارش تنظیمات فعلی را می‌خواند:
کد / دستورGet-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' | Select-Object CrashDumpEnabled,DumpFile,DedicatedDumpFile
تفسیر این مقادیر و اندازه لازم به نوع dump و نسخه ویندوز وابسته است. راهنمای dump ویندوز سرور توضیح می‌دهد که بعضی حالت‌ها به فایل مناسب روی درایو بوت یا پیکربندی مخصوص نیاز دارند. محل نهایی dump با محل فایل مورد نیاز برای پشتیبانی از آن همیشه یکسان نیست.
برای تغییر از رابط گرافیکی، sysdm.cpl را از Start اجرا کنید. در Advanced ← Performance / Settings ← Advanced ← Virtual memory / Change تنظیم فعلی را ببینید. اگر تصمیم شما استفاده از درایو D است، پس از برداشتن تیک مدیریت خودکار، D را انتخاب و System managed size را انتخاب کنید و Set را بزنید. برای C نیز تنظیمی متناسب با نیاز حافظه و dump خود تعیین کنید و Set را بزنید؛ رهاکردن C روی اندازه قبلی لزوماً فضایی آزاد نمی‌کند.
اگر برای C گزینه Custom size انتخاب می‌کنید، عدد اولیه و بیشینه را از نیاز ثبت‌شده در ساعات اوج، حاشیه مناسب و الزامات dump همان سرور تعیین کنید. مقدار کوچک و ثابت نسخه همگانی نیست. اگر این داده‌ها را ندارید، ابتدا فضا را افزایش دهید یا اندازه‌گیری کامل‌تری انجام دهید. گزینه No paging file و حذف دستی pagefile.sys را به‌عنوان راه فوری انتخاب نکنید.

۶. تغییر را اعمال و اندازه واقعی را تأیید کنید

پس از تأیید پنجره‌ها، اگر ویندوز درخواست ریبوت کرد، آن را در زمان نگهداری برنامه‌ریزی کنید. تغییر اندازه یا محل ممکن است تا راه‌اندازی مجدد کامل اثر نکند. پس از بالا آمدن، دوباره این دو گزارش را بگیرید:
کد / دستورGet-CimInstance Win32_PageFileUsage | Format-Table Name,AllocatedBaseSize,CurrentUsage,PeakUsage -AutoSize Get-Volume | Format-Table DriveLetter,SizeRemaining,Size -AutoSize
مطمئن شوید فایل روی محل مورد انتظار فعال است، فضای C واقعاً تغییر کرده و حافظه متعهدشده در ساعات اوج حاشیه کافی دارد. برنامه‌ها، پایگاه داده و دسترسی راه دور را نیز تست کنید. اگر ویندوز فایل موقت ساخته یا مقدارها با انتظار فرق دارند، گزارش رویدادها، فضای مقصد و تنظیم dump را بررسی کنید؛ فرض نکنید تنها ذخیره تنظیم در پنجره یعنی تغییر با موفقیت انجام شده است.
اگر پایداری بدتر شد، در همان پنجره تنظیمات ثبت‌شده قبلی را برگردانید، هر درایو تغییرکرده را با Set تأیید کنید و در زمان مناسب دوباره راه‌اندازی کنید. اندازه‌گیری مصرف و دلیل رشد را ادامه دهید تا کمبود فضا یا حافظه دوباره تکرار نشود.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام