כן. הוא כבר מתקרב לגבורות (עוד מעט בן שלוש) והגיע הזמן להפיח בו מעט רוח חיים -
שלא יהיה כמו עליזה העצובה, נוגה החיוורת, ושירה היבשושית. שכשמו כן יהיה הוא!
היו בו שלשה כוננים קשיחים: אחד לוגי (שני דיסקי sata ברייד 0) ושניים מיושנים קמעא: כונני pata צנועים על בקר ה IDE. מדידת מהירות הכתיבה אליהם הפיקה את התוצאות הבאות:
ביצועי הכונן הלוגי עולים פי 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, מסכמת את מצב המחשב לפני השינויים:
לא רציתי לאבד את המידע וגם לא להתקין את כל הקהל הגדול הזה מחדש.
הבעיה שעמדה בפני היתה אם כן איך להעתיק את כל הנ"ל מהדיסק hdb האיטי, הקטן והישן אל דיסק ה sata החדש והגדול, שעל בקר הפרומיס – ולשמרו שם עובד ומתפקד טוב מאי-פעם.
דבר ראשון יצרתי image של כל אחת מהמחיצות שעל hdb על הכונן hda.
יצרתי אותם בעזרת התכנה החלונאית acronis true image החביבה עלי.
בעזרתה גם פרשתי מחדש את ה image השונים אל כונן ה sata החדש. אקרוניס מאפשרת לשנות את גודל המחיצה הנפרשת, סוגה (ראשונית, אקטיבית, או לוגית) ואפילו את מערכת הקבצים שלה במקרים מסוימים. היא תקפה לחלונות, לינוקס ו FreeBSD ויכולתי להעביר איתה את כל תכולת הדיסק הישן לחדש. את שלוש מערכות ההפעלה פרשתי כמחיצות ראשוניות, בגודל כפול מגודלן המקורי. את מחיצת הבית פרשתי כלוגית, גדולה בכ 60% מהמקורית.
כיביתי את המחשב, ניתקתי את hdb ובאותה הזדמנות גם חיברתי כונן sata נוסף לבקר הפרומיס. שיהיה.
את השלב הבא נוח למדי לבצע בעזרת livecd.
צעד ראשון הוא הרצת fdisk -l, כמשתמש על:
שני הדיסקים הראשונים לא השתנו – לא בתכנם ולא בכינויהם. נכנסתי לביוס ודאגתי שגם סדר האיתחול (disk order) שלהם לא ישתנה – סדר האיתחול קובע את זיהויים בגראב, וכך הוא:
שימו לב להודעה החוזרת ונישנית של fdisk שהזיהוי שלו אינו בהכרח לפי ה disk order ! התעלמות מכך היא מקור קבוע לתסכול ועצבים.
עכשיו היתה בידי כל האינפורמציה הדרושה לעריכת קובצי הקונפיגורציה שיבטיחו עלית מערכות ההפעלה. הקובץ הראשון לעריכה הוא boot/grub/menu.lst/ של סוזה היציבה. ה-mbr שלו נמצא על hd0 וכך כשהמחשב יעלה תמצא הרשימה מוכנה לבחירת מערכת הפעלה.
רשומה מינימלית חייבת להכיל את זהות ה hd, מיקום הקרנל, מיקום ה initrd אם יש, וזהות מחיצת השורש.
לדוגמה, אובונטו החדשה:
אגב, בהפצות רבות עדכון קרנל יוצר קישור לוגי לקרנל החדש בשם 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/ של סוזה הלא-יציבה:
וגם הוספתי לו את השורה:
וחוץ מזה גם הוספתי את השורה הבאה לקובץ lib/modules/2.6.16.21-0.13-default/modules.dep/ :
אחרי כן ערכתי chroot לסוזה הלא יציבה והרצתי בה את הפקודות הדרושות ליצירת initrd חדש:
וידאתי שה 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 בדביאן המוזר שעלה ומה רואות עיני :
וסדר עלית הדיסקים - עכשיו הוא כזה:
כלומר a הפך ל b, b ל c, ו c ל a...
ערכתי, רק למחיצה (hd3,4) , את fstab ואת menu.lst בהתאם, וגם סוזה us עלתה בכל הדרה.
נותר רק לבדוק איך נראים הביצועים של מערך הדיסקים החדש:
שיפור ניכר לעומת המצב הקודם.
תגידו – זה לא מעשה נורא?
ואמנם התרנגולת המכובדת הנ"ל אמרה:
“...אני כבר אדאג שהסיפור יגיע לעיתון, וכך יסתובב בכל הארץ; זה מה שמגיע לתרנגולות ולבני משפחתן!”
שלא יהיה כמו עליזה העצובה, נוגה החיוורת, ושירה היבשושית. שכשמו כן יהיה הוא!
היו בו שלשה כוננים קשיחים: אחד לוגי (שני דיסקי 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:~ #שיפור ניכר לעומת המצב הקודם.
תגידו – זה לא מעשה נורא?
ואמנם התרנגולת המכובדת הנ"ל אמרה:
“...אני כבר אדאג שהסיפור יגיע לעיתון, וכך יסתובב בכל הארץ; זה מה שמגיע לתרנגולות ולבני משפחתן!”