מהיר משתדרג – או מעשה איום ונורא.

|
כן. הוא כבר מתקרב לגבורות (עוד מעט בן שלוש) והגיע הזמן להפיח בו מעט רוח חיים -
שלא יהיה כמו עליזה העצובה, נוגה החיוורת, ושירה היבשושית. שכשמו כן יהיה הוא!
היו בו שלשה כוננים קשיחים: אחד לוגי (שני דיסקי sata ברייד 0) ושניים מיושנים קמעא: כונני pata צנועים על בקר ה IDE. מדידת מהירות הכתיבה אליהם הפיקה את התוצאות הבאות:
21:27 maheer:~ # hdparm -t /dev/hda
/dev/hda:
 Timing buffered disk reads:  158 MB in  3.00 seconds =  52.65 MB/sec

21:28 maheer:~ # hdparm -t /dev/hdb
/dev/hda:
 Timing buffered disk reads:  81 MB in  3.00 seconds =  27.00 MB/sec

21:29 maheer:~ # hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads:  344 MB in  3.00 seconds = 114.51 MB/sec


ביצועי הכונן הלוגי עולים פי 2 עד 4.5 על ביצועי כונני ה pata המיושנים. דיסקים אלה הותקנו בשעתו "זמנית" – עד שתכלל בקרנל תמיכה בבקר sata המובנה בלוח האם, הלא הוא promise 378.
והנה הוכללה התמיכה, וגם מחיר הדיסקים צנח ככל שקיבולם עלה. הגיע הזמן לשדרג.
אבל ככל שעבר הזמן, נוספו עוד ועוד דברים על הכוננים הללו. hdb, האיטי בין השניים, הכיל את הכבודה הבאה:
על המחיצה הראשונה, hdb1, מערכת ההפעלה אובונטו, 64 ביט. על המחיצה השניה, בעצם על הפרוסה (slice) השניה, ad2s2, מערכת ההפעלה pc-BSD. על המחיצה השלישית הגרסה הלא יציבה של סוזה 10.1 64 ביט. כלומר, הגרסה עם כל העידכונים, רשמיים ולא רשמיים, כולל XGL ו compiz – אך ללא factory.
על המחיצה הרביעית, hdb5, בת כ 70 ג'יגה, היתה מחיצת הבית המשותפת של הפצות 64 ביט רבות: סוזה, אובונטו, פדורה, ג'נטו, דביאן ואפילו מנדריבה.
הטבלה הבאה, שיוצרה בעזרת fdisk -l, מסכמת את מצב המחשב לפני השינויים:
maheer ~ # fdisk -l

Disk /dev/hda: 122.9 GB

   Device      System
/dev/hda1     HPFS/NTFS           Windows XP
/dev/hda2     W95 FAT32 (LBA)     Windows data
/dev/hda3     FreeBSD             FreeBSD 6.1 (64)
/dev/hda4     W95 Ext'd (LBA)                
/dev/hda5     NetBSD              NetBSD 3.0  (64)
/dev/hda6      Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/hdb: 120.0 GB
   Device   Id       System
/dev/hdb1   83       Linux       Ubuntu 6.06          (64)
/dev/hdb2   a5       FreeBSD     pc-BSD 1.0           (32)        
/dev/hdb3   83       Linux       SuSE 10.1 unstable   (64)
/dev/hdb4   5        Extended
/dev/hdb5   83       Linux       Homes 1
/dev/hdb6   82      Linux swap / Solaris

Disk /dev/sda: 148.7 GB
  Device   Id       System
/dev/sda1  83       Linux     Gentoo         (64)
/dev/sda2  83       Linux     SuSE 10.2      (64)
/dev/sda3  83       Linux     Homes2
/dev/sda4   5       Extended
/dev/sda5  83       Linux     Debian         (64)
/dev/sda6  83       Linux     Fedora 5       (64)
/dev/sda7  83       Linux     Homes3
/dev/sda8  82       Linux swap / Solaris
/dev/sda9  83       Linux    Mandriva 2006   (64)

