PracticU

הסבר על Hardlink ועל iNode

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › הסבר על Hardlink ועל iNode
מילון מושגים:
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מערכת קבצים - השיטה שבה מערכת ההפעלה מארגנת, שומרת ומנהלת קבצים ותיקיות על התקן אחסון, למשל NTFS.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.

הסבר על Hardlink ועל iNode
בשיעור מוסבר מה זה inode, איך קבצים בנויים במערכת הקבצים, ומה ההבדל בין hard link ל-soft link.
השלבים העיקריים
1. inode: לכל קובץ יש מספר inode, שמצביע על רשומה במערכת הקבצים. הרשומה מכילה את המידע על הקובץ: סוג, הרשאות, בעלים, גודל, זמני גישה ושינוי, ומצביעים לבלוקים בדיסק שבהם נמצא התוכן.
2. השם לא נשמר ב-inode: שם הקובץ נשמר בתיקייה, שמכילה רשומה שמקשרת שם למספר inode. לכן אפשר שכמה שמות יצביעו לאותו inode.
3. Hard link: שם נוסף לאותו inode, שנוצר בפקודה ln. מספר ה-inode זהה, ומספר הלינקים בתוך הרשומה גדל. הפקודה ls -li מראה את מספר ה-inode.
4. מחיקה: מחיקת שם מורידה את מספר הלינקים. הקובץ נמחק מהדיסק רק כשאין עוד לינק אליו.
5. מגבלה: hard link עובד רק בתוך אותה מערכת קבצים. ניסיון לעשות אותו לדיסק אחר נכשל עם שגיאה על מכשיר שונה.
6. Soft link: קובץ קטן שמכיל את הנתיב של הקובץ המקורי, ונוצר בפקודה ln -s. הוא עובד גם בין דיסקים שונים, אבל אם המקור נמחק הקישור נשאר ולא עובד.
7. חיפוש לינקים: הפקודה find עם אפשרות של מספר לינקים מוצאת קבצים שיש להם יותר מלינק אחד.
פקודות והגדרות
- stat <קובץ> מציג את רשומת ה-inode
- ln <מקור> <יעד> יוצר hard link
- ln -s <מקור> <יעד> יוצר soft link
- find / -links +1 מוצא קבצים עם יותר מלינק אחד
טעויות נפוצות
- מחיקת הקובץ המקורי של soft link משאירה קישור שבור.
- hard link לא עובד בין מחיצות שונות, כי כל אחת מהן מנהלת inode בנפרד.
שימו לב
שינוי תוכן דרך אחד מה-hard links משנה את הקובץ עבור כל השמות, כי כולם מצביעים לאותו מקום בדיסק.
השיעור הבא בקורס: הרשאות מיוחדות - SetUID
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

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

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


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

פרקי ההרצאה: הסבר על Hardlink ועל iNode

  1. 00:00

    מבוא ל-Hardlink, Softlink ו-iNode

  2. 01:45

    טבלת iNode ושדות הקובץ בה

  3. 04:06

    שם הקובץ נשמר בתיקייה, לא ב-iNode

  4. 05:21

    Hardlink: שני שמות לאותו iNode

  5. 06:00

    יצירת Hardlink עם הפקודה ln

  6. 07:22

    זיהוי iNode זהה עם ls -li

  7. 08:36

    מחיקת הקובץ המקורי וספירת הלינקים

  8. 09:30

    חיפוש קבצים עם יותר מלינק אחד

תמלול ההרצאה: הסבר על Hardlink ועל iNode

הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Hardlink ועל iNode» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, בהרצאה הזאת אנחנו נדבר מה זה Hardlink, מה זה Softlink, מה זה iNodes. זאת הולכת להיות הרצאה מעניינת. ובואו נתחיל מזה שנבין מה זה iNode, כן? iNode זה בעצם איך הקבצים רשומים במערכת ניהול קבצים שיש בתחילת פרטישן.

  2. 00:25

    אנחנו יכולים לראות שפקודת סטאט מראה לי בעצם את מה שרשום בתוך ה-iNode. תראו, מה יש לנו ב-iNode? יש לנו access time, מתי פעם אחרונה מישהו ניגש לקובץ הזה, לקרוא אותו?

  3. 00:42

    מתי מישהו שינה את הקובץ? מתי מישהו שינה את ההרשאות של הקובץ? שימו לב, יש את הקובץ ויש את ההרשאות של הקובץ, זה שני דברים שונים.

  4. 00:56

    i-node זה למעשה, אני יכול לראות את זה ls-li זה המספר שהוא ה-i-node שלו, ומה זה i-node? מספר סידורי של הקובץ במערכת הקבצים ומה יש לנו בתוך הטבלה הזאת זאת שורה בטבלה זאת אומרת אם אנחנו נלך לטבלה של bxt4 פרמטנו את זה בxt4 אז בxt4 יש לנו חוץ מסופר בלוק שדיברנו עליו שהוא מתאר כל מיני מידע לxt4 יש לנו טבלה של קבצים ולכל קובץ יש לנו פה

  5. 01:42

    בעצם את השורה לכל קובץ ולכל טייבל לכל דירקטור אז i not table זה למעשה טבלה של קבצים ומה יש לנו לכל קובץ מה יש לנו לכל קובץ איך נראה קובץ במערכת ניהול של הטבלאות אז תראו אז במיקום האפס זה מבנה של טבלה כן איך נראות השדות כן השדה הראשון נקרא i mode ובפנים יש הרשאות לאדרס הרשאות לגרופס,

  6. 02:22

    הרשאות ל-Owner והרשאות מיוחדות ואחרי זה אנחנו רואים פה בעצם איזה סוג של קובץ, איזה טייפ הוא, האם זה דיירקטורי, האם זה תיקייה, האם זה קובץ בלוק דווייסט כמו ארדיסק, SDA, SDC, האם זה קובץ רגיל, האם זה סימבולינג לינק, עוד מעט נראה מה זה

  7. 02:44

    סימבולינג לינק, והאם זה סוקייט, סוקייט זה לקבל תקשורת, אוקיי? זאת אומרת עבור כל קובץ בארדיסק, יש טבלה, בטבלה הזאת כתוב איזה סוג של קובץ זה, כתוב מי ה-user ID שהוא הבעלים שלו, מהו last access time, change time, מתי שינו את ההרשאות האלו למעלה,

  8. 03:11

    מתי שינו את הקובץ עצמו, ויש פה איי-בלוקס, איי-בלוקס זה אומר, זה למעשה פנייה לבלוק בארדיסק, באיזה בלוק בארדיסק נמצא הקובץ הזה, אוקיי?

  9. 03:27

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

  10. 03:44

    לדוגמה, האם קובץ עם mutable, עם mutable זה אומר שאי אפשר להרוג אותו ואי אפשר read-only כביכול, כי זה נקרא attributes של הקובץ.

  11. 03:57

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

  12. 04:20

    אז איך זה עובד? הנה מצאתי איזושהי תמונה בגוגל שתראה לנו את זה יפה. לדוגמה, איך זה נראה? שימו לב, i-node, יש בתוכו access time, יש בתוכו גודל, מי היוזר, מי הקבוצה, איפה הבלוק הזה נמצא בארדיסק.

  13. 04:47

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

  14. 05:06

    ואז אני נכנס לקובץ שהוא למעשה התיקייה ויש שם הפניה ל-i-node. בקיצור, השמות של הקבצים שמורים בתיקייה, אוקיי? שמורים בתיקייה.

  15. 05:21

    עכשיו, מה יקרה אם לאותו איי-נוד אני אעשה עוד קובץ, עוד אנטרי כזה, אותו דבר, אני אעשה עוד אחד כזה לאותו איי-נוד? לא יקרה כלום, יהיה אותו קובץ, אותו איי-נוד עם שני לינקים עליו, עם שני קבצים פיזיים שמצביעים לאותו מקום ב-hard disk.

  16. 05:42

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

  17. 05:56

    אוקיי, הקובץ נמחק בדיסק רק כשאין עליו שום לינקים. אוקיי, בואו נעשה דבר כזה, אתם רואים? זה זה, זה ה-hardlinks. אם אני אעשה עכשיו ln, נניח לקובץ אנקונדה, אני אעשה קובץ אנקונדה cfg2, נקרא לזה 2. באותו המקום, אני יכול לעשות את זה בתיקי אחרת, כל עוד אני מוגבל לאותו Storage, לאותו בלוק דווייס.

  18. 06:33

    בואו ננסה מההתחלה. נעשה ככה, נעשה אקו של 1, 2, 3, 4 לתוך כובש שנקרא 1.txt, אוקיי? ls1.txt, אנחנו רואים שיש עליו לינק אחד, זאת אומרת למעשה ל-i-node שלו מצביע רק מקום אחד.

  19. 06:58

    אם אני אעשה li אני רואה גם את ה-i-node. אם אני אעשה ln 1.txt עם 2.txt ועכשיו אני אעשה ls מינוס l לכל מה שיש לי בדיסק, אתם תראו שלקובץ 1.txt יש לו בעצם שני לינקים.

  20. 07:27

    זאת אומרת לאותו איינוד מצביעים שני לינקים. עכשיו איך אני יודע שזה אותו איינוד או לא אותו איינוד? האם זה אותו מקום או לא אותו מקום? אני עושה li ls מינוס li, אז אני רואה שזה בדיוק אותו איי-נוד.

  21. 07:45

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

  22. 08:00

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

  23. 08:19

    עכשיו, אין הבדל מי זה מקורי או לא, כי מה שמקורי זה איי נוד, אוקיי? עכשיו, מה זה משנה לי? זה משנה לי שאם אני אעשה rm למה שנקרא מקורי, שזה 1.txt, כן?

  24. 08:36

    אחרי שמחקתי את 1.txt, אתם יכולים לראות שב-2 זה נשאר אותו קובץ באותו המקום, כן? אתם יכולים לראות שה-660 נשאר באותו המקום עם לינק קאונטר, מתי ה-I-Node הזה הושמד, מתי הוא באמת יימחק?

  25. 08:56

    כשלא יהיה שום הפניה אליו. I-Node שאין עליו שום הפניה, נניח 6.6.0 הזה, ברגע שנמחק את הקובץ 2.txt, יימחק ה-Entry הזה, יישאר לי I-Node בלי אף הפניה אליו, ואז זה נקרא שהקובץ הזה נמחק, אוקיי?

  26. 09:15

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

  27. 09:47

    ואתם רואים יש פה הרבה לדוגמת דפי מאן משתמשים בהם

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: הרשאות מתקדמות בלינוקס - ACL

ההרצאה הבאה: הרשאות מיוחדות - SetUID

הרצאות קשורות מקורסים אחרים

  • הסבר של async ועל await
  • הסבר על Regions ועל AZ ב-AWS
  • הסבר על Chef ועל Puppet
  • הסבר על JNI ועל קבצי SO

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell