הנושא של מאמר זה הוא חיבור התקנים חיצוניים ל-Mac באמצעות ממשקי SAS, Fibre Channel (FC), eSATA. מיד נגיד שכדי לפתור את בעיית הגישה למכשירים כאלה, יש דרך לאדם בריא: לבנות מחשב זול, לחבר כרטיס בקר HBA SAS או FC (לדוגמה, מתאם LSI פשוט), לחבר את המכשירים שלך ל הבקר הזה, התקן כל לינוקס על המחשב האישי ועבוד מ-Mac דרך הרשת. אבל זה בנאלי ולא מעניין. נלך בדרך ההארדקור ונחבר את המכשירים שלנו ישירות למק.
מה אנחנו צריכים בשביל זה:
– סכום כסף הגון לקניית ציוד חדש, או מזל טוב במכירות פומביות באיביי (שם, עם קצת מאמץ, ניתן לקנות את הציוד הנדרש מהדורות הקודמים בזול פי 10 ממחיר המחירון);
- המאמר הזה.
כדי לעבוד עם סרט מגנטי (מיוצג כעת כמעט אוניברסלית בפורמט LTO), עליך להיות בעל כונן קלטות LTO (סטרימר) או ספריית קלטות. זהו מכשיר יקר למדי לרכישה הראשונית (ממאות אלפי רובל), אבל שווה סכום סביר של כסף בקניית משומש. מכיוון שדורות LTO משתנים בערך כל שנתיים, והתאימות מוגבלת לשני דורות, השוק המשני רווי למדי במכשירים בני ארבע שנים ומעלה, כלומר. הדור שלפני האחרון והלאה. אם אתה קונה מכשיר חדש למטרות מסחריות, אתה בעצמך מבין למה אתה צריך אותו. אם אתה רוצה לקנות לבית ולמשפחה שלך, אתה יכול לשקול אפשרות זו כדרך לאחסן מידע בארכיון (מכיוון שהמדיה עצמה זולה מאוד ל-1 גיגה-בייט).
החל מדור LTO-5 (ובחלקו LTO-4), התקנים לעבודה עם סרט מגנטי מחוברים בחומרה למחשב באמצעות ממשק SAS או FC (בדרך כלל ישנן שתי גרסאות של כל מכשיר)
מצד שני, אפל מספקת לנו בחביבות ממשק USB-C ב-Mac שלנו (עובד באמצעות פרוטוקולי USB, Thunderbolt 3 או DisplayPort), לפעמים ממשק Ethernet, כמו גם Thunderbolt 3 קנייני - Thunderbolt 2 ו-Thunderbolt - FireWire 800 מתאמים.
מָבוֹי סָתוּם? לא באמת. למרבה המזל, Thunderbolt יכול לפעול במצב PCIe ולאפשר חיבור כרטיסי PCIe באותו אופן כאילו היו מותקנים ישירות בתוך מארז המחשב. בשל כך, כל הרחבה של תצורת החומרה של Mac אפשרית, בתנאי שיש מתאם ומנהלי התקנים מתאימים.
מבחינה קונספטואלית, הדרך הפשוטה ביותר לפתור את הבעיה היא קופסה חיצונית למתאמי PCIe עם ממשק Thunderbolt (מערכת הרחבת כרטיס PCIe), לתוכה ניתן להתקין מתאם SAS או FC Host Bus (HBA). לדוגמה, קופסאות כאלה מיוצרות על ידי החברה ואחרים. יש כאן אזהרה: לא כל בקר יעבוד עבורנו, רק אלו עם דרייבר עבור macOSיש מעט מאוד לוחות כאלה, והזולים והפופולריים ביותר (למשל, אותו LSI) אינם ביניהם. למרבה המזל, חברת Sonnet טרחה להרכיב כרטיסי PCIe עם מערכת הפעלה שונות באמצעות ממשק Thunderbolt.
פתרון נוסף הוא רכישת ממיר ממשק Thunderbolt - SAS או Thunderbolt - FC מוכן, שהוא למעשה מכלול מוכן של קופסה ובקר. החברה המפורסמת ביותר בתחום זה , אבל יש גם מוצרים של חברות אחרות.
שימו לב שלא כל בקרי SAS ו-FC מאושרים לעמוד בתקן LTO, מכיוון שזה כשלעצמו עולה כסף. חלק מהיצרנים כותבים ישירות שהבקרים שלהם לא מתוכננים לעבוד עם כונני טייפ.
להשלמת התמונה נציין כי mLogic מייצרת , שהוא כונן IBM LTO-8 במארז חיצוני, אליו משולב מיד ממיר SAS ל-Thunderbolt 3. עם זאת, זה דבר אקזוטי אפילו יותר מכל מה שתואר לעיל, במיוחד בסטנדרטים של האזור שלנו. אני בספק אם ניתן בכלל לייבא את המכשיר הזה באופן חוקי לרוסיה (כונני LTO מכילים תכונות קריפטוגרפיות, ויצרנים כמו IBM ו-HP מקבלים הרשאת ייבוא FSB לכל דגם מסיבה זו).
לאחר מכן, נשקול, כדוגמה, סט ספציפי של ציוד, שהבעלים שלו הפך למחבר כתוצאה מכמה רכישות מוצלחות, אך יש לשמור על העיקרון הכללי עבור כל האפשרויות.
אז יש לנו את הציוד הבא לעבודה עם סרט:
– מחשב אפל מק מיני 2018 עם macOS 10.15 Catalina, הכולל יציאות USB-C עם תמיכה ב-Thunderbolt 3;
- מתאם Apple Thunderbolt 3 / Thunderbolt 2;
- כבל Apple Thunderbolt 2;
– ממיר ממשק ATTO ThunderLink SH 1068 (2*Thunderbolt / 2*SAS-2);
- כבל SAS SFF-8088 - SFF-8088;
- כונן קלטות LTO-5 IBM TS2350;
– מחסניות LTO-5, מחסנית ניקוי.
עכשיו, כמו שאומרים, עם כל הדברים האלה אנחנו הולכים לנסות להמריא.
אנו מורידים מאתר ATTO את הגרסה העדכנית ביותר של דרייבר ThunderLink SH 1068 (כנראה, לנוחיותנו, הוא משולב עם דרייבר SH 2068 וממוקם בסעיף 2068, שכתוב רק בתוך הארכיון עם הדרייבר) כלי תצורה של ATTO.