לא רציתי לאבד את המידע וגם לא להתקין את כל הקהל הגדול הזה מחדש.
הבעיה שעמדה בפני היתה אם כן איך להעתיק את כל הנ"ל מהדיסק hdb האיטי, הקטן והישן אל דיסק ה sata החדש והגדול, שעל בקר הפרומיס – ולשמרו שם עובד ומתפקד טוב מאי-פעם.
דבר ראשון יצרתי image של כל אחת מהמחיצות שעל hdb על הכונן hda.
יצרתי אותם בעזרת התכנה החלונאית acronis true image החביבה עלי.
בעזרתה גם פרשתי מחדש את ה image השונים אל כונן ה sata החדש. אקרוניס מאפשרת לשנות את גודל המחיצה הנפרשת, סוגה (ראשונית, אקטיבית, או לוגית) ואפילו את מערכת הקבצים שלה במקרים מסוימים. היא תקפה לחלונות, לינוקס ו FreeBSD ויכולתי להעביר איתה את כל תכולת הדיסק הישן לחדש. את שלוש מערכות ההפעלה פרשתי כמחיצות ראשוניות, בגודל כפול מגודלן המקורי. את מחיצת הבית פרשתי כלוגית, גדולה בכ 60% מהמקורית.
כיביתי את המחשב, ניתקתי את hdb ובאותה הזדמנות גם חיברתי כונן sata נוסף לבקר הפרומיס. שיהיה.
את השלב הבא נוח למדי לבצע בעזרת livecd.
צעד ראשון הוא הרצת fdisk -l, כמשתמש על:


maheer:~ # fdisk -l

Disk /dev/hda: 122.9 GB

   Device Id System
/dev/hda1 7 HPFS/NTFS Windows XP
/dev/hda2 c   W95 FAT32 (LBA) Windows data
/dev/hda3 a5 FreeBSD         FreeBSD 6.1 (64)
/dev/hda4 f  W95 Ext'd (LBA)                
/dev/hda5 a9     NetBSD          NetBSD 3.0  (64)
/dev/hda6 82 Linux swap / Solaris


Partition table entries are not in disk order

Disk /dev/sda: 148.7 GB
 Device    Id   System
/dev/sda1  83 Linux  Ggentoo  (64)
/dev/sda2  83 Linux  SuSE 10.2(64)
/dev/sda3  83 Linux  Homes2
/dev/sda4  5   Extended
/dev/sda5  83 Linux Debian    (64)
/dev/sda6  83   Linux Fedora5   (64)
/dev/sda7  83   Linux Homes3
/dev/sda8  82   Linux swap / Solaris
/dev/sda9  83   Linux Mandriva2006(64)

Partition table entries are not in disk order
Disk /dev/sdb: 320.0 GB

   Device Id System
/dev/sdb1 83 Linux  Slik          (32)

Disk /dev/sdc: 400.0 GB

   Device  Id  System
/dev/sdc1  83  Linux   SuSE 10.1 stable (64)
/dev/sdc2  a5  FreeBSD pc-BSD           (32)
/dev/sdc3  83  Linux   Ubuntu 6.06      (64)
/dev/sdc4   5  Extended
/dev/sdc5  83  Linux   SuSE 10.1unstable(64)
/dev/sdc6  83  Linux   Homes1


שני הדיסקים הראשונים לא השתנו – לא בתכנם ולא בכינויהם. נכנסתי לביוס ודאגתי שגם סדר האיתחול (disk order) שלהם לא ישתנה – סדר האיתחול קובע את זיהויים בגראב, וכך הוא:
Disk /dev/sda: 148.7 GB   -    hd0
Disk /dev/hda: 122.9 GB   -    hd1
Disk /dev/sdb: 320.0 GB   -    hd2
Disk /dev/sdc: 400.0 GB   -    hd3


