interhost

הבלוג
הכל על שרתים, תקשורת ולינוקס

ESXi: הגדלת מחיצה ב-CentOS LVM

16 בנובמבר, 2011

שלום רב חברים,
היום אני רוצה לדבר על מקרה די שכיח לאחרונה של שינוי גודל דיסק במכונות וירטואליות, המאמר הבא טוב גם לסתם הגדלת מחיצה במערכות מבוססות LVM בלי קשר ל-Vmware או CentOS אבל אני רוצה לדון בפתרון כולו מההתחלה על הסוף.

לא אחת קורה שלקוח מעוניין להגדיל את שטח הדיסק של השרת הוירטואלי שלו. את השלב הראשון של הגדלת גודל הדיסק ב-ESXi – ודאי רובכם מכירים:

ESXi הגדלת שטח דיסק

ESXi הגדלת שטח דיסק

1) לחיצה ימנית על המכונה הוירטואלית. 2) לבחור ב-"Edit Settings" (אגב המכונה יכולה להיות דלוקה, לא חייבים לכבות אותה). 3) לשונית "Hardware" (נפתחת בדיפולט). 4). בוחרים את הדיסק מהרשימה. בד"כ שמו "Hard Disk 1". ולאחר מכן מסתכלים בצד ימין כמו שמופיע בתמונה. 5) רושמים את גדול החדש של הדיסק (מוסיפים את כמות הגיגות שרוצים). 6) לוחצים על "OK".

השלב הקל מאחורינו, כעת נצתרך קצת לכתוב. שימו לב, שכל הפעולות הן על אחריותכם! פקודה לא נכונה יכול לגרום לאובדן כל הנתונים בדיסק. כמו כן, גם אם עשיתם הכל נכון עדיין קיים חשש שמשהו ישתבש ולכן אני ממליץ בחום לבצע גיבוי או SNAPSHOT למכונה לפני המשך לשלב הבא.

שלב שני: הוספת מחיצה נוספת.
שימו לב: המדריך מתייחס כאן רק למערכות הפעלה שהותקנו עם LVM, ישנה שיטה גם להגדיל מחיצות מסוג ext3 אבל עושים זאת בצורה שונה לזאת שמתוארת כאן.

ראשית עושים אתחול למכונה כדי שהמערכת תזהה שהדיסק עצמו גדל או שפשוט כותבים partprobe וזה אמור לזהות שהדיסק גדל. ניתן לבדוק זאת באמצעות פקודת fdisk -l, אתם אמורים לראות כבר בשורה הראשונה את הגודל של הדיסק:

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00002b0f

שימו לב: שאכן אתם רוצים להגדיל את הדיסק sda. אם למערכת מוקצים שני דיסקים והינכם מעוניין להגדיל את הדיסק השני אזי יתכן ששמו sdb. המדריך כאן מתייחס להגדל המחיצה הראשית, שלא צריך גם לעשות לה umount והמידע לא נאבד – זאת הגדולה כאן.

אם כן, מתוך מערכת ההפעלה, בזמן הריצה (ואחרי שעשיתם גיבוי!) נכנסים כמשתמש root ומוסיפים מחיצה חדשה:

fdisk /dev/sda
n
p
3
t
8e
w

כעת הסבר על מה שעשינו. נכנסו באמצעות fdisk לעריכת של הדיסק שלנו שהוא בעצם גדול יותר מקודם אך המחיצות שלו לא השתנו. בהנחה שיש לנו מחיצה ראשית sda1 ומחיצת swap בשם sda2, הוספנו מחיצה נוספת בשם sda3 (ולכן רשמנו 3 לאחר פקודת p) והגדרנו אותה מסוג LVM (פקודת t מגדירה את סוג המחיצה, כאשר 8e מסמל LVM). (אם נשאלתם לגודל צילינדרים וכאלו פשוט תלחצו enter וזה יקח את כל השטח הפנוי). לאחר מכן שמרנו (פקודת w).

לאחר פקודת w המערכת מוציאה אותנו מ-fdisk. כעת ניתן שוב לתת פקודת סריקת מחיצות ודיסקים partprobe. אם לאחר partprobe אתם מריצים fdisk /dev/sda ולא רואים את המחיצה החדשה שהוספנו (שהיא sda3) אזי צריך לעשות אתחול לשרת (reboot).

שלב שלישי: איחוד מחיצות באמצעות כלי LVM. הרעיון כאן מעניין ומבריק, למעשה LVM מאפשרת לנו להוסיף מחיצות חדשות למחיצה הקיימת בכדי לפרוס את שטחה על מחיצה חדשה ובכך להגדיל אותה. (בדומה ל-VMWARE שניתן להוסיף לו דיקים נוספים וכך להגדיל את ה-datastore, הוא פשוט פורס את עצמו עליהם ובונה דיסק אחד גדול ומתמשך).

מה שצריך לעשות כדי ליישם את הרעיון הוא:

pvcreate /dev/sda3

vgextend VolGroup00 /dev/sda3

lvextend /dev/VolGroup00/LogVol00 /dev/sda3

תיאור למה שעשינו: ראשית יצרנו מחיצת LVM וירטואלית (מדומה) על גבי מחיצה פיזית sda3. שנית באמצעות vgextend פרסנו את קבוצת VolGroup00 על גבי sda3. ובסוף הגדלנו את הדיסק LVM שלנו (בשם LogVol00) על ידי פקודת lvextend כך שהוא ישתמש בשטח הדיסק החדש של sda3 ויוסיף אותו לעצמו כאילו זה היה דיסק אחד גדול.

שלב רביעי ואחרון: פריסת מערכת קבצים (שינוי גודל). בסה"כ נשאר לנו לתת פקודה אחרונה בשרת שלנו כדי לסיים את התהליך והיא:

resize2fs /dev/VolGroup00/LogVol00

פה סיימנו. שימו לב שכאן הגדלנו את המחיצה הראשית (ה-ROOT) בלי לפרמט אותה, תוך כדי ריצה וכמובן בלי לאבד מידע. אפשר לבדוק ולאמת שאכן שטח הדיסק גדל ע"י פקודת df -h.

אני ניסיתי את זה על מערכת CentOS עם LVM. כמו שאמרתי אם אין LVM יש דרך אחרת לעשות את ההגדלה בעזרת gparted, באתר של gparted יש להם ממש iso gparted live cd שאפשר לעלות איתו את השרת הוירטואלי ואז בממשק גרפי נחמד אפשר להגדיל את מחיצת ה-ext3 שלנו (כמובן לאחר שהגדלתם את הדיסק ב-ESXi כמו שמופיע בשלב הראשון).

שימו לב: gparted לא תומך (בשלב זה) בהגדלת מחיצות LVM ולכן יש לפעול לפי השלבים שהסברתי פה במדריך הזה.

תודה רבה ואל תשכחו לבצע גיבוי לפני.

יצאה גרסת CentOS 6!

26 ביולי, 2011

אפשר להוריד מכאן:

http://centos.syn.co.il/6.0/isos/

אשמח לשמוע ביקורות.

התקנת ioncube בלינוקס

24 ביולי, 2011

רוב מערכות ה-php מבוססות קוד פתוח, הרי ה-php היא שפה פתוחה שעוברת קומפילציה רק בזמן ריצה.
חברות תוכנה שרצו לפתח קוד php ולהגן עליו צריכות פתרון שיכול לקודד את הקוד הפתוח שלהם ע"מ למנוע העתקות ושכתובים, בעצם למנוע גניבת תוכנה.

הפתרון של Ioncube שאגב מתחרה במוצר Zend Optimier, שהוא מוצר של חברת האם של ה-php הלוא הי Zend, בא לפתור את הסוגיה.

קבצי ה-php שקודדו בעזרת ioncube מצריחים טעינת מודול "טעינה" (loader) ברמת ה-php בכדי שיוכל לתמוך ולקרוא את הקבצים הללו ולקמפל אותם בזמן ריצה בשרת.

כדי להתקין את ה-Loader בשרת לינוקס צריך לבצע מספר פעולות פשוטות ב-shell,

ראשית צריך להוריד את חבילת ה-loaders, לאחר מכן לחלץ את המודול המתאים לגרסת ה-php שלנו, שאפשר לבדוק בהרצת הפקודה php -v, נכון להיום לרוב יהיה מדובר בגרסת php 5.2.

השלבים להתקנה של ה-ioncube loader:

cd /root/
wget downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
cd ioncube
mkdir /usr/local/ioncube/
cp ioncube_loader_lin_5.2.so /usr/local/ioncube/

וכעת צריך לערוך את קובץ ה-php.ini בשרת ולהכניס לשם את השורה שטוענת את המודול. כדי לאתר את קובץ ה-php.ini אפשר לעשות את הדבר הבא:

php -i | grep -i ini

הנתיב יופיע בשורות הראשונות של הפלט, לדוגמא:

Loaded Configuration File => /usr/local/etc/php5/cgi/php.ini

מוסיפים לסוף הקובץ (ממש לשורה האחרונה) את השורה הבאה:

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
ובזה סיימנו!
הטיפ תקף לשרתים וירטואלים ויעודיים כאחד ולשרתים עם פנל ניהול של Directadmin.

פינוי דיסק לאחר עדכון Win2008 ל-SP1

19 ביולי, 2011

לאחר עדכון מע' Windows 2008 R2 ל-SP1, מצתברים המון קבצים זמניים שתוספים הרבה מקום על הדיסק בשרת.
ניתן לנקות אותם באמצעות פקודה פשוטה שמריצים כ-administrator ושרות הפקודה (cmd):

dism /online /cleanup-image /spsuperseded

הוספת מערך רייד ללא ריסטארט ב-VMware ESXi

3 ביוני, 2011

רציתי לעלות על הכתב שיטה לבניית מערך רייד חדש (כיום זה נקרא Virtual Disk) ונוסף בשרתי IBM ו Dell עם מערכת וירטואליזציה של VMware ESXi ללא ביצוע אתחול לשרת וללא השבתה של המערכת. הכלי מאפשר לנו להמשיך להריץ את השרת על המערך הקיים ולהוסיף דיסקים חדשים למערך חדש, כמובן בלי לכבות את השרת.