הדרייבר, כמובן, זקוק להתקנה. לפני פעולות כאלה, המחבר ממליץ לצלם תמיד תמונת מצב של מערכת הקבצים APFS של דיסק האתחול עם הפקודה
tmutil localsnapshotאו עותק גיבוי של דיסק האתחול, אם יש לו HFS+. אתה אף פעם לא יודע. אז יהיה קל לחזור אחורה מתמונת המצב.
לאחר מכן, המוח חסר הניסיון אך בדיקת הנאותות, ללא ספק יטה לקרוא בעיון את הוראות התקנת מנהל ההתקן של ATTO ולפעול לפיהן. כתוצאה מכך - תדאם! – אנו מקבלים מערכת הפעלה שנתקעת בשלב הטעינה. כאן ייתכן שנצטרך תמונת מצב ממנה נוכל לשחזר על ידי קריאה ל-Time machine ממחיצת השחזור, או מאותה מחיצת שחזור נוכל למחוק ידנית את ה-kext החולה מספריית הרחבות הליבה (המחבר בדרך כלל לא ממליץ לעשות זאת).
למה זה קורה? כי אפל דאגה לנו. בגרסאות האחרונות macOS אי אפשר פשוט להזריק קוד זר לתהליך האתחול. המתכנתים האדיבים של אפל חסמו את ההתנהגות ההרסנית הזו. ליתר דיוק, הם חסמו אותה עד הסוף: כאשר מוזרק קוד ההמתנה של הדרייבר, אבל הדרייבר עצמו לא, הכל פשוט נתקע.
מה צריך מוח מתוחכם לעשות לפני התקנת דרייבר? ראשית, תן את הפקודה:
csrutil statusאם בתגובה אליו נקבל:
מצב הגנת שלמות המערכת: מופעל.
אז זה אומר שלמתכנתי אפל הטובים אכפת מאיתנו, אז שום דבר לא יסתדר לנו עד שנשבית את ההגנה הנפלאה שלהם. כדי לעשות זאת, הפעל מחדש למחיצת השחזור (⌘R), התקשר למסוף והפק את הפקודה:
csrutil disableלאחר מכן, אנו מאתחלים מחדש לתוך המערכת העובדת, ורק אז מתקינים את מנהל ההתקן, ובמקביל את כלי התצורה של ATTO (באופן עקרוני, כלי התצורה נחוץ רק לאבחון ואינו נדרש במהלך פעולה רגילה). על הדרך, כשנשאל, אנו מאשרים את הרשאת ATTO בהגדרות המערכת. לאחר ההתקנה, תוכל לאתחל שוב למחיצת השחזור ולתת את הפקודה
csrutil enableאפל שוב דואגת לנו.
כעת יש לנו ממשק נתמך בנהג להתקני SAS חיצוניים (או FC, אם נעשה שימוש בממיר FC). אבל איך לעבוד עם קלטת ברמה ההגיונית?
כפי שיודע המוח חסר הניסיון אך המלומד, כל מערכת תואמת Unix תומכת בכונני קלטות ברמת הליבה וכלי עזר בסיסיים של המערכת, הכוללים בעיקר mt (ניהול קלטות) ו-tar (ארכיון התומך בעבודה עם ארכיונים על קלטות). עם זאת, מה יכול מוח מתוחכם לומר על כך? כל מערכת תואמת יוניקס, למעט macOS. אפל טיפלה בנו על ידי הסרת תמיכה במכשירי טייפ מהקוד שלה.
אבל האם באמת בלתי אפשרי להחזיר את הקוד הזה על ידי העברת כלי עזר סטנדרטיים בקוד פתוח של יוניקס אל macOSהחדשות הטובות הן ש-Tolis (שאליה לא אקשר) כבר עשתה זאת במוצר Tolis Tape Tools שלה. החדשות הרעות הן שהחברה גובה 399 דולר עבור השימוש בעבודתה. הערכות לגבי כך עשויות להשתנות, אך המחבר באופן אישי אינו מוכן לשלם למישהו 400 דולר עבור קוד שנכתב ברובו על ידי אנשים אחרים ונמצא בשימוש פתוח מאז שנות ה-1970, כך שהמחבר רואה את הנושא הזה כסגור. (אגב, יש פרויקט קוד פתוח נטוש, שפועל באופן מעורפל, ב-GitHub.) על אותו נושא).
למרבה המזל, יש את IBM, תאגיד שתאבונו המסחרי הוא בקנה מידה שונה לחלוטין ולכן אינו מתבטא בעניינים של מה בכך. באופן ספציפי, היא פיתחה את מערכת הקבצים המסחרית LTFS בקוד פתוח, המופצת, בין היתר, עבור... macOS.
האזהרה כאן היא שיצרני מכשירי קלטת שונים משחררים גרסאות משלהם של LTFS כדי לתמוך במכשירים שלהם. מכיוון שהמחבר משתמש בכונן קלטות של IBM, הוא התקין LTFS מ-IBM. כונני צד שלישי עשויים לדרוש יציאות LTFS משלהם. ויש יישום אוניברסלי של openLTFS ב-Github וב-Homebrew.
חשוב לנו ש-LTFS ישתמש בפונקציית חלוקת המדיה, ולכן יוכל לעבוד עם מכשירים ומחסניות החל מדור LTO-5.
אז, במקרה שלנו, אנחנו מורידים את מוצר IBM Spectrum Archive Single Drive Edition מאתר האינטרנט של IBM. macOS, הכולל את יישום LTFS. אנו מתקינים את המוצר ללא כל סיבוכים באמצעות מתקין משלו. בדרך, הוא גם מתקין את חבילת FUSE, אם כי תצטרכו לאשר את ההרשאה של מתכנת חכם בשם אנטול פומוזוב בהגדרות המערכת, עליו, במקרה זה, כל מערכת IBM תלויה. כבוד והערצה לאיש הזה.
רצוי לכתוב מיד את השורה בקובץ /Library/Frameworks/LTFS.framework/Versions/Current/etc/ltfs.conf.local:
אפשרות sync_type=time@1 בכונן יחיד
מה שמציין שהקלטת מותקנת כברירת מחדל ומאגר ההקלטה מאופס לאחר דקה אחת של חוסר פעילות (ברירת המחדל היא 1 דקות).

