یکی از اولین کارهایی که میکنید وقتیکه سرور افتاد زیر دستتون به جون سخت افزارش بیفتید و ببینید دقیقا چی به چیه
مثلا با این دستور خیلی راحت سرعت نوشتن اطلاعات روی هارد رو در بیارید.
[root@novid ~]# dd if=/dev/zero of=/tmp/output bs=8k count=100k; rm -f /tmp/output
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 0.674417 s, 1.2 GB/s
واو یه شاهکاره نمیتونید تصور کنید شور و شوقی رو که دارم از اینکه همچین سروری زیر دستمه
خب حالا ببینم چند تا پردازشگر داره سرور و برای اینکار از دستور زیر کمک میگیریم
[root@novid ~]# cat /proc/cpuinfo | grep processor | wc -l
16
عدد ۱۶ داره میگه سرور ۱۶ تا هسته داره قضیه چیه؟ پردازشگر ۱۶ هستهای داریم؟ با دستور زیر اسم و مدل پردازشگر رو در میاریم.
[root@novid ~]# cat /proc/cpuinfo | grep "model name" | head -n 1
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
و حالا با یه سرچ کوچولو به این میرسیم که پردازشگر E5620 چهار هسته داره که با فناوری خاص اینتل، انگاری ۸ تا هستن (تریت)! بنابراین خیلی فریب ۸ هسته ای بودنش رو نخورید چون واقعا ۴ تا هسته بیشتر نداره. اما فرکانس کاری ۲.۴ گیگاهرتز هست
حتما باید حدس زده باشید که سرور دو تا پردازشگر داره!
ببینیم لینوکس فرکانس کاری رو چند نشون میده؟
[root@novid ~]# cat /proc/cpuinfo | grep "cpu MHz" | head -n 5
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 1600.000
اینجاست که باید مشکوک شید که نکنه کلاهی گذاشته شده سرتون! چرا فرکانس واقعی در حال کار پردازشگر ۱۶۰۰ مگاهرتزه؟ با فرکانس اسمی ۲۴۰۰ اینقدر اختلاف داره؟ که بعد متوجه میشیم آقای اینتل این پردازنده رو مجهز کرده به اسپید استپ که دقیقا کارش اینه که فقط زمانایی که لازمه و فشاری هست فرکانس پردازشگر بره بالا و از این طریق هم توی مصرف انرژی صرفه جویی شده باشه و هم طول عمر پردازشگر بالا بره!
برای اینکه مطمئن شیم باید یه جوری سیستم رو تحت فشار قرار بدیم!
[root@novid ~]# fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd
جالب نیست؟ به صورت موازی و همزمان، میایم تا زمان نامحدودی اطلاعات بیخودی و در وری (صفر) روی هارد مینویسیم! بعد توی تب جدید میریم وضعیت فرکانسای پردازشگر رو چک میکنیم
[root@novid ~]# cat /proc/cpuinfo | grep "cpu MHz"
cpu MHz : 2401.000
cpu MHz : 2401.000
cpu MHz : 2401.000
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 1600.000
cpu MHz : 2401.000
کار بیشتر کشدیدم، هستههای بیشتری تحریک شدن و تا حداکثر فرکانس ممکن هم دارن کار میکنن راضی هستیم و میریم سراغ بقیه کار!
یکی از کارایی که بعد راه افتادن امکانات مختلف روی سرور حتما باید هرازگاهی چک کنید، تعداد افراد آنلاین و لحظهای هست! اینکه آدمای مختلف دقیقا با چه آیپیهایی و چه پورتهایی به سرور وصل شدن و دارن از خدمات مختلف مثل ssh و یا دیدن سایت و بقیه امکانات بهره میبرن و از همه مهمتر، آیا یک آیپی به صورت غیر عادی داره از منابع سیستم استفاده میکنه؟
root@novid [~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
11 127.100.100.103
14 127.0.0.1
18 127.0.122.98
39 192.168.1.1
همم، به ترتیب از کمترین تا بیشترین استفاده یهو براتون لیست میشه یه نفر تونسته تا چهل کانکشن مختلف به سرور بزنه! میشه با توجه به قدرت سخت افزار و اینجور مسائل، محدودیت گذاشت تا افراد از یه حدی بیشتر نتونن از منابع استفاده کنن.
فرض کنید میزبان سایتی هستید و میخواید ببینید دقیقا چقدر آدم داره از سایتتون بازدید به عمل مییاره!؟
root@novid [~]# netstat -an | grep :80|wc -l
83
زیباست ۸۳ نفر دارن از پورت ۸۰ استفاده میکنن!
فکر کنید حقوق و دستمزد ساعتی دارید میگیرید؟ خب باید یه طوری نشون بدید که چند ساعت وصل بودید از خونه دیگه؟
یه راه اینه آمار ساعتایی رو که با ssh وصل شدید به سرور رو در بیارید، تمام موارد مهم مثل لاگین شدن توی سنت او اس در فایلی به اسم secure ثبت میشه! پس با دستور زیر سعی میکنیم به هدفمون برسیم!
[root@novid ~]# cat /var/log/secure | grep Accepted
Feb 18 22
20 novid sshd[10473]: Accepted publickey for root from 127.0.0.1 port 48198 ssh2
Feb 19 00:31:30 novid sshd[11906]: Accepted publickey for root from 127.0.0.1 port 42468 ssh2
Feb 19 00:38:21 novid sshd[12408]: Accepted publickey for root from 127.0.0.1 port 43839 ssh2
Feb 19 01
45 novid sshd[14260]: Accepted publickey for root from 127.0.0.1 port 57599 ssh2
الان میتونید حتی آمار کسایی که بدون اطلاع شما وصل شدن ssh رو هم در بیارید اما هنوز روش خوبی نیست برای اینکه بشه حقوق ساعتی رو به صورت مستند دریافت کرد.
با کمی جستجو به برنامه psacct میرسیم و متوجه میشیم یک برنامه شاهکاره!
[root@novid ~]# ac
total 71.10
جالبناک شد! در مجموع ۷۱ ساعت وصل بودم به سرور که با اضافه کردن d به دستور میشه حتی به تفکیک روز آمار رو گرفت!
- - - Updated - - -
موقعیتی رو تصور کنید که روی سروری که در اختیار دارید میخواید یک سیستم عامل از اول نصب کنید. اما دسترسی به kvm ندارید.اگه روی سرور دسترسی به گراب داشته باشید به راحتی میشه بدون داشتن kvm یک سیستم عامل جدید رو نصب کرد.حتی موقع خرید سرور جدید بجای اینکه پول بدید بابت فعال کردن kvm خیلی راحت با سنتاواس ۵.۹ میشه سرور ددیکیتد رو تهیه کرد و بعد با روشی که گفته میشه اکثر سیستم عاملهای جدید رو از اول خودتون نصب کنید برای کسایی هم که نمیدونن kvm چیه بگم یه چی تو همون مایههای مانیتور کنار کیس و به صورت ریموت تصویر نصب دیسترو جدید رو خواهید داشت و بنابراین میشه سیستم رو به نحو مطلوب پارتیشن بندی و به دیسترو مطلوب آپگرید کرد.برای شروع کافیه برید پوشه boot و یه فولدر بسازید به اسم دیسترویی که قراره نصب کنید . حالا باید کرنل و initrd دیسترو مد نظر رو دانلود کنید. و بعد توی کرنل سه خط اضافه میکنید تا موقع بالا اومدن سیستم از فایلهایی که دانلود کردید استفاده شه. توی همین گراب هم آیپی و مشخصات شبکه سرور رو میدید تا از طریق ریموت بتونید پروسه نصب اواس جدید رو نگاه کنید! مثلا برای نصب سنتاواس ۶.۴ کافیه این مراحل رو انجام بدید. cd /boot
mkdir centos6
cd centos6
wget http://mirror.centos.org/centos/6.4/...olinux/vmlinuz
wget http://mirror.centos.org/centos/6.4/...nux/initrd.img
و حالا ویرایش گراب ( با فرض اینکه سنتاواس ۵.۹ و گراب یک دارید)
vi /boot/grub/menu.lst
این سه خط رو اضافه میکنید
title CentOS 6.4 VNC Installation
root (hd0,0)
kernel /centos6/vmlinuz vnc vncpassword=yourPassword headless ip=10.0.0.10 netmask=255.255.255.0 gateway=10.0.0.1dns=8.8.8.8 ksdevice=eth0method=http://mirror.centos.org/centos/6.4/os/x86_64/lang=en_US keymap=us
initrd /centos6/initrd.img
رنگای آبی تعداد خطا رو نشون می ده که کلا ۴ خط خواهید داشت. همهشون رو هم با توجه به تنظیماتی که توی گراب وجود داره کپی پیست میکنید. فقط خطی رو که مربوط به kernel و initrd هست رو به شکل بالا دستکاری میکنید. آیپی و نت مسک و گیتوی هم که با توجه به هر سروری فرق میکنه و خیلی مهمه! با این ایپی می تونید ریموت از طریق vnc وارد پروسه نصب بشید پارامتر default=0 رو هم میتونید تغییر بدید تا به صورت خودکار بعد از ریست، سیستم با کرنل دیسترو جدید بوت بشه. اگرم چیزی ترکید و سیستم بالا نیومد میتونید زنگ بزنید به دیتاسنتر و بگید که سیستم رو ریست بدن و اینبار برن توی کرنل دیسترو قدیمی! اما راه بهتری هم هست که کاری کنیم بدون ریست و تغییر گراب، کرنل و initrd بوت بشه! برای اینکار باید برنامه kexec-tools رو نصب داشته باشید. kexec -l /boot/centos6/vmlinuz –initrd=/boot/centos6/initrd.img
kexec -e
دستور اول کرنل و initrd رو در مموری بارگذاری میکنه و دستور دوم باعث بالا اومدن کرنل جدید میشه.
برای اوبونتو و دبیان و اپنسوزه هم میتونید از ادرسهای زیر برای نصب ریموت استفاده کنید.
http://cdimage.ubuntu.com/netboot/
http://www.debian.org/distrib/netinst
و اپنسوزه
mkdir /boot/install
cd /boot/install
wget –output-document=oS-12.3.vmlinuz.install http://download.opensuse.org/distribution/12.3/repo/oss/boot/$(uname -i)/loader/linux
wget –output-document=oS-12.3.initrd.install http://download.opensuse.org/distribution/12.3/repo/oss/boot/$(uname -i)/loader/initrd
و در گراب هم تنظیمات به این شکل میشه
title install
root (sdX,Y) # change this (sdX,Y)
kernel /boot/install/oS-12.3.vmlinuz.install install=http://download.opensuse.org/distribution/openSUSE-stable/repo/oss/
initrd /boot/install/oS-12.3.initrd.install