השיטה שאני שהולך להציג נבדקה בגרסאות 4.0 ו 4.1 של ESXi ועל דגמי השרתים ובקרי רייד הבאים:

  • Dell R610 – PERC H700
  • Dell R410 – PERC H700
  • Dell R710  – PERC H700
  • IBM X3550 M3 – MEGARAID
  • מדובר בבקרי רייד עם הצ'יפ של חברת LSI. הבקרים האלו נשלטים בעזרת כלי מיוחד (MegaCLI) המאפשר עבודה ישירה מול הבקר, בעזרתו ניתן להוציא נתונים מפורטים אודות הדיסקים, מצבם, מערכי הרייד וכו'.

    את הכלי אפשר להשיג עבור פלטפורמות שונות, הגרסה של הלינוקס מתאימה עבור ESXi.

    את ה-MegaCLI נוריד מהקישור הזה, תגללו למטה עד שתראו MegaCLI – VMWare
    (MegaRAID Release 4.5.2)

    נכון להיום הגרסה המוצעת אצלהם היא גרסת 8.00.28 והיא בהחלט מתאימה לנו.

    אפשר גם להוריד את הכלי, מוכן להרצה, ישירות מהאתר שלנו: MegaCLI (לחיצה ימנית, "שמור").

    בכדי להוריד את הכלי אל המערכת ה-ESXi יש להפעיל את ה-SSH, בגרסאות 4.1 אפשר לעשות זאת דרך ה-Vsphere Client עצמו, להלן השלבים לביצוע:

    1. הולכים ללשונית ה-"Configuration"  Vsphere Client configuration tab

    2. ברשימת Software יש ללחות על "Security Profile" vsphere-secprofile

    3. משם בצד ימין ל-"Properties" vsphere-properties

    4. יש לסמן את "Remote Tech Support (SSH)" וללחוץ על "Options…":

    vsphere-techsup

    5. וללחוץ בחלון שנפתח על "Start" vsphere-techsupstart

    טוב, אחרי שהשגנו את הדרוש נעבור כעת לשלב הבשרי של הרצת הכלי השימוש בו, לשם כך ראשית עליני להיכנס ב-SSH לשרת ולעבור למחיצת הרוט (root) כדי שנוריד לשם את ה-MegaCli ונריץ אותו. הדרך הפשוטה והנוחה ביותר היא להישתמש ב-wget:

    wget http://www.interhost.co.il/MegaCli

    חשוב לי לציין שמעכשיו צריך להיות זהירים ביותר, פקודה לא נכונה יכולה להרוס את המערך הנוכחי שכבר מוגדר בשרת שעליו מותקנים השרתים הוירטואלים וההיפרויזור (vmware עצמו).

    הכלי כאמור מאפשר לערוך את המערכי הרייד הקיימים, לשנות הגדרות של דיסקים ולהוסיף מערכי רייד חדשים לשרת.
    זהו גם המקום לציין שכל האחריות כאן תצתרך לפול עליכם (אני יוצא מנקודה שהקרואים שלי הם אנשים טכניים, אחריים ובוגרים) – לכן אם אינכם בטוחים במשהו אנא תשאלו שאלות בתגובות ואשמח להדריך אתכם.

    לפני שנמשיך רציתי להגיד כמה מילים מקדימות על תצורת דיסקים חדשים של IBM ו-Dell,

    בשרתי IBM הדיסקים החדשים מוגדרים (firmware state) כ-"JBOD" (או גם Unconfigured-BAD). לפני שבונים דיסק וירטואלי (Virtual Disk) חדש אנחנו חייבים לשנות את ההגדרה שלהם ל- Unconfigured GOOD אחרת MegaCli יתלונן ולא יאפשר לנו להוסיף אותם למערך. כדי לעשות זאת עלינו לאתר תחילה את הדיסק החדש שלנו בעזרת הפקודה הפשוטה הזו:

    MegaCli -PDList -a0/.

    הפלט יציג לנו את רשימת כל הדיסקים שמחוברים לשרת, הדיסקים ממוספרים לפי שני פרמטרים חשובים שנשים לב עליהם:

    Enclosure Device ID: 64
    Slot Number: 3

    ה-Enclosure ID וה-Slot Number, נשתמש בערכים אלו בהמשך.

    כמו כן נוכל לראות את מצב הדיסקים – "Firmware state: Online, Spun Up"  יופיע ליד דיסקים שכבר יושבים במערך והם ב-Production – לא ניגע בדיסקים האלו.

    הדיסקים החדשים יופיעו לרוב בסוף הרשימה וה-state שלהם יהיה JBOD בשרתי IBM.

    בשרתי Dell יש לשים לב לערך "Foreign State" – לרוב דיסקים חדשים יהיו מוגדרים כ-Foreign.

    כדי להכין דיסק בשרת IBM למצב תמיכה ברייד  (Configured Good) יש להריץ את הפקודה הבאה אחרי שאיתרנו את ה- Enclosure ID וה-Slot Number שלו:

    ./MegaCli-PDMakeGood -PhysDrv[E:S] -a0
    

    ב-E נרשום את ה-Enclosure ID וב-S את ה-Slot Number של הדיסק.

    נחזור על הפקודה עבור יתר הדיסקים החדשים.

    בשרתי Dell ננקה את הגדרת ה-Foreign מהדיסקים:

    ./MegaCli -CfgForeign -Clear -a0
    

    הפקודה מנקה את כל הדיסקים שנמצאים במצב זר (Foreign) בשרת.

    זהו עכשיו אנחנו מוכנים לבנות Virtual Disk חדש. ניתן להקים Virtual Disk חדש בתצורות רייד שונות, נראה כיצד לבנות מערך רייד 1 (RAID MIRROR) חדש:

    ./MegaCli -CfgLdAdd -r1 [E:S, E:S] -a0

    בסוגריים המרובעות מקלידים את המזהים של הדיסקים, עבור הדיסק הראשון שיהיה חבר במערך נרשום את ה-Enclosure ID, נקודותיים ואת ה-Slot Number ואז פסיק וממשיכים עם המזהים של הדיסק השני שיהיה שותף במערך.
    הפרמטר האחסון a מציין את מספר המערך; לרוב זה מתייחס לבקרי רייד מתקדמים יותר שיש בהם  כמה מערכים שכל מערך מכיל מספר דיסקים וירטואליים (ב-99% מהמקרים לא נצתרך לשנות את ערך האפס כמו בדוגמא ונתיר אותו על כנו).

    הפעולה מסתיימת במהרה ויורדת שורה עם הודעה שאומרת שדיסק הוירטואלי מוכן לעבודה.
    מה שנותר לנו הוא לסגור את ה-SSH בחזרה דרך הגדרות האבטחה כפי שעשינו בתחילת המאמר.

    הדיסק הוירטואלי החדש מוכן לשימוש כעת, אפשר להוסיף אותו דרך ה-Storage שבמערכת ה-Vsphere.

    עבודה עם mysql-proxy

    1 במאי, 2011

    בפרוייקטים גדולים אשר צורכים הרבה משאבי מערכת כגון אתרי חדשות, פורטלים ואתרי תוכן וידאו ישנה עבודה מרובה מול מסד הנתונים. דרישה גדולה מתבטעת בכמות גבוהה של גולשים בו זמנית באתר אשר גוררת אחריה מספר רב של פניות למסד הנתונים במקביל.

    כאשר שרת ה-MySQL  אינו עומד בעומס אנחנו יכולים להוסיף שרת נוסף והפתרון לכך הוא שימוש במנגנון ה-Replication הוותיק. המנגנון מבצע סנכרון של הנתונים מהמסד הראשי (Master) לשרת המשני (או שרת "עבד", באנגלית Slave).

    אצא מנקודת הנחה שכבר יש לפניכים שני שרתי MySQL עם רפליקציה מוגדרת בתצורת master-slave, אוקי אז ההגדרה די פשוטה ומהירה.

    ישנן מספר עובדות שאנחנו יודעים:

    1. שהרפליקציה עובדת בצורה חד-כיוונית, ז"א שכל כתיבה לשרת Master עוברת לשרת ה-Slave.
    2. הכתיבה יכולה להתבצע אך ורק לשרת ה-Master בלבד.
    3. קריאות מהמסד יכולות להתבצע משני השרתים, הן מהראשי והן מהמשני.

    מצויידים בידע זה עלינו לבצע שינויים בקוד (באפליקציה) ע"מ לנתב את כל שאילתות הכתיבה רק למאסטר ואת שאילתות הקריאה לשניהם (או לרק לסלייב).

    סיטואציה זו מצריכה שינויים בקוד ולעיתים אף שינויים גדולים מה גם שאם נרצה לבצע הפניה של שאילתות קריאה לשני השרתים יהיה עלינו לבצע מנגנון Load Balancing קטן ברמת הקוד או ברמת ה-DNS.

    אפשר כמובן לרכוש מערכת Load-Balancing יקרה שתעשה בשבילו את העבודה או שאפשר להשתמש בכלי חינמי שנתמך על ידי MySQL שנקרא "mysql-proxy".

    הכלי רץ כסרוויס על השרת, רצוי להתקין אותו על שרת האפליקציה או שרת אחר שאין בו MySQL – ע"מ שלא יווצרו התנגשויות כי הוא גם מאזין בפורט 3306 (כמובן שזה גם ניתן לשינוי).

    את ה-mysql-proxy יש להריץ עם פלאגין שנקרא rw-splitting.lua
    בכלל mysql-proxy עובד עם פלאגינים בשפת LUA (זוכרים אותה מ-mod_magnet?)

    מה שבעצם mysql-proxy עושה הוא מאזין בפורט של שרת mysql (הוא בעצם "מתחזה" לשרת mysql בעצמו) ומעביר את הפניות עליו לשרתים שהגדרנו בשורת ההרצה.

    הפלאגין יודע לאבחן האם מדובר בשאילתת כתיבה או קריאה ולפי זה יודע להפנות אותה לשרת המתאים. UTF8 עובד נהדר (עברית, ערבית עוברת הן בכתיבה והן בקריאה).

    להלן הסינטקס לדוגמא להפעלת mysql-proxy:

    mysql-proxy –proxy-backend-addresses=master.mysql-server.com:3306 –proxy-read-only-backend-addresses=slave.mysql-server.com:3306 –proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua –proxy-address=0.0.0.0:3306 –admin-address=127.0.0.1:4041

    בכחול מסומן הפרמטר שבו מגדירים את שרת ה-Master ובירוק סלט מסומן הפרמטר שבו מגדירים את השרתים לקריאה בלבד שהם שרתי ה-Slave.

    כמו כן בירוק קהה מסומן הפרמטר שטוען את הפלאגין rw-splitting שיודע לנתב את השאילתות לפי סוגן.

    לפני שמתחילים לעבוד חשוב לבדוק שמאושר במסדי הנתונים להתחבר מכתובת הIP של השרת עליו מותקן ה mysql-proxy וגם לוודא שיש יוזר נוסף עם כתובת הIP של השרת הזה, הרי כל השאילתות מעכשיו יגיעו משרת ה-proxy.

    כל מה שנותר הוא לעדכן בקוד את כתובת השרת mysql-proxy כשרת ה-mysql שלנו.

    סנכרון שעון בשרת לינוקס ntpdate

    7 באפריל, 2011

    בכדי לבצע סנכרון שעון בשרת לינוקס בצורה פשוטה ויעלה.
    במערכות Debian צריך להתקין את החבילה הנקראית ntpdate.
    לשם כך יש להריץ את הפקודה הבאה מהשל בשרת:
    apt-get install ntpdate

    אני נוהג לעדכן את השעון מול שרת ה-ntp של אינטרנט זהב, יש להריץ את הפקודה הבאה:

    ntpdate ntp.inter.net.il

    אם רוצים שהעדכון יבוצע בכל לילה בשעה 2 באופן אוטומטי אפשר להכניס אותו ל-cron כך:

    crontab -e

    ומכניסים את השורה הזאת:

    0 2 * * * /usr/sbin/ntpdate ntp.inter.net.il > /dev/null 2>&1

    עושים שמירה וגמרנו.

    כעת השרת שלנו תמיד יהיה בזמן מדיוק על השניה.

    כלי לבדיקת תקינות רוחב פס בשרתי לינוקס

    27 בנובמבר, 2010

    צהוריים טובים לכולם,
    היום רציתי לספר לכם על כלי שימושי שבודק טוהר רוחב פס שהוקצא ע"י הספק בחוות השרתים לשרת שלנו. הכלי שנקרא iperf עובד בשיטת client-server ולכן, הבנתם נכון, צריך להתקין אותו בשני קצבות, שני שרתים.

    iperf מאפשר לבדוק האם ה-bandwidth שהשרת צריך לקבל (החוצה upload או פנימה download) הוא פרטי ונקי ושאין עומס על הקו. כמובן, בכדי לאמת שאכן אנו בודקים את הפס בין השרת לחוות השרתים רצוי להפעיל את הקליינט בשרת מרוחק "בטוח" תקין. ז"א רצוי להתקין את קליינט אחד למשל באותו חוות שרתים בשרת ליד ואחד מחוץ לחוות השרתים וכך יהיה לכם אומדן להשוואה.

    אם לשרת הקרוב השגיאה הינה 0.01% זה אומר שזה המאה אחוז שלכם ממנו ואתם לוקחים את נקודת היחוס. השגיאה לשרת קרוב יכולה לנבוע מהרבה סיבות, לדוגמא שגיאות בפורט (כבל רשת דפוק), דיסקים איטיים בשרת, שגיאות בזכרון, סוויטץ עמוס, חומת אש שמגינה מפלי "הצפה" (flood) – לכן אם תהיה לכם נקודת יחוס תוכלו להשוות את התוצאות של בדיקה לשרת המרוחק עם השרת המקורב ולדעת שההבדל ביניהם הוא בעצם תלוי בחוות השרתים והלאה.

    במערכת הפעלה Debian ההתקנה בשרת פשוטה מאוד:

    apt-get install iperf

    בצד השרת המרוחק

    iperf -s -u

    השרת המרוחק יתפקד כ-סרבר (server), אנא ודאו שפורט UDP 5001 פנימה פתוח, זה הפורט הדיפולטיבי ש-iperf עובד איתו במצב UDP. ולמה UDP? כי UDP הוא פרוטוקול ללא בקרת שגיאות, בניגוד ל-TCP, ולכן אם יש בעיות על הקו הפאקטות של UDP יפלו ע"י הסוויטצים והנתבים בדרך. -u אומר שאנחנו עובדים בפרוטוקול UDP בשרת והפרמטר -s אומר ש-iperf רץ במצב "שרת" (server).

    בצד השרת הנבדק (השרת שאת הקו שלו בודקים)

    מריצים:

    iperf -c <כתובת שרת מרוחק> -u -b 10M

    10M- מסמל את גודל רוחב הפס שאותו רוצים לבדוק. בצורת ריצה כזו iperf בודק את ההעלאה מן השרת הנוכחי ולשרת המרוחק במהירות עשר מגהביט, בפרוטוקול UDP. (אל תשכחו לוודא שפורט 5001 UDP פתוח החוצה).
    -c אומר שהכלי ירוץ במצב "לקוח" (client). והפרמטר -b מסמל שאנחנו רוצים לקבוע את מהירות קצב העברת הנתונים לשרת המארח.

    לאחר מספר שניות יופיע הפלט שנראה כך:

    iperf

    iperf

    סימנתי באדום את מה שמעניין אותנו מהפלט "Lost/Total Datagrams" מה שמצביע כמה פאקטות "נפלו" בדרת לשרת המרוחק. אם המספר גבוהה בהשוואה למספר הפאקטות שנפלו בדרך לשרת המקורב (נקודת היחוס שלנו) זה מראה על מצב חשוד. תריצו את הדיקה עוד כמה פעמים שיהיה לכם ערך גם ערך ממוצע וגם לראות שזה לא היה נקודתי. תנסו להוריד או לעלות את מהירות הבדיקה ולראות האם זה משפיע על כמות ה- dropped packets (פאקטות שנפלו).

    אם הנתונים שאספנו מראים על יותר מ-1% LOSS (איבוד פאקטות) הבדל מנקודת היחוס אפשר לפנות בגב זקוף לספק התשתית ולטעון לבעיות על הקו המסופק לשרת.

    בהצלחה!

    המשך טיפים נוספים בלינוקס

    24 באוקטובר, 2010

    כשאני רוצה לבדוק את מהירות קריאה/כתיבה של הדיסקים בשרת אני מרוקן את הקאש לאחר כל העתקה של קובץ, כי אחרת בבדיקה השניה המהירות מייד תעלה ולא תהיה אמינה בגלל שהקובץ נכנס לקאש של המערכת.
    ריקון המתמון (cache) של קבצים במערכת ההפעלה בשרת:

    sync; echo 3 > /proc/sys/vm/drop_caches

    מדובר בזכרון מתמון שיושב ב-RAM של השרת ואוגר בתוכו קבצים וחלקי קבצים שנגשים עליהם בתדירות רבה.

    התקנת Debian על שרתי IBM X3250/X3550 עם בקר M1015

    6 באוקטובר, 2010

    שלום רב חברים,
    לאחרונה יצאה סידרה חדשה של שרתי IBM בעלי בקר RAID חדש מבית LSI מדגם M1015 או בשמו המלא:

    ServeRaid M1015

    כאשר השם הזה ניתן לו על-ידי IBM. שם של הבקר לפי היצרן LSI הינו:

    MegaRAID SAS 9240-4i

    בהתקנת מערכת CentOS (או REDHAT כמובן) ההתקנה עוברת חלק ומזהה את הבקר בצורה מדוייקת. אך, במערכות Debian Lenny (גם בגרסת ה-testing שלהם ה-"Squeeze") וגם במערכות Ubuntu עד 10.04 (לא נבדק בגרסת בטא 10.10) הבקר לא מזוהה בשלב ההתקנה.

    הסיבה לכך היא גרסת הדרייבר של הבקר ב-Debian שהיא מעט ישנה יותר שהיא 00.00.04.1 megaraid_sas. הגרסה הדרושה לזיהוי ועבודה מול הבקר M1015 היא 00.00.04.17. באתר IBM אפשר למצוא את הגרסה למערכות Centos/SUSE/RH אבל לצערי לא להתאים אותה לדיסטרו של Debian.

    מה שהביא אותי לפתרון, היה קל מהצפוי, גילית את הדרייבר המתאים באתר LSI. ההתקנה שלו יחסית פשוטה ונעשית תוך שימוש ב Disk-on-key USB. את הדרייבר המתאים אפשר להוריד מ-כאן (אם אתם מתקינים את המערכת דביאן 5.0.6 אפשר להשתמש בדרייבר של 5.0.5 שמופיע באתר שלהם, הוא יעבוד מצויין).

    לאחר שהורדתם את הדרייבר, תפתחו את קובץ ה-zip ותעתיקו את התוכן ל-USBKEY.

    כשמגיעים לשלב שבוא המערכת לא מוצאת את הדיסקים ומציאה לבחור דרייבר מהרשימה שיש לה צריך לחבר את הUSBKEY ולעשות לו mount בשרת לתיקיית /mnt לדוגמא.

    לאחר מכן, צריך להעתיק 2 קבצים לתיקיות מערכת. אחד הקבצים הוא דרייבר בשם megaraid_sas.ko והשני הוא קובץ initrd. (אנא קראו את הקובץ README שנמצא בחבילת הדרייבר, יש שם הסבר מדוייק לאיזה נתיב צריך להעתיק את הקבצים).
    הקבצים שיש להעתיק:

    cp -f /mnt/megaraid_sas.ko /lib/modules/2.6.26-2-amd64/kernel/drivers/scsi/megaraid
    cp -f /mnt/initrd.img-2.6.26-2-amd64 /etc

    כשהעתקם את הקבצים, בצעו umount /mnt לUSB-KEY, חזרו למסך ההתקנה ובצעו "back" ואז תריצו את שלב זיהוי הדיסקים מחדש, הפעם ההתקנה תזהה את הבקר שלכם.

    חשוב לא לשכוח בסוף ההתקנה לא לבצע ריסטארט לשרת אלא לבצע את הפעולות שכתובות הקובץ הREADME אחרת השרת לא יעלה לאחר ההתקנה.

    הפעולה שיש לבצע בסוף ההתקנה היא:

    cp -f /etc/initrd.img-2.6.26-2-amd64  /target/boot/initrd.img-2.6.26-2-amd64

    עוד נקודה חשובה שלא כתובה בדוקומנטציה, כשאתם מבצעים עדכונים לשרת (apt-get upgrade) שימו לב שלא מעודכן ה-kernel או ה-libc. אם המערכת רוצה לעדכן אותם, אנא ודאו שהיא לא דורסת את הדרייבר (נקרא גם מודול בלינוקס) שהתקנו בשם megaraid_sas. אם היא כן דורסת בדקו שהדרייבר החדש הינו מגרסת 00.00.04.17 ומעלה (מה שאומר שהכניסו את הדרייבר החדש כבר).

    בכל מקרה הייתי מציע לבדוק טוב לפני שעושים עדכון לרכיבי הגרעין של המערכת בזמן הקרוב. אני מאמין שתוך כמה חודשים העניין יסודר בצורה רשמית.

    פיד RSS לפוסטים או פיד RSS לתגובות.