שימו לב להודעה החוזרת ונישנית של fdisk שהזיהוי שלו אינו בהכרח לפי ה disk order ! התעלמות מכך היא מקור קבוע לתסכול ועצבים.
עכשיו היתה בידי כל האינפורמציה הדרושה לעריכת קובצי הקונפיגורציה שיבטיחו עלית מערכות ההפעלה. הקובץ הראשון לעריכה הוא boot/grub/menu.lst/ של סוזה היציבה. ה-mbr שלו נמצא על hd0 וכך כשהמחשב יעלה תמצא הרשימה מוכנה לבחירת מערכת הפעלה.
רשומה מינימלית חייבת להכיל את זהות ה hd, מיקום הקרנל, מיקום ה initrd אם יש, וזהות מחיצת השורש.
לדוגמה, אובונטו החדשה:
root  (hd3,3)
kernel  /boot/ vmlinuz-2.6.15-26-amd64-generic   root=/dev/sdc3
initrd  /boot/initrd.img-2.6.15-26-amd64-generic

אגב, בהפצות רבות עדכון קרנל יוצר קישור לוגי לקרנל החדש בשם vmlinuz וכך נחסך הצורך לערוך את menu.lst אחרי כל עדכון קרנל. סוזה הולכת צעד אחד נוסף ומוחקת את הקרנל הישן, את קבצי המקור שלו, וגם את המודולים שלו שבספריה lib/module/. כך נחסך מקום רב על הדיסק.
הקבצים הבאים שיש לערוך הם etc/fstab/ של כל אחת ואחת מההפצות.
כל האינפורמציה הדרושה נמצאת בטבלה שלמעלה. מעגנים את כל המחיצות הרלוונטיות ועורכים.
את fstab של pc-BSD ערכתי מתוך FreeBSD-6.1 שנשאר על הדיסק הישן שלו ללא שינוי ולכן עלה ללא בעיה.
אחרי שנסתיימה העריכה, התחלתי להעלות את מערכות ההפעלה בזו אחר זו – לבדיקה.
כאן ציפתה לי הפתעה.
“איזה סיפור איום ונורא" כפי שאמר ה. כ. אנדרסן, “אני לא מאמינה".
http://hca.gilead.org.il/no_doubt.html

אובונטו, ו pc-BSD, שעל הכונן החדש, עלו בלי בעיה. גם מחיצות הבית שלהם, בדירה החדשה זוהו כראוי ושום קובץ לא חסר.
סוזה הלא יציבה, לעומת זאת, לא עלתה. הקרנל ניסה למצוא את המחיצה sdc5 ולא הצליח. אהה, אמרתי בליבי, בוודאי חסר המודול sata_promise ב initrd.
כי סוזה, במסגרת המדיניות הכללית שלה לחסוך בשטח דיסק, מכניסה ל initrd רק את אותם מודולים הדרושים להעלאת המערכת, כפי שזוהו בעת ההתקנה הראשונית. מכיוון שאז לא היה דיסק על בקר פרומיס – לא נכלל המודול ב initrd.
מה עושים?
העלאתי את סוזה היציבה והוספתי את sata_promise לשורה הבאה ב etc/sysconfig/kernel/ של סוזה הלא-יציבה:
INITRD_MODULES="amd74xx sata_promise 3w-xxxx 3w_xxxx processor thermal fan reiserfs"
וגם הוספתי לו את השורה:
MODULES_LOADED_ON_BOOT="sata_promise"
וחוץ מזה גם הוספתי את השורה הבאה לקובץ lib/modules/2.6.16.21-0.13-default/modules.dep/ :
/lib/modules/2.6.16.21-0.13-default/kernel/drivers/scsi/sata_promise.ko:
אחרי כן ערכתי chroot לסוזה הלא יציבה והרצתי בה את הפקודות הדרושות ליצירת initrd חדש:
chroot /mnt/nsusea
/sbin/depmod -a
/sbin/mkinitrd