לבסוף, הכל מוכן לחיבור. אנו מחברים את השרשרת: Mac – מתאם T3/T2 – כבל Thunderbolt – ממיר ATTO – כבל SAS – טייפ כונן (הבחירה של מספר יציאות במק, הממיר והכונן אינה חשובה). הפעל את המתח של הממיר. הפעל את המתח לכונן הטייפ. אנו ממתינים שהכונן ישלים את האתחול בהתאם לאינדיקציה שלו.
אנחנו נותנים את הפקודה:
ltfs -o device_listהידד! אנו מקבלים (באופן האבחון הרגיל של IBM):
307 LTFS14000I LTFS מתחיל, LTFS גרסה 2.4.2.0 (10418), יומן רמה 2.
307 LTFS14058I מפרט פורמט LTFS גרסה 2.4.0.
307 LTFS14104I הושק על ידי "ltfs -o device_list".
307 LTFS14105I בינארי זה נבנה עבור Mac OS X.
גרסת 307 LTFS14106I GCC היא 4.2.1 תואמת Apple Clang 4.1 ((תגים/Apple/clang-421.11.66)).
307 LTFS17087I גרסת ליבה: Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS17085I תוסף: טוען אחורי קלטת "iokit".
רשימת מכשירי הקלטת:.
שם מכשיר = 0, מזהה ספק = IBM, מזהה מוצר = ULT3580-TD5, מספר סידורי = **********, שם מוצר = [ULT3580-TD5].
הכנס את הקסטה, המתן לטעינתה ופרמט:
mkltfs -d 0 -nTest -r "size=10M/name=.DS_Store"כאן הפרמטר -d מציין את מספר הכונן (תמיד אפס אם הוא היחיד, אך לא ניתן להשמיט אותו בפקודה זו), -n הוא שם הקלטת (ניתן להשמיט אותו), והפרמטר -r דורש הצבת התוכן של קבצי .DS_Store שגודלם אינו עולה על 10 מגה בייט, בקטע האינדקס (כלומר, מיועד לספריות) של הקלטת במקום בקטע הנתונים.
חיים מסתוריים החלו בכונן הקלטות. אנו ממתינים מספר דקות ומקבלים את התגובה הבאה:
LTFS15000I התחלת mkltfs, LTFS גרסה 2.4.2.0 (10418), יומן רמה 2.
LTFS15041I הושק על ידי "mkltfs -d 0 -nTest -r size=10M/name=.DS_Store".
LTFS15042I בינארי זה נבנה עבור Mac OS X.
גרסת LTFS15043I GCC היא 4.2.1 תואמת Apple Clang 4.1 ((תגים/Apple/clang-421.11.66)).
LTFS17087I גרסת ליבה: Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
LTFS15003I התקן פירמוט '0'.
LTFS15004I נפח נפח LTFS LTFS: 524288.
מדיניות מיקום מחיצות אינדקס LTFS15005I: size=10M/name=.DS_Store.LTFS11337I עדכון דגל מלוכלך באינדקס (1) - NO_BARCODE (0x0x1021081e0).
תוסף LTFS17085I: טוען אחורי קלטת "iokit".
LTFS30810I פתיחת התקן באמצעות מנהל ההתקן של iokit (0).
מזהה הספק LTFS30814I הוא IBM.
מזהה המוצר LTFS30815I הוא 'ULT3580-TD5'.
גירסת קושחה של LTFS30816I היא H976.
LTFS30817I הכונן הסידורי הוא **********.
LTFS17160I גודל בלוק ההתקן המרבי הוא 1048576.
LTFS11330I טעינת מחסנית.
LTFS30854I הגנת בלוקים לוגיים מושבתת.
LTFS11332I הטעינה הצליחה.
LTFS17157I שינוי הגדרת הכונן למצב כתיבה בכל מקום.
LTFS15049I בדיקת המדיום (הר).
LTFS30854I הגנת בלוקים לוגיים מושבתת.
LTFS15010I יצירת מחיצת נתונים b במחיצת SCSI 1.
LTFS15011I יצירת מחיצת אינדקס א' במחיצת SCSI 0.
LTFS17165I איפוס פרופורציית הקיבולת של המדיום.
LTFS11097I חלוקת המדיום.
LTFS11100I כתיבת תווית למחיצה ב.
LTFS11278I כתיבת אינדקס למחיצה ב.
LTFS30808I READ_ATTR (0x8c) מחזיר -20501.
LTFS30865I READ_ATTR מחזיר שדה לא חוקי ב-CDB (-20501) 0.
LTFS30836I לא יכול לקרוא תכונה (-20501).
LTFS11336I התכונה לא קיימת. התעלם מהשגיאה הצפויה.
LTFS17235I כתיבת אינדקס של NO_BARCODE ל-b (סיבה: פורמט, 0 קבצים) **********.
LTFS17236I כתב אינדקס של NO_BARCODE (b, **********).
LTFS11337I עדכון דגל מלוכלך באינדקס (0) - NO_BARCODE (0x0x1021081e0).
LTFS11100I כתיבת תווית למחיצה א.
LTFS11278I כתיבת אינדקס למחיצה א.
LTFS30808I READ_ATTR (0x8c) מחזיר -20501.
LTFS30865I READ_ATTR מחזיר שדה לא חוקי ב-CDB (-20501) 0.
LTFS30836I לא יכול לקרוא תכונה (-20501).
LTFS11336I התכונה לא קיימת. התעלם מהשגיאה הצפויה.
LTFS17235I כתיבת אינדקס של NO_BARCODE ל-(סיבה: פורמט, 0 קבצים) 9068025555.
LTFS17236I כתב אינדקס של NO_BARCODE (א, **********).
LTFS15013I Volume UUID is: 3802a70d-bd9f-47a6-a999-eb74ffa67fc1.קיבולת נפח LTFS15019I היא 1425 GB.
LTFS30854I הגנת בלוקים לוגיים מושבתת.
LTFS15024I בינוני פורמט בהצלחה.
התקן את הקלטת המעוצבת:
sudo mkdir /Volumes/LTFS
sudo chmod 777 /Volumes/LTFS/
sudo ltfs /Volumes/LTFSאנחנו מקבלים עוד כמה דקות של תפעול ודיאגנוסטיקה:
307 LTFS14000I LTFS מתחיל, LTFS גרסה 2.4.2.0 (10418), יומן רמה 2.
307 LTFS14058I מפרט פורמט LTFS גרסה 2.4.0.
307 LTFS14104I הושק על ידי "ltfs /Volumes/LTFS/".
307 LTFS14105I בינארי זה נבנה עבור Mac OS X.
גרסת 307 LTFS14106I GCC היא 4.2.1 תואמת Apple Clang 4.1 ((תגים/Apple/clang-421.11.66)).
307 LTFS17087I גרסת ליבה: Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64.
307 LTFS14063I סוג הסנכרון הוא "זמן", זמן הסנכרון הוא 60 שניות.
307 LTFS17085I תוסף: טוען אחורי קלטת "iokit".
307 LTFS17085I תוסף: טוען backend "מאוחד" של iosched.
307 LTFS14095I הגדר את מצב הכתיבה של התקן הקלטת בכל מקום כדי למנוע פליטת מחסנית.
307 LTFS30810I פתיחת התקן באמצעות מנהל התקן iokit (0).
307 LTFS30814I מזהה הספק הוא IBM.
307 LTFS30815I מזהה המוצר הוא 'ULT3580-TD5'.
גירסת קושחה 307 LTFS30816I היא H976.
307 LTFS30817I הכונן הסידורי הוא **********.
307 LTFS17160I גודל בלוק התקן מקסימלי הוא 1048576.
307 LTFS11330I מחסנית טעינת.
307 LTFS30854I הגנת בלוקים לוגיים מושבתת.
307 LTFS11332I הטעינה הצליחה.
307 LTFS17157I שינוי הגדרת הכונן למצב כתיבה בכל מקום.
307 LTFS11005I הרכבת נפח.
307 LTFS30854I הגנת בלוקים לוגיים מושבתת.
307 LTFS17227I תכונת קלטת: ספק = IBM.
307 LTFS17227I תכונת קלטת: שם יישום = LTFS.
307 LTFS17227I תכונת קלטת: גרסת יישום = 2.4.2.0.
307 LTFS17227I תכונת קלטת: תווית בינונית =.
307 LTFS17228I תכונת קלטת: מזהה לוקליזציה של טקסט = 0x81.
307 LTFS17227I תכונת קלטת: ברקוד =.
307 LTFS17227I תכונת קלטת: גרסה של פורמט יישום = 2.4.0.
307 LTFS17228I תכונת קלטת: מצב נעילת עוצמת הקול = 0x00.
307 LTFS17227I תכונת קלטת: שם מאגר מדיה =.
307 LTFS14111I ההגדרה הראשונית הושלמה בהצלחה.
307 LTFS14112I הפעל את פקודת 'mount' כדי לבדוק את התוצאה של ההגדרה הסופית.
307 LTFS14113I נקודת הרכבה שצוינה רשומה אם הצליחה.
והנה זה, הסרט שלנו על שולחן העבודה, בשם Test(ltfs)! הקלטת ללא שם תקרא OSXFUSE Volume 0 (ltfs).
עכשיו אתה יכול לעבוד עם זה.

באופן כללי, אתה צריך לזכור שרצוי לא לעשות שימוש יתר בצפייה בתכנים של ספריות קלטות בחלונות המוצא, מכיוון שזו פעולה יקרה להפליא עבור LTFS, אבל עדיף לעבוד עם פקודות מסוף, או פשוט לאפס את ספריית הגיבוי בכמות גדולה לקלטת, כפי שמוצג בחלון למעלה.
אגב, יש כלי עזר של IBM ltfs_copy והשיבוטים שלו, שנועדו להעתקה יעילה יותר בין טייפ לדיסק, אבל עד כה המחבר לא הצליח למצוא אותם ברשות הרבים בחיפוש שטחי.
אתה יכול להסיר את הקלטת עם הפקודה:
umount /Volumes/LTFSאו פשוט לזרוק אותו לפח.
למעשה, ישנן כמה קליפות גרפיות בטבע עבור macOS כדי להקל על הפעולות הללו, אבל אחרי סטיות כאלה, האם עלינו לפחד להקליד כמה שורות בטרמינל?
כתופעת לוואי, אנו מקבלים את ההזדמנות לחבר כונני eSATA חיצוניים באמצעות כבל SAS/4*eSATA.

מקור: www.habr.com
