
قبل از اینکه یک دیسک سخت، جهت ذخیرهسازی اطلاعات، مورد استفاده قرار بگیرد، در ابتدا باید آن را پارتیشن بندی نمود. پارتیشن بندی، یک هارد دیسک را به قسمتهای منطقی(logical)، تقسیم میکند. در دیسکهای بزرگ معمولا هر دیسک را به دو یا چند پارتیشن تقسیم میکنند. حتی در صورتیکه تمام فضای دیسک را بخواهیم به یک پارتیشن اختصاص دهیم، همچنان، نیاز به پارتیشنبندی داریم. پارتیشن بندی دیسک به چندین قسمت، قابلیت نصب دو یا چند سیستم عامل را، مثل سیستم عامل لینوکس یا ویندوز، در یک دیسک فراهم میسازد. برای توضیحات بیشتر در بارهی روش پارتیشن بندی، در لینوکس با ما همراه باشید.
روش نامگذاری دیسکها در لینوکس
در سیستم عامل لینوکس، معمولا، driverهای مربوط به دیوایسهای متصل به کامپیوتر در مسیر dev/ قرار دارند. نامگذاری این درایورها معمولا به صورت مخفف نام همان دیوایس میباشد. مثلا در صورتی که قصد عملیات Read/Write بر روی CD-ROM کامپیوترتان را، داشته باشید، مسیر درایور آن، dev/cdrom/ است.
فرض کنید یک هارد Sata را به سیستم اضافه نمودهاید. لینوکس هاردهای Sata را به صورت sd نامگذاری مینماید. اگر دو عدد هارد Sata داشته باشیم اولی به نام dev/sda/ و دومین هارد به نام dev/sdb/ نامگذاری میگردد. همانطور که میتوان حدس زد، اگر هارد سوم Sata را هم اضافه نماییم نام آن، dev/sdc/ خواهد بود. برای تعداد پارتیشنی که برای هر دیسک در نظر گرفته باشیم شمارهگذاری از 1 به بالا شروع میشود. مثلا اگر هارد اول یک پارتیشن داشته باشد به صورت: dev/sda1/ نامگذاری می شود. حال اگر هارد اول، دو پارتیشن داشته باشد به صورت dev/sda1/ و dev/sda2/ نامگذاری میگردد.
مشاهدهی دیسکهای متصل با دستور lsblk
با دستور lsblk میتوانیم هاردهای متصل به سیستم را مشاهده نماییم:
1 2 3 4 5 6 7 8 9 10 |
kazemian@upgradeit:~$ lsblk /dev/sd? NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 19.5G 0 part / sdb 8:16 0 10G 0 disk kazemian@upgradeit:~$ |
روشهای پارتیشن بندی (MBR یا GPT)
MBR یا Master Boot Record سکتور صفر دیسک و یا سکتور بوت از دیسکی که برای بوت شدن انتخاب شده است، میباشد.این بخش، برای ذخیرهسازی اطلاعات مربوط به پارتیشنهای دیسک به کار میرود. این استاندارد برای پارتیشنهای تا ظرفیت 2 ترابایت قابل استفاده میباشد. در این روش شما بیش از چهار پارتیشن اصلی نمیتوانید ایجاد نمایید. برای ایجاد پارتیشنهای بیشتر شما میتوانید سه پارتیشن اصلی و پارتیشنهای دیگر را به صورت extended داشته باشید.
GPT یا GUID Partition Table به عنوان جایگزین برای MBR ایجاد شده است. با استفاده از GPT میتوانید، تعداد 128 پارتیشنهای اصلی ایجاد نمایید. این روش سایز پارتیشنهایی را که پشتیبانی مینماید 9.4ZB است.
مقایسهی MBR با GPT
- تعداد پارتیشن اصلی برای MBR حداکثر 4 عدد و برای GPT تا 128 عدد
- MBR حداکثر تا ۲ ترابایت اندازه پارتیشن را پشتیبانی میکند اما در GPT این عدد به 9.4ZB میرسد.
- در GPT افزونگی دارد و در MBR خیر.
پارتیشنبندی دیسک با دستور parted
با دستور parted میتوانیم، برای پارتیشنبندی دیسکها در لینوکس اقدام نماییم. دقت داشته باشید، دستور parted دستوری است که با مجوز root اجرا میشود. بنابراین برای اجرا، یا باید با کاربر root آن را اجرا نمایید و یا از دستور sudo قبل از دستور parted استفاده نمایید. دستور sudo دستوری است که با آن میتوان دستوراتی که، نیاز مجوز root را دارد، اجرا نمود. در اجرای دستور parted دقت نمایید چون با پارتیشنبندی تمام اطلاعات دیسک پاک میگردند و براحتی قابل بازیافت نیستند.
نمایش لیست دیسکها و پارتیشنهای آنها
در ابتدا با زدن دستور parted -l لیست دیسکها و پارتیشنها و نوع فایل سیستم آن ها نمایش داده میشود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
kazemian@upgradeit:~$ sudo parted -l Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 538MB 537MB primary fat32 boot 2 539MB 21.5GB 20.9GB extended 5 539MB 21.5GB 20.9GB logical ext4 Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags kazemian@upgradeit:~$ |
همانطور که ملاحظه میکنید این کامپیوتر دو هارد به نامهای sda و sdb دارد و هارد دوم هنوز پارتیشنبندی نشده است. برای پارتیشنبندی با استفاده از دستور parted نسبت به پارتیشنبندی اقدام میکنیم. در اینجا میخواهیم دیسک دوم یعنی dev/sdb/ را پارتیشن بندی کنیم. برای این منظور، دستور زیر را تایپ میکنیم:
1 2 3 4 5 6 7 |
kazemian@upgradeit:~$ sudo parted /dev/sdb GNU Parted 3.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) |
تعیین نوع پارتیشن بندی
در مرحلهی بعدی تعیین میکنیم که نوع پارتیشن بندی MBR یا GPT میباشد. در صورتی که بخواهیم از نوع GPT استفاده نماییم، سیستم ما باید از UEFI که جایگزین BIOS میباشد، پشتیبانی نماید. برای اینکار از دستور mklable استفاده نماییم. و سپس با دستور print میتوانیم تنظیمات انجام شده را مشاهده نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
kazemian@upgradeit:~$ sudo parted /dev/sdb GNU Parted 3.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mk mklabel mkpart mktable (parted) mklabel GPT Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags (parted) |
ایجاد پارتیشن
برای ایجاد پارتیشن، از دستور mkpart استفاده میکنیم. در ادامهدستور ابتدا و انتهای سایز پارتیشن را انتخاب میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(parted) mkpart primary ext4 1 3000MB (parted) mkpart primary ext4 3001MB 7000MB (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3000MB 2999MB ext4 primary 2 3001MB 7000MB 3999MB ext4 primary (parted) |
پارتیشن SWAP
برای ایجاد پارتیشن SWAP در parted، به روش زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(parted) mkpart "swap partition" linux-swap 7001MB 9048MB (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3000MB 2999MB ext4 primary 2 3001MB 7000MB 3999MB ext4 primary 3 7001MB 9048MB 2047MB linux-swap(v1) swap partition (parted) |
برای پاک کردن یک پارتیشن از دستور rm استفاده مینماییم.
پارتیشن بندی دیسک با fdisk
روش دیگر پارتیشن بندی دز لینوکس، با استفاده از دستور fdisk میباشد. دستور fdisk دستوری است که با مجوز root اجرا میشود. با دستور fdisk -l میتوانیم وضعیت دیسکها و پارتیشنهای آنها را مشاهده نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
kazemian@upgradeit:~$ sudo su root@upgradeit:/home/kazemian# fdisk /dev/sdb Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m Help: DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle the dos compatibility flag Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table i print information about a partition Misc m print this menu u change display/entry units x extra functionality (experts only) Script I load disk layout from sfdisk script file O dump disk layout to sfdisk script file Save & Exit w write table to disk and exit q quit without saving changes Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table Command (m for help): |
پس از اجرای fdisk برای هاردیسک مورد نظر ، با زدن کاراکتر p راهنمای fdisk را مشاهده نماییم. با زدن کلید n پارتیشن جدید را بر روی هارد ایجاد نماییم. بدین صورت پارتیشنهای مورد نیاز با اندازههای دلخواه را ایجاد مینماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519): Created a new partition 1 of type 'Linux' and of size 10 GiB. Command (m for help): |
حال کلید s را زده و اطلاعات مربوط به پارتیشنها را save مینماییم. حال هاردیسک ما پارتیشن بندی شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Command (m for help): n Partition number (1-8, default 1): First sector (0-20964825, default 0): Last sector or +/-sectors or +/-size{K,M,G,T,P} (0-20964825, default 20964825): +4G Created a new partition 1 of type 'Linux native' and of size 4 GiB. Command (m for help): n Partition number (2-8, default 2): First sector (8401995-20964825, default 8401995): Last sector or +/-sectors or +/-size{K,M,G,T,P} (8401995-20964825, default 20964825): Created a new partition 2 of type 'Linux native' and of size 6 GiB. Command (m for help): p Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: VBOX HARDDISK Geometry: 255 heads, 63 sectors/track, 1305 cylinders Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: sun Device Start End Sectors Size Id Type Flags /dev/sdb1 0 8388607 8388608 4G 83 Linux native /dev/sdb2 8401995 20964824 12562830 6G 83 Linux native Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. root@upgradeit:/home/kazemian# |
Format کردن پارتیشنها
در ادامه برای format کردن پارتیشنها میتوانیم از فایلسیستمهای ارائه شده توسط لینوکس استفاده نموده و پارتیشنها را فرمت نماییم. لازم به ذکر است که شما میتوانید هر پارتیشن را با یک نوع فایل سیستم فرمت نمایید.
1 2 3 4 5 6 7 8 |
root@upgradeit:/home/kazemian# mkfs. mkfs.bfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.ntfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.vfat root@upgradeit:/home/kazemian# mkfs.ext4 /dev/sd sda sda1 sda2 sda5 sdb sdb1 sdb2 root@upgradeit:/home/kazemian# mkfs.ext4 /dev/sd |
دستور mkfs.ext4
با دستور mkfs.ext4 میتوانیم پارتیشن را به ext4 فرمت کنیم. در صورت لزوم میتوانیم از فایل سیستمهای دیگر لینوکس نیز برای فرمت کردن پارتیشن استفاده نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
root@upgradeit:/home/kazemian# mkfs.ext4 /dev/sdb1 mke2fs 1.45.5 (07-Jan-2020) Found a sun partition table in /dev/sdb1 Proceed anyway? (y,N) y Creating filesystem with 1048576 4k blocks and 262144 inodes Filesystem UUID: c89d78ba-6566-4aa4-9cc1-2643dbf383a9 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@upgradeit:/home/kazemian# mkfs.ext4 /dev/sdb2 mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 1570353 4k blocks and 393216 inodes Filesystem UUID: a89b6056-4ea0-4dbc-bd4a-f6e7dc5ef131 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@upgradeit:/home/kazemian# |
حالا پارتیشنها فرمت گردیدند. برای استفاده در لینوکس، هر پارتیشن میتواند به یک دایرکتوری وصل شود. یعنی شما هر اطلاعاتی که در آن دایرکتوری خوانید و یا نوشتید در اصل در پارتیشنی که به متصل است انجام دادهاید و مقدار فضای آن دایرکتوری اندازه حافظهی آن پارتیشن خواهد بود.
دستور mount
حال برای بار کردن یک دایرکتوری، بر روی یک پارتیشن از دستور mount استفاده مینماییم.
1 2 3 4 5 6 7 8 9 10 11 12 |
root@upgradeit:/home/kazemian# mkdir /media/partition1 root@upgradeit:/home/kazemian# mkdir /media/partition2 root@upgradeit:/home/kazemian# mount /dev/sdb1 /media/partition1 root@upgradeit:/home/kazemian# mount /dev/sdb2 /media/partition2 root@upgradeit:/home/kazemian# df | grep sd /dev/sda5 19992176 7809288 11144296 42% / /dev/sda1 523248 4 523244 1% /boot/efi /dev/sdb1 4062912 16376 3820440 1% /media/partition1 /dev/sdb2 6117124 24536 5762136 1% /media/partition2 root@upgradeit:/home/kazemian# |
برای بررسی میزان حافظهی مصرف شده و در دسترس تمام پارتیشن های mount شده، از دستور df استفاده می کنیم.