וידאתי שה initrd החדש אכן נוצר (לפי גודלו ושעת היצירה) ומצפה לטוב העלאתי שוב את סוזה הלא-יציבה.
לתדהמתי המוחלטת עלתה דביאן.
ו uname -a אישר שדביאן עלתה עם הקרנל של סוזה הלא יציבה.
בדקתי בזהירות, חזור ובדוק, את השורות הרלוונטיות ב menu.lst וב fstab והכל נראה בהן נכון: (hd3,4), ו sdc5.
צבטתי את עצמי כדי לוודא שאיני חולם, שתיתי כוס מיים קרים ועשיתי מקלחת קרה. איתחלתי את סוזה הלא-יציבה שנית – ודביאן עלתה.
החלטתי להעלות את סוזה us עם קרנל אחר, כי במה עוד יכולתי לחשוד? מובנה לי בגראב דיסק האיתחול של סוזה 10.1 (ראו פרטים כאן: http://linmagazine.co.il/suse/sml/upgrade/1 ).
והעלתי את הסוררת באמצעותו. עלתה סוזה. בלי חכמות. הבעיה היא בקרנל אם כן – וביתר דיוק ב initrd החדש – הרי רק הוא השתנה.
קצה חוט מצאתי בעובדה שדביאן שוכן ב sda5, אבל מי שאמור היה לעלות הוא sdc5. אולי גורם ה initrd שהשתנה ל disk order חדש?
הרצתי fdisk -l בדביאן המוזר שעלה ומה רואות עיני :
maheer:~ # fdisk -l

Disk /dev/hda: 122.9 GB
   Device   Id  System
/dev/hda1 7 HPFS/NTFS
/dev/hda2 c W95 FAT32 (LBA)
/dev/hda3 a5  FreeBSD
/dev/hda4 f  W95 Ext'd (LBA)
/dev/hda5 NetBSD
/dev/hda6 82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/sda: 320.0 GB,
   Device Id  System
/dev/sda1 83  Linux

Disk /dev/sdb: 400.0 GB,

   Device Id System
/dev/sdb1   83 Linux
/dev/sdb2 a5   FreeBSD
/dev/sdb3 83 Linux
/dev/sdb4 5 Extended
/dev/sdb5 83 Linux
/dev/sdb6 83 Linux

Disk /dev/sdc: 148.7 GB,

   Device Id System
/dev/sdc1 83 Linux
/dev/sdc2 83 Linux
/dev/sdc3 83 Linux
/dev/sdc4 5 Extended
/dev/sdc5 83 Linux
/dev/sdc6 83 Linux
/dev/sdc7 83 Linux
/dev/sdc8 82 Linux swap / Solaris
/dev/sdc9 83       Linux

וסדר עלית הדיסקים - עכשיו הוא כזה:

Disk /dev/sdc: 148.7 GB   -    hd0
Disk /dev/hda: 122.9 GB   -    hd1
Disk /dev/sda: 320.0 GB   -    hd2
Disk /dev/sdb: 400.0 GB   -    hd3

כלומר a הפך ל b, b ל c, ו c ל a...
ערכתי, רק למחיצה (hd3,4) , את fstab ואת menu.lst בהתאם, וגם סוזה us עלתה בכל הדרה.
נותר רק לבדוק איך נראים הביצועים של מערך הדיסקים החדש:
/dev/hda:
 Timing buffered disk reads:  162 MB in  3.02 seconds =  53.56 MB/sec
maheer:~ # hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  348 MB in  3.02 seconds = 115.18 MB/sec
maheer:~ # hdparm -t /dev/sdb

/dev/sdb:
 Timing buffered disk reads:  224 MB in  3.00 seconds =  74.55 MB/sec
maheer:~ # hdparm -t /dev/sdc

/dev/sdc:
 Timing buffered disk reads:  180 MB in  3.01 seconds =  59.78 MB/sec
maheer:~ #

שיפור ניכר לעומת המצב הקודם.
תגידו – זה לא מעשה נורא?
ואמנם התרנגולת המכובדת הנ"ל אמרה:
“...אני כבר אדאג שהסיפור יגיע לעיתון, וכך יסתובב בכל הארץ; זה מה שמגיע לתרנגולות ולבני משפחתן!”