Home CentOS מחיצות וכוננים בלינוקס | Partitions & Disks

מחיצות וכוננים בלינוקס | Partitions & Disks

by Tal Ben Shushan 04/09/2017 0 comment
מחיצות וכוננים בלינוקס | Partitions & Disks
נהנתם מהמאמר ? שתפו אותו!

כל הזכויות שמורות לטל בן שושן – Shushan.co.il

מחיצות וכוננים בלינוקס | Partitions

מחיצות \ כוננים בלינוקס קצת שונות מווינדוס, כאשר אתם טוענים כונן במערכת ההפעלה ווינדוס, אתם לרוב תראו את הכונן בתוך “This PC” או “המחשב הזה” או בגרסאות הקודמת “המחשב שלי” אותם כוננים מיוצגים באותיות כמו כונן C כונן D וכו’, אותם כוננים , מחיצות יכולות להיות דיסק קשיח \ כונן USB\ מחיצה בתוך דיסק קשיח וכו’
לעומת זאת לינוקס לא רואה כך את הכוננים \ מחיצות שאותם אנו טוענים, לינוקס יכול לטעון לתוך כל תיקייה ריקה במערכת את אותו הכונן \ מחיצה ובכך “למלא” אותה במידע.
במערכת יש לנו לדוגמה את התיקיות

var

usr

boot

mnt

home

מחיצות:

msdos- מחיצת MBR – קיצור של Master Boot Recored הוא קטע מידע הנמצא בסקטור הראשון בדיסק, זאת על מנת לזהות היכן נמצאת מערכת ההפעלה ועל ידי כך תוכל לעלות (Boot) והוא מוגבל לדיסק עד גודל של 2TB

GPT- מחיצת GPT קיצור של GUID Partition Table ולרוב מגדירים אותו  לדיסקים מעל 2TB

מערכת קבצים:

Ext2 – הוא קיצור של Second Extended File System, הוא נכתב ב1993 ונחשב למערכת קבצים ישנה. הוא מוגבל לדיסק עד 32TB אך קובץ בודד לא יעלה על 2TB ואינו מכיל Journaling

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

Ext3 – הוא קיצור של Third Extended File System מערכת קבצים אשר נוצרה ב2001 והחל מלינוקס קרנל 2.4  נמצאת באופן קבוע, יכולה להכיל עד 32 אלף קבצים \ תיקיות בתוך תיקייה אחת, כמו Ext2 הוא מוגבל לקובץ בודד עד 2TB וכונן עד 32TB (כמובן GTP) השיפור הניכר בו זה שיש Journaling.

Ext4 – קיצור של Fourth  Extended File System הגרסה החדשה ביותר של מערכת הקבצים של לינוקס (בהתייחסות ל Extended File System) יכולה להכיל 64 אלף קבצים בתיקייה אחת קיים משנת 2008 ומקרנל 2.6, קובץ בודד יכול להגיע עד 16TB ומערכת על כונן מגיע ל1EB

XFS – יש לו Journaling כמו ל Ext/3/4 ולכן מתקדם יותר מ Ext2 הוא 64Bit הוא תומך במחיצה עד 8EB (שזה 8,000TB) ובשימוש יחסי בעולם הלינוקס בגלל שExt4 ו Ext3 נפוצים יותר

 

טעינת כונן וטעינת הכונן בעליית המערכת

ברוב הפעמים אנו נטען כונן USB לתיקיית ה mnt אבל אנו יכולים לטעון כונן שלם לתיקיית ה home.

במדריך זה נראה כיצד לטעון כוננים \ מחיצות \ דיסקים \ USB

נוסיף דיסק חדש למכונה שלנו בנפח של 50GB

ונקיש את הפקודה על מנת לראות איזה כונן חדש הצטרף

[root@localhost ~]# ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sdb

הכונן החדש הוא  /dev/sdb וכעת נגדיר לו מחיצה

אבל לפני זה נזהה את הכוננים, נקיש את הפקודה

parted

(parted) print

יוצג לנו הכונן הקשיח שהוא הראשי ובו 63.3GB

 

(parted) print

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sda: 64.4GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 1075MB 1074MB primary xfs boot

2 1075MB 64.4GB 63.3GB primary lvm

כעת נבדוק את הכונן המשני ונבדוק מה גודלו

נבצע יציאה מהparted על ידי הפקודה

quit

ואז נקיש את הפקודה (ניתן להקיש את הפקודה select /dev/sdc)

parted /dev/sdb

*נוכל להקיש  (אל תקישו זאת כעת אם אינכם צריכים מחיצת GPT)

*אם אתם מעוניינים במחיצה מסוג ext4

[root@localhost ~]# mkpart primary ext4 1MB 15GB

*אם אנו רוצים את המחיצה Boot

[root@localhost ~]# set 1 boot on

 

[root@localhost ~]# mktable gpt

 

וזאת על מנת להפוך את המחיצה לGPT אם היא גדולה מ2TB

נקיש

(parted) print
Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 53.7GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

נוכל לראות שזהו הכונן המשני שלנו שהוספנו הרגע עם נפח של 53GB

כעת נגדיר את המחיצה כ – MBR על ידי הפקודה

(parted)  mklabel msdos

נגדיר את נפח הכונן, ראינו שהוא 53.7GB ונקיש את הפקודה

(parted) mkpart

כאן הוא שואל אם הוא הוספה לכונן קיים או ראשי, נגדיר לו ראשי

Partition type? primary/extended? primary

נלחץ כאן enter

File system type? [ext2]?

נגדיר לו שיתחיל מ 1MB

Start? 1

עד 53000MB שזהו 53GB

End? 53000

אם הבחנתם הגדרנו את המחיצה כ-ext2 שהיא תצורה קצת ישנה, לכן נצא מ parted על ידי הפקודה

quit

ונקיש את הפקודה, שתפרמט לנו את הכונן ל ext4

[root@localhost ~]# mkfs.ext4 /dev/sdb -F

כעת נטען את הכונן לתיקייה /mnt/sdb

ניצור את התייקייה

[root@localhost ~]# mkdir /mnt/sdb

 וכעת ניטען אותה

[root@localhost ~]# mount -a /dev/sdb /mnt/sdb

*ה -a מגדיר לכונן לעלות מחדש בכל הפעלה מחדש

אם כעת תקישו

[root@localhost ~]# df -h

תקבלו בשורה האחרונה את

Filesystem Size Used Avail Use% Mounted on

/dev/sdb 50G 53M 47G 1% /mnt/sdb

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

[root@localhost ~]# vi /etc/fstab

נוסיף בסוף המסמך את השורה

/dev/sdb /mnt/sdb ext4 defaults 0 0

וכעת אחרי כל הפעלה מחדש הכונן יעלה לנתיב

/mnt/sdb

*נוכל לעדכן את המחיצה בkernel גם על ידי

[root@localhost ~]# partprobe /dev/sdc

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

(parted) resizepart

נבחר את המחיצה הרצויה

(parted) Partition number? 1

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

(parted) rm 1

 

fdisk

שיטה נוספת להוסיף כונן \ מחיצה \ לשנות את נפחם זה דרך fdisk

נבדוק איזה כונן חדש הוספתנו (הוספתי כונן של 15GB)

[root@localhost ~]# ls /dev/sd*

 

[root@localhost ~]# ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc

מתוך הרשימה האחרון הוא זה שהוספתי והוא /dev/sdc

נקיש את הפקודה

[root@localhost ~]# fdisk /dev/sdc

תוכלו להקיש , ולראות את כל האפשרויות

Command (m for help): m

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition

g create a new empty GPT partition table

G create an IRIX (SGI) partition table

l list known partition types

m print this menu

n add a new partition

o create a new empty DOS partition table

p print the partition table

q quit without saving changes

s create a new empty Sun disklabel

t change a partition's system id

u change display/entry units

v verify the partition table

w write table to disk and exit

x extra functionality (experts only)

 

נקיש את p לראות מה נפחו של הכונן ואת פרטיו, ניתן לראות שהוא 16GB אבל אגדיר אותו כ15GB

כעת נקיש

Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-31457279, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279):

Using default value 31457279

Partition 1 of type Linux and of size 15 GiB is set

ובהכל נקיש enter עד שהכונן שלנו יווצר, כעת הקישו שוב P ותוכלו לראות את המחיצה שנוצרה

ואז הקישו W על מנת לסיים את ההגדרה ולשמור את ההגדרות

Command (m for help): w

כעת יש לנו כונן, ניתן לפרמט אותו עם הפקודה

[root@localhost ~]# mkfs.ext4 /dev/sdc

אם תרצו לטעון אותו השתמשו בפקודת ה mount שהסברתי קודם

יצירת מחיצות בתוך כונן

נאמר ואתם מעוניינים ליצור מחיצות בתוך כונן ( למשל בווינדוס יש לכם כונן אחד של 1TB) ואתם מעוניינים ליצור כונן D בנפח 250GB וכונן E בנפח 250GB ולהשאיר את כונן C עם 500GB אז כונן E וD הם מחיצות בתוך הכונן עצמו

Volume Group (VG)

קבוצה של כוננים פיזיים הנמצאים בקבוצה אחת וסה”כ הנפח שלהם מחושב כקבוצה, נאמר 4 כוננים (sdb,sdc,sdd,sde) שכל אחד הוא 20GB, הקבוצה ביחד תיהיה 80GB ואז יהיה ניתן לייצר Logical Volume ואם צריך להגדיל אותו מוסיפים לקבוצה עוד PV שהוא Physical Volume ואז מגדילים את ה LV הLogical Volume

Physical Volume (PV)

מייצג כונן קשיח או כונן נשלף פיזי -לדוגמה sda, sdb ,sdc

Logical Volume (LV)

כונן לוגי או מחיצה שמכיל קבצים

 

 

נשתמש תחילה ב fdisk, כמובן לאחר שהכנסנו את הכונן הפיזי

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0xac57051e.

Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-104857599, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +10GB

Partition 1 of type Linux and of size 9.3 GiB is set

Command (m for help): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e extended

Select (default p): p

Partition number (2-4, default 2):

First sector (19533824-104857599, default 19533824):

Using default value 19533824

Last sector, +sectors or +size{K,M,G} (19533824-104857599, default 104857599): +5GB

Partition 2 of type Linux and of size 4.7 GiB is set

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

יצרנו כעת 2 מחיצות בתוך sdb

נקיש את הפקודה

[root@localhost ~]# lsblk -f

נראה בפלט

sdb

├─sdb1

└─sdb2

כעת נבצע להם פירמוט ל ext4

[root@localhost ~]# mkfs.ext4 /dev/sdb2

[root@localhost ~]# mkfs.ext4 /dev/sdb1

כעת נבדוק שוב את הפקודה

[root@localhost ~]# lsblk -f

כעת אפשר לראות שהתווסף

sdb

├─sdb1 ext4 e8215e01-5560-4d4b-b2e5-d3caf93bf60d

└─sdb2 ext4 36e6f015-19d5-442d-a9de-936fe2a38855

זאת אומרת שהפירמוט הצליח!  כעת יש לנו 2 מחיצות בתוך SDB שהם sdb1 ו sdb2

כעת נוכל לחבר את הכוננים לכונן פיזי אחר ולהרחיב אותו או ליצור כוננים לוגיים בתוכם וכו’

נתחיל מהפקודה

sudo pvcreate /dev/sdb1 /dev/sdb2

Physical volume "/dev/sdb1" successfully created.

Physical volume "/dev/sdb2" successfully created.

כעת נקיש pvscan על מנת לראות האם הם התווספו ל Phisical Volume

[root@localhost ~]# pvscan

PV /dev/sdb2 lvm2 [4.66 GiB]

PV /dev/sdb1 lvm2 [9.31 GiB]

גם הפקודה pvdisplay מציגה לנו את הכוננים שהוספנו

pvdisplay[root@localhost ~]# 

--- NEW Physical volume ---

PV Name /dev/sdb2

VG Name

PV Size 4.66 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID PdZvEd-dLbg-ZT2M-JlYs-iLr0-DkZx-U0Ludj

"/dev/sdb1" is a new physical volume of "9.31 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb1

VG Name

PV Size 9.31 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 80Ii6B-I34y-6fUA-y5AX-0uGA-2dHS-rXBkZS

כעת ניצור קבוצה חדשה למחיצות שלנו בשם vol_Tal

[root@localhost ~]# vgcreate vol_Tal /dev/sdb2 /dev/sdb1

כעת אם נקיש את הפקודה pvdisplay נוכל לראות שהמחיצות נוספו ל vol_Tal

עכשיו נוכל ליצור Logical Volume בתוך sdb1 וsdb2

[root@localhost ~]# lvcreate --name lv01 --size 1G vol_Tal

המחיצה הלוגית בשם lv01 בגודל 1GB בתוך vol_Tal

אם נקיש את הפקודה

[root@localhost ~]# lvdisplay

נוכל לראות שנוצר logical volume

--- Logical volume ---

LV Path /dev/vol_Tal/lv01

LV Name lv01

VG Name vol_Tal

LV UUID ZrOyfg-Mx6F-8kKZ-DMyU-ZGwv-Iqdy-SRRa1y

LV Write Access read/write

LV Creation host, time localhost.localdomain, 2017-08-19 09:04:27 -0400

LV Status available

# open 0

LV Size 1.00 GiB

Current LE 256

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:4

כעת זה כונן לוגי, שכמובן צריך מערכת קבצים משלו

נוכל למשל להגדיר אותו XFS

[root@localhost ~]# mkfs.xfs /dev/vol_Tal/lv01

כעת נבדוק עם הפקודה את מצב הכוננים שלנו

[root@localhost ~]# lsblk -f

 

sdb

├─sdb1 LVM2_member 80Ii6B-I34y-6fUA-y5AX-0uGA-2dHS-rXBkZS

└─sdb2 LVM2_member PdZvEd-dLbg-ZT2M-JlYs-iLr0-DkZx-U0Ludj

└─vol_Tal-lv01 xfs ad8c6889-bac1-4244-894f-89ffca82ac94

ניתן לראות שיש לנו כונן לוגי עם מערכת קבצים nfs

נאמר ואתם מעוניינים להגדיל אותו

[root@localhost ~]# lvextend -L2GB /dev/vol_Tal/lv01

ועם הפקודה lvdisplay נוכל לראות שגודלו שונה ל2GB

[root@localhost ~]# LV Size 2.00 GiB

ואם אתם מעוניינים להגדיל את הכונן הלוגי ולא לשנות את הנפח הכולל השתמש בפקודה

[root@localhost ~]# lvextend -L+2GB /dev/vol_Tal/lv01

 

 

 

בדיקת דיסק \ מחיצה ותיקון

e2fsck – הוא כלי לבדיקת התקינות של מערכת הקבצים, לרוב לExt4 אנו יכולים לבדוק איזה כוננים טוענים לנו על ידי הפקודה

[root@localhost ~]# mount

ואחת מהשורות

/dev/sdc on /mnt/sdc type ext4 (rw,relatime,seclabel,data=ordered)

זה אומר שטעון לנו כונן sdb לנתיב mnt/sdb , אבל על מנת לבדוק את הדיסק נבצע לו umount (ננתק אותו מהמערכת)

[root@localhost ~]# umount /mnt/sdc

כעת נוכל לבצע בדיקה

[root@localhost ~]# fsck -f /dev/sdc

כעת נקבל את הפלט

 

[root@localhost ~]# fsck from util-linux 2.23.2

e2fsck 1.42.9 (28-Dec-2013)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/sdc: 11/983040 files (0.0% non-contiguous), 104724/3932160 blocks

שהמחיצה תקינה!

כיצד ניתן לתקן מחיצה שאינה תקינה? לא נטענת? מקבלים Error כאשר מנסים…

לכל מחיצה יש Superblock, והוא למעשה מכיל גיבוי של תצורת המחיצה, בהרבה מקרים, מחיצה שלא עולה, ניתן לתקן על ידי superblock

[root@localhost ~]# mkfs.ext4 -n /dev/sdc

*הn- חשוב מאוד שכן הוא אומר לו לא לפרמט את הדיסק.

כעת נקבל תשובה בתחתית הפלט

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424

כעת נוכל לנסות להגיד לו איפה ה superblock נמצא על ידי הפקודה

[root@localhost ~]# fsck -b 163840 /dev/sdc

ואז הוא אמור לתקן את הבעיה (אם כמובן הבעיה היא בsuperblock

XFS

נפרמט כונן מExt4 ל XFS קודם נבדוק איזה מערכת קבצים הכונן שלנו עכשיו

lsblk -f

הפלט

sdb ext4 e0bbcced-2f99-426e-98bd-b44a7811558a

ניתן לראות שהוא ext4 וכעת נבצע פירמוט ל XFS

[root@localhost ~]# mkfs.xfs -f /dev/sdb

כעת יש לנו מערכת קבצים של XFS, נוכל לבדוק את תקינות מערכת הקבצים על ידי הפקודה

[root@localhost ~]# xfs_repair -n /dev/sdb

*הn- מסמן לו לא לשנות כלום ולא לתקן את מערכת הקבצים, אך יריץ בדיקה על מנת לבדוק את מערכת הקבצים

 

 

מאמרים קשורים

Leave a Comment