parted ابزاری برای پارتیشن بندی و تغییر اندازه پارتیشین ها در لینوکس می باشد. در این پست قصد داریم چگونگی استفاده از این ابزار برای ایجاد پارتیشین ها را توضیح دهیم. همچنین می توانید نحوه ایجاد پارتیشن ها توسط fdisk را از این پست بخوانید. در لینوکس حداکثر می تواند 4 پارتیشن از نوع Primary وجود داشته باشد. چهارمین پارتیشین Primary تبدیل به یک Extended Partition شده و سپس این پارتیشین به تعدادی (دلخواه) Logical Partition تبدیل می شوند. با فرض اینکه در حال حاظر روی سیستم دیسکی وجود دارد، می خواهیم دیسک دیگری را متصل کنیم و آنرا پارتیشن بندی کنیم. اگر دیسک ها از نوع ساتا باشند اولین دیسک متصل به سیستم sda و دومین دیسک متصل به سیستم sdb است. همچنین اولین پارتیشن دیسک اول sda1 و دومین پارتیشن دیسک اول sda2 و الی آخر.برای آنکه فهرستی از دیسک های مصتل و پارتیشن های آنرا مشاهده کنید، دستور fdisk -l را اجرا کنید.
fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000314adDevice Boot Start End Blocks Id System
/dev/sda1 * 1 2550 20480000 83 Linux
/dev/sda2 2550 4463 15360000 83 Linux
/dev/sda3 4463 5482 8192000 83 Linux
/dev/sda4 5482 6528 8395776 5 Extended
/dev/sda5 5483 5993 4096000 83 Linux
/dev/sda6 5993 6503 4096000 83 Linux
/dev/sda7 6503 6503 2048 82 Linux swap / SolarisDisk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000Disk /dev/sdb doesn’t contain a valid partition table
همانطور که مشاهده می کنید دو دیسک به سیستم متصل هستند، اولی با حجم 53 گیگابایت و دارای 7 پارتیشین و سومی با حجم 21 گیگابایت و بدون پارتیشین است. همچنین در خروجی بالا خط سبز رنگ، نشان می دهد چهارمین پارتیشین Extended است و به 3 پارتیشین Logical تقسیم شده است.
اما چگونه از parted برای پارتیشین بندی استفاده کنیم
دستور parted به این صورت اجرا می شود که باید دستورا نوشته و اجرا کنید و سپس در جلوی اعلان آن دستور های ایجاد و یا تغییر سیستم فایل را وارد کنید.
parted ENTER
OUTPUT
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) HERE ENTER COMMAND
جلوی اعلان دستور parted، دستور help را وارد کنید تا راهنمای آنرا مشاهده کنید.
align-check TYPE N check partition N for TYPE(min|opt)
alignment
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] print general help, or help on
COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition
table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on
partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table,
available devices, free space, all found partitions, or a particular
partition
quit exit program
rescue START END rescue a lost partition near START
and END
resize NUMBER START END resize partition NUMBER and its file
system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
NUMBER
unit UNIT set the default unit to UNIT
version display the version number and
copyright information of GNU Parted
دستور های مورد استفاده برای اجاد پارتیشین
- اگر برای اولین بار است که می خواهید دیسک را پارتیشن بندی کنید، باید از دستور mklabel برای ایجاد جدول پارتیشن (Partition Table) استفاده کنید. دستور help mklabel را جلوی اعلان parted اجرا کنید تا لیستی از موارد مجاز را مشاهده کنید.
mklabel,mktable LABEL-TYPE create a new disklabel (partition
table)LABEL-TYPE is one of: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop
- دستور mkpart برای ایجاد پارتیشین استفاده می شود. دو مقدار START و END آغاز و انتهای پارتیشین و همچنین نوع پارتیشین را اخیتار می کند. دستور help mkpart را اجرا کنید تا راهنمای دستور نشان داده شود.
mkpart PART-TYPE [FS-TYPE] START END make a partition
PART-TYPE is one of: primary, logical, extended
FS-TYPE is one of: ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, jfs,
swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs, hp-ufs, sun-ufs,
xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3, amufs2, amufs1, amufs0,
amufs, affs7, affs6, affs5, affs4, affs3, affs2, affs1, affs0,
linux-swap, linux-swap(new), linux-swap(old)
START and END are disk locations, such as 4GB or 10%. Negative values
count from the end of the disk. For example, -1s specifies exactly the
last sector.‘mkpart’ makes a partition without creating a new file system on the
partition. FS-TYPE may be specified to set an appropriate partition
ID.
می توانید دستور mkpart را نوشته و سپس ENTER کنید تا دوباره اعلان هایی مبنی بر ورود نوع سیستم فایل (که به طور پیشفرض ext2 است، یعنی اگر جلوی این اعلان چیزی ننویسید و فقط ENTER بزنید، نوع سیستم فایل ext2 در نظر گرفته می شود.). یا اینکه تمامی ورودی ها را در یک خط بنویسید و ENTER کنید.
mkpart PART-TYPE [FS-TYPE] START END
- دستور rm که عددی را معادل شماره پارتیشین دریافت و آن پارتیشین را حذف می کند.
rm NUMBER
از دستور help rm استفاده کنید تا راهنمای دستور نشان داده شود. این دستور و تمامی دستور های دیگر (mklabel و …) مانند دستور mkpart می توانند با تمامی آرگومان های لازمشان در یک خط نوشته شوند یا اینکه دستور به تنهایی نوشته شود و در جلوی اعلان های مربوطه مقادیر وارد شوند.
rm NUMBER delete partition NUMBER
NUMBER is the partition number used by Linux. On MS-DOS disk labels,
the primary partitions number from 1 to 4, logical partitions from 5
- دستور print جدول پارتشین ها را نشان می دهد. اگر آنرا بی هیچ پارامتری اجرا کنید، فهرستی از پارتیشین های موجود و ایجاد شده را نشان می دهد و اگر print free را اجرا کنید، به همراه فهرست پارتیشین ها، فضای خالی موجود بر روی دیسک را نیز نشان می دهد. از دستور help print برای مشاهده راهنمای آن استفاده کنید.
- از دستور select برای انتخاب یک دیسک برای ایجاد یا تغییرات در پارتیشین های آن استفاده می شود. این دستور مسیر کامل یک دیوایس (دیسک) را بعنوان آرگومان دریافت می کند. بطور مثال برای انتخاب دومین دیسک متصل به سیستم از دستور زیر استفاده می شود.
select /dev/sdb
یا اینکه می توانید به هنگام اجرای دستور parted از خط فرمان، با دستور زیر دیسک را انتخاب کنید.
parted select /dev/sdb
- دستور mkfs یک سیستم فایل (بطور مثال نوع ext3 یا ext4) را روی پارتیشین ایجاد شده توسط دستور mkpart ایجاد می کند. از دستور help mkfs برای خواندن راهنمای دستور استفاده کنید.
- دستور unit برای تنظیم واحد پیش فرض مقادیر START و END استفاده می شود. بطور مثال اگر آنرا به MB یعنی مگابات وارد کرده باشید و می خواهید پارتیشنی به اندازه 5 گیگابات ایجاد کنید باید مقدار 5000mb را استفاده کنید. برای تغییر مقدار پیش فرض از دستور زیر و برای خواندن راهنمای آن از دستور help unit استفاده کنید.
- دستور quit برای خروج از محیط parted استفاده می شود.
ایجاد پارتیشین ها
می توانید یک ماشین مجازی vmware که روی آن هر لینوکسی نصب باشد را استفاده کنید. یک دیسک مجازی (دومین دیسک) را به سیستم اضافه کنید تا بدون هیچ مشکلی با اجرای دستور parted آشنا شوید. فرض بر این است مقدارunit بر حسب MB است.
- ابتدا می بایست دیسکی را که می خواهیم پارتیشین بندی را روی آن انجام دهیم، انتخاب یا Select کنیم. برای این منظور در خط فرمان دستور زیر را اجرا کنید.
parted select /dev/sdb
- از دستور زیر برای ایجاد جدول پارتیشین ها استفاده کنید.
mklabel msdos
- برای ایجاد اولین پارتیشین به اندازه 7 گیگابایت مطابق شکل زیر ابتدا دستور mkpart را اجرا و سپس مقادیر را جلوی آن وارد کنید.
در بخش 1 اجرای دستور بالا نوع پارتیشین را تعیین می کنیم که اولین و دومین و سومین پارتیشین از نوع Primary بوده و زمان ایجاد چهارمین پارتیشین باید نوع آنرا Extended انتخاب شود. در بخش دوم نوع سیستم انتخاب می شود و همانطور که گفته شد بطور پیش فرض ext2 می باشد ولی در این شکل ext3 انتخلب شده است. در بخش های سوم و چهارم اندازه پارتیشین با شروع از صفر و انتهای 7000 مگابایت (یعنی 7 گیگابات) ر نظر گرفته شده است. اما دستور بالا مشکلی دارد و آنهم استفاده از مقدار صفر برای START است. در صورت استفاده از صفر خطای زیر نشان داده می شود که نشان دهنده این است که با این مقدار برای START کارایی سیستم دچار مشکل خواهد شد. ولی دلیل آن چیست؟ دلیلیش به خاط این است که 512 بایت نخست اولین پارتیشین دیسک برای MBR استفاده می شود. به هر حال چون فقط این پست جنبه آموزشی دارد و برای نشان دادن این پیغام خطا آنرا Ignore کردم.
The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
- برای ایجاد دومین پارتیشین به اندازه 7 گیگابایت مطابق شکل زیر ابتدا دستور mkpart را اجرا و سپس مقادیر را جلوی آن وارد کنید.
در شکل بالا نوع پارتیشین Primary و نوع یستم فایل همان پیشفرض یعنی ext2 است (Enter زده شده و نوع پیشفرض انتخاب شده است). شروع 7000mb و پایان 14000mb که معادل 7000 مگابایت است.
- برای ایجاد سومین پارتیشین به اندازه 2 گیگابایت مطابق شکل زیر ابتدا دستور mkpart را اجرا و سپس مقادیر را جلوی آن وارد کنید.
- برای ایجاد چهارمین پارتیشین باید نوع آنرا Extended در نظر بگیرید. برای ایجاد یک پارتیشین 4 گیگابایتی از نوع Extented مانند شکل زیر عمل کنید.
همانطور که در شکل بالا مشاهده می کنید، نوع پارتیشین Extended بوده و برای این نوع پارتیشین نوع سیستم فایل (مانند ext2 و …) معنی ندارد، بلکه باید از مقدار فضای پارتیشین های نوع Extended استفاده کرده و آنها را به تعدادی پارتیشین Logical تقسیم کنیم. در شکل بالا فضای Extended شده 4 گیگابایت است و می خواهیم آنرا به 1 پارتیشین 4 گیگابایتی از نوع Logical تقسیم کنیم.
- برای ایجاد پنجمین پارتیشین از نوع Logical مطابق شکل زیر عمل کنید.
دستور print را اجرا کنید، تا فهرستی از پارتیشین های ایجاد شده، نشان داده شود.
ایجاد سیستم فایل بر روی پارتیشین های ایجاد شده
- با استفاده از دستور mkfs اقدام به ایجاد سیستم فایل (از نوع های ext2,ext3 و یا ext4 می کنیم). اولین و سومین و پنجمین پارتیشین را از نوع ext3 و دومین پارتیشین را از نوع ext2 ایجاد می کنیم؟ اما چرا بر روی چهارمین پارتیشین سیستم فایل ایجاد نمی کنیم؟ چونکه آن تبدیل به یک Extended Partition شد و سپس به یک یا تعدادی Logical Partition تبدیل شد.
mkfs.ext3 /dev/sdb1
mkfs.ext2 /dev/sdb2
mkfs.ext3 /dev/sdb3
mkfs.ext3 /dev/sdb5
اتصال پارتیشین به یک دایرکتوری
از دستور mount به منظور اتصال یک پارتیشین (بطور مثال sdb1) به یک دایرکتوری (بطور مثال mnt/shares/) استفاده می کنیم. شکل ساده و کلی دستور mount بصورت زیر است.
mount -t FS_TYPE DEVICE_PATH MOUNT_POINT
بطور مثال برای mount کردن پارتیشین اول دیسک دوم یعنی sdb1 از نوع سیستم فایل ext3 روی دایرکتوری mnt/shares/ از دستور زیر استفاده کنید.
mkdir /mnt/shares
mount -t ext3 /dev/sdb1 /mnt/shares
و دستور mount را اجرا کنید تا فهرستی از دایرکتوری های mount شده بصورت موقتی را مشاهده کنید.
این اتصال بصورت موقتی است و برای اتصال دائمی باید فایل ect/fstab/ را مطابق شکل زیر ویرایش کنید.