نمایش مشخصات سرور: حافظه، پردازنده، دیسک، نسخه لینوکس و سختافزار
برای دیدن مشخصات یک سرور لینوکسی کافی است از راه SSH وارد شوید و سه دستور اصلی را اجرا کنید: free -h برای حافظه، lscpu یا nproc برای پردازنده و df -h برای فضای دیسک. در ویندوز سرور همین اطلاعات با دستور systeminfo یا از پنجره Task Manager در دسترس است. هر سه دستور فقط خواندنی هستند و هیچ تغییری در سرور ایجاد نمیکنند.
اما عدد خام به تنهایی کافی نیست. آنچه در ادامه میآید توضیح میدهد هر ستون از خروجی این دستورات دقیقاً چه چیزی را نشان میدهد، نسخه توزیع و کرنل و معماری ۳۲ یا ۶۴ بیتی را چطور بخوانید، چگونه با dmidecode به مشخصات سختافزار فیزیکی برسید و چه زمانی باید به فکر ارتقای منابع باشید.
حافظه: دستور free و معنای ستونها
دستور free -h حافظه را با واحد خوانا (مگابایت و گیگابایت) نمایش میدهد. ستونهای مهم آن:
- total — کل حافظهای که کرنل میبیند. معمولاً کمی کمتر از عدد اسمی است، چون بخشی از حافظه برای سختافزار و خود کرنل رزرو میشود.
- used — حافظه در حال استفاده توسط پردازهها.
- buff/cache — حافظهای که کرنل برای کش فایلها استفاده کرده است. این عدد بالا نگرانکننده نیست؛ کرنل هر وقت لازم باشد آن را آزاد میکند.
- available — مهمترین ستون. تخمین کرنل از حافظهای که یک برنامه جدید میتواند بدون رفتن به Swap بگیرد. برای تصمیمگیری همیشه به این ستون نگاه کنید، نه به free.
خط دوم خروجی مربوط به Swap است. اگر Swap بهطور مداوم پر باشد و در خروجی vmstat 1 ستونهای si و so عددهای غیرصفر نشان دهند، سرور در حال جابهجایی مداوم حافظه با دیسک است و این یعنی رم واقعاً کم است. جزئیات کاملتر در cat /proc/meminfo موجود است.
نکته مهم درباره سرور مجازی: اگر VPS شما روی یک مجازیساز کامل (مانند VMware، KVM، Hyper-V یا Xen) اجرا شود، این اعداد همان منابع اختصاصیافته به ماشین شما هستند. اما روی برخی کانتینرها (OpenVZ یا LXC بدون lxcfs) ممکن است دستورها مقدار کل سرور میزبان را نشان دهند، نه سهم شما. برای اینکه بدانید سرویس شما کدام حالت است، مشخصات پلن یا پنل مدیریت سرویس را ببینید؛ در حالت کانتینری به مقادیر cgroup اعتماد کنید: روی cgroup v2 (پیشفرض توزیعهای امروزی) فایل /sys/fs/cgroup/memory.max و روی cgroup v1 مسیر /sys/fs/cgroup/memory/.
پردازنده: از nproc تا lscpu
سادهترین دستور nproc است که فقط تعداد هستههای منطقی قابل استفاده را برمیگرداند. برای تصویر کاملتر از lscpu استفاده کنید. در خروجی آن به این خطوط توجه کنید:
- Model name — نام و فرکانس پایه پردازنده.
- Socket(s)، Core(s) per socket و Thread(s) per core — حاصلضرب این سه عدد برابر تعداد هستههای منطقی است. اگر Thread per core برابر ۲ باشد، یعنی Hyper-Threading فعال است و نصف هستهها فیزیکی نیستند.
- CPU MHz — فرکانس لحظهای که با بار سرور تغییر میکند. در نسخههای جدیدتر util-linux ممکن است بهجای این خط،
CPU max MHzوCPU min MHzیاCPU(s) scaling MHzرا ببینید. - Architecture و CPU op-mode(s) — معماری کرنل و حالتهایی که پردازنده پشتیبانی میکند (پایینتر به این دو برمیگردیم).
- Hypervisor vendor و Virtualization type — نشان میدهد سرور مجازی است یا فیزیکی.
خروجی خامتر را میتوانید با cat /proc/cpuinfo ببینید. برای سنجش بار واقعی، دستور uptime سه عدد Load Average را در بازههای یک، پنج و پانزده دقیقه نشان میدهد. قاعده تفسیر ساده است: این اعداد را با تعداد هستههای منطقی مقایسه کنید. Load برابر ۴ روی سروری با ۴ هسته یعنی ظرفیت کامل مصرف شده و اگر این وضعیت پایدار بماند، پردازنده گلوگاه است.
فضای دیسک: df، lsblk و du
دستور df -h فضای هر پارتیشن نصبشده را نمایش میدهد:
df -h
این دستور در همه توزیعها یکسان است؛ چه CentOS و جانشینانش AlmaLinux و Rocky Linux، چه Ubuntu و Debian، خروجی و ستونها همانها هستند و چیز جداگانهای برای هر توزیع لازم نیست. ستون Use% را جدی بگیرید و به روند رشد آن در طول زمان نگاه کنید، نه فقط به عدد امروز؛ پر شدن کامل پارتیشن ریشه میتواند باعث توقف دیتابیس و وبسرور شود، بنابراین تصمیم برای فضا باید پیش از رسیدن به مرز پر شدن گرفته شود.
یک اشتباه رایج این است که فقط به فضا نگاه میشود. دستور df -i مصرف inode را نشان میدهد. سروری که میلیونها فایل کوچک (کش، صف ایمیل، سشن) دارد ممکن است با وجود فضای خالی، inode کم بیاورد و خطای «No space left on device» بگیرد.
برای دیدن ساختار دیسکها و پارتیشنها از lsblk و برای پیدا کردن پوشههای حجیم از du -sh /* یا du -h --max-depth=1 /var استفاده کنید. این دو دستور هم فقط خواندنی هستند، ولی روی دیسکهای بزرگ ممکن است چند دقیقه طول بکشند و کمی بار I/O ایجاد کنند؛ بهتر است در ساعت اوج ترافیک اجرایشان نکنید. اگر سرویس شما به فضای زیاد و پایدار نیاز دارد، معمولاً اجاره سرور اختصاصی گزینه منطقیتری از افزودن مکرر دیسک به ماشین مجازی است.
نمای زنده مصرف: top و htop
دستور top روی همه توزیعها موجود است و مصرف لحظهای پردازنده و حافظه را به تفکیک پردازه نشان میدهد. htop همان کار را با نمای رنگی و خواناتر انجام میدهد، ولی معمولاً باید جداگانه نصب شود.
اگر ترجیح میدهید نصب، پیکربندی و رفع مشکل این ابزارها و سرویسهای روی سرور را به تیم متخصص بسپارید، خدمات پشتیبانی و مدیریت سرور آنلاین سرور همین حوزهها را روی سرورهای لینوکسی و ویندوزی پوشش میدهد.
نسخه توزیع، نسخه کرنل و معماری
بخش زیادی از تیکتهای پشتیبانی با همین سه چیز شروع میشود: چه توزیعی، چه نسخهای از کرنل و ۳۲ بیتی یا ۶۴ بیتی. هر سه با یک اتصال SSH و چند دستور خواندنی به دست میآیند.
نسخه توزیع
دستور درست و همهکاره روی توزیعهای امروزی این است:
cat /etc/os-release
این فایل روی AlmaLinux، Rocky Linux، RHEL، Ubuntu، Debian و تقریباً هر توزیع مدرن دیگری وجود دارد. کلیدهای مهم آن NAME، VERSION و PRETTY_NAME هستند. دستور hostnamectl هم نام میزبان، نام توزیع، نسخه کرنل و نوع مجازیسازی را یکجا در یک خروجی خلاصه نشان میدهد.
در توزیعهای خانواده Red Hat (RHEL، CentOS، AlmaLinux، Rocky Linux) فایل قدیمیتری هم هست که در نوشتههای سالهای گذشته زیاد به آن ارجاع داده شده است:
cat /etc/redhat-release
این فایل هنوز کار میکند و خروجی کوتاه و خوانایی دارد، اما فقط روی همین خانواده وجود دارد؛ روی Ubuntu یا Debian اجرای آن خطای No such file or directory میدهد. اگر اسکریپتی مینویسید که قرار است روی چند توزیع اجرا شود، به /etc/os-release تکیه کنید نه به این فایل. معادل رایج آن روی Debian و Ubuntu دستور lsb_release -a است که گاهی باید بسته lsb-release را جداگانه نصب کنید.
یک نکته درباره CentOS: خط CentOS Linux (نسخههای ۷ و ۸) به پایان پشتیبانی رسیده است و دیگر بهروزرسانی امنیتی نمیگیرد. اگر خروجی این دستورها CentOS Linux را نشان داد، مهاجرت به AlmaLinux یا Rocky Linux (که با همان اکوسیستم RHEL سازگارند) یا به CentOS Stream را در برنامه بگذارید.
نسخه کرنل
برای گرفتن فقط شماره نسخه کرنل:
uname -r
و برای دیدن همهچیز در یک خط — نام میزبان، نسخه کرنل، تاریخ build و معماری — از uname -a استفاده کنید. اگر جزئیات بیشتری مثل کامپایلری که کرنل با آن ساخته شده لازم دارید:
cat /proc/version
در راهنماهای قدیمی گاهی nano /proc/version پیشنهاد شده است. این کار درست نیست: nano یک ویرایشگر متن است و فایلهای داخل /proc فایل واقعی روی دیسک نیستند، بلکه نمای لحظهای وضعیت کرنلاند و قابل ویرایش و ذخیره نیستند. برای خواندن این فایلها همیشه از cat یا less استفاده کنید؛ همین نکته درباره /proc/cpuinfo و /proc/meminfo هم صدق میکند.
کرنل ۳۲ بیتی است یا ۶۴ بیتی؟
پاسخ با یک دستور کوتاه به دست میآید:
uname -m
خروجی را اینطور بخوانید:
x86_64— کرنل ۶۴ بیتی روی معماری اینتل/AMD. حالت رایج روی تقریباً همه سرورهای امروزی.i686یاi386— کرنل ۳۲ بیتی روی همان معماری.aarch64— کرنل ۶۴ بیتی روی معماری ARM.armv7l— کرنل ۳۲ بیتی ARM.
راه کوتاهتر و بدون نیاز به تفسیر هم هست؛ این دستور مستقیماً عدد ۳۲ یا ۶۴ را برمیگرداند:
getconf LONG_BIT
فقط توجه کنید که getconf LONG_BIT بیتیبودن محیط کاربری (userspace) را گزارش میکند، نه مستقیماً کرنل را؛ روی سرورهای معمول این دو یکی هستند، اما برای پاسخ قطعی درباره خود کرنل به uname -m نگاه کنید.
یک تمایز مهم را از دست ندهید: uname -m میگوید کرنلی که الان بالا آمده چند بیتی است، نه اینکه پردازنده چه توانی دارد. یک پردازنده ۶۴ بیتی میتواند کرنل ۳۲ بیتی اجرا کند و در این حالت خروجی i686 خواهد بود در حالی که سختافزار ۶۴ بیتی است. برای دیدن توان خود پردازنده، در خروجی lscpu به خط CPU op-mode(s) نگاه کنید؛ اگر هر دو مقدار 32-bit و 64-bit را نشان داد، پردازنده هر دو را پشتیبانی میکند.
امروز این بررسی کمتر از گذشته لازم میشود، چون بیشتر توزیعهای سروری فقط نسخه ۶۴ بیتی منتشر میکنند؛ برای مثال RHEL و مشتقات آن مانند AlmaLinux و Rocky Linux برای سرور فقط ۶۴ بیتی هستند. جایی که هنوز به کار میآید، انتخاب بسته یا باینری درست هنگام نصب دستی یک نرمافزار است.
مشخصات سختافزار فیزیکی با dmidecode
دستورهای بالا آنچه را که کرنل میبیند گزارش میکنند. اگر میخواهید بدانید خود مادربرد، BIOS، شاسی و ماژولهای حافظه چه هستند — سؤالی که معمولاً روی سرور اختصاصی مطرح میشود — ابزار درست dmidecode است. این دستور جدول SMBIOS/DMI را که میانافزار (firmware) سیستم در حافظه قرار داده میخواند و مشخصات اعلامشده توسط خود سختافزار را برمیگرداند.
خواندن این جدول به دسترسی root نیاز دارد، پس دستورها را با sudo اجرا کنید. اگر ابزار روی سرور نصب نبود:
sudo dnf install dmidecode # AlmaLinux, Rocky Linux, RHEL, Fedora sudo apt install dmidecode # Debian, Ubuntu
روی CentOS 7 و قدیمیتر بهجای dnf از yum استفاده میشد؛ روی توزیعهای فعلی خانواده Red Hat دستور استاندارد dnf است.
خروجی کامل dmidecode بسیار طولانی است، بنابراین معمولاً فقط یک نوع اطلاعات را میخواهید. هر نوع یک شماره دارد:
# Type Short Description 0 BIOS 1 System 2 Base Board 3 Chassis 4 Processor 5 Memory Controller 6 Memory Module 7 Cache 8 Port Connector 9 System Slots 10 On Board Devices 11 OEM Strings 12 System Configuration Options 13 BIOS Language 14 Group Associations 15 System Event Log 16 Physical Memory Array 17 Memory Device 18 32-bit Memory Error 19 Memory Array Mapped Address 20 Memory Device Mapped Address 21 Built-in Pointing Device 22 Portable Battery 23 System Reset 24 Hardware Security 25 System Power Controls 26 Voltage Probe 27 Cooling Device 28 Temperature Probe 29 Electrical Current Probe 30 Out-of-band Remote Access 31 Boot Integrity Services 32 System Boot 33 64-bit Memory Error 34 Management Device 35 Management Device Component 36 Management Device Threshold Data 37 Memory Channel 38 IPMI Device 39 Power Supply
و طرز استفاده از این شمارهها به این شکل است — مثلاً برای پردازنده:
sudo dmidecode --type 4
اما لازم نیست شمارهها را حفظ کنید. dmidecode نامهای خوانا را هم میپذیرد و نتیجه دقیقاً یکسان است:
sudo dmidecode --type processor sudo dmidecode --type memory sudo dmidecode --type bios sudo dmidecode --type system sudo dmidecode --type baseboard sudo dmidecode --type chassis
این جدول ثابت هم نیست؛ استاندارد SMBIOS در سالهای بعد انواع تازهای (از جمله TPM Device با شماره ۴۳) اضافه کرده و نسخههای جدید dmidecode آنها را میشناسند. به همین دلیل استفاده از نامها خواناتر از شمارههاست.
اگر فقط یک مقدار مشخص را میخواهید — مثلاً داخل یک اسکریپت — سوییچ -s تنها همان رشته را بدون هیچ متن اضافه چاپ میکند:
sudo dmidecode -s system-manufacturer sudo dmidecode -s system-product-name sudo dmidecode -s bios-version
فهرست کلیدهای معتبر -s را هم لازم نیست حفظ کنید: اگر کلیدی بدهید که وجود ندارد (مثلاً dmidecode -s help)، خود دستور همه کلیدهای معتبر را فهرست میکند.
دو محدودیت را در نظر داشته باشید:
- روی سرور مجازی مقادیری که میبینید سختافزار میزبان نیستند، بلکه مشخصاتی هستند که هایپروایزر به ماشین مجازی اعلام کرده است. همین موضوع خودش کاربرد دارد: نام سازنده در خروجی
sudo dmidecode --type systemمعمولاً نشان میدهد سرور روی چه مجازیسازیای بالا آمده است. - داخل کانتینر (OpenVZ، LXC، Docker) این دستور معمولاً کار نمیکند، چون کانتینر دسترسی مستقیم به جدول DMI ندارد.
چند ابزار مکمل که کنار dmidecode تصویر را کامل میکنند:
sudo lshw -short— فهرست خلاصه و درختی همه سختافزارهای شناساییشده.lspci— کارت شبکه، کنترلر RAID و بقیه دستگاههای روی گذرگاه PCI.lsblk— دیسکها، پارتیشنها و اندازه هرکدام.
همه این دستورها فقط خواندنی هستند و چیزی روی سرور تغییر نمیدهند.
در ویندوز سرور
سادهترین راه گرافیکی، باز کردن Task Manager و رفتن به تب Performance است؛ آنجا حافظه، پردازنده و دیسک بهصورت زنده نمایش داده میشوند. برای خروجی متنی، در Command Prompt دستور systeminfo را اجرا کنید که مدل سیستم، پردازنده، حافظه فیزیکی کل و در دسترس و نسخه ویندوز را یکجا برمیگرداند. در PowerShell هم این دستورها دقیقتر هستند:
Get-CimInstance Win32_Processor— مشخصات پردازنده و تعداد هستهها.Get-CimInstance Win32_PhysicalMemory— ظرفیت و نوع ماژولهای حافظه.Get-CimInstance Win32_ComputerSystem— سازنده و مدل سیستم؛ معادل تقریبیdmidecode --type systemدر لینوکس.Get-Volume— فضای کل و خالی هر درایو.
این اعداد را چگونه به تصمیم تبدیل کنیم
یک بار اندازهگیری تقریباً بیفایده است، چون بار سرور در ساعات مختلف فرق میکند. مقادیر را در ساعت اوج ترافیک ثبت کنید و چند روز پشت سر هم مقایسه کنید. سه نشانه که معمولاً یعنی وقت ارتقا رسیده است: ستون available در ساعت اوج نزدیک صفر و Swap فعال؛ Load Average پایدار بالاتر از تعداد هستهها؛ و پارتیشن ریشهای که رشد ماهانهاش تا چند هفته دیگر آن را پر میکند.
و اگر اصلاً ترجیح میدهید مدیریت فنی سرور را خودتان بر عهده نگیرید، سرور مجازی مدیریتشده ایران آنلاین سرور سرویسی است که در آن نصب و پیکربندی کنترلپنل، عیبیابی نرمافزارهای نصبشده و پشتیبانی فنی بر عهده تیم فنی است.
