ابزاری برای پارتیشن بندی و تغییر اندازه پارتیشن ها در لینوکس می باشد. در این آموزش قصد داریم چگونگی استفاده از این ابزار برای ایجاد پارتیشن ها را توضیح دهیم. در فایل سیستم MBR حداکثر میتواند ۴ پارتیشن از نوع Primary
وجود داشته باشد. چهارمین پارتیشن Primary
تبدیل به یک Extended Partition
شده و سپس این پارتیشن به تعدادی (دلخواه) Logical Partition
تبدیل میشوند. با فرض اینکه در حال حاضر روی سیستم دیسکی وجود دارد می خواهیم دیسک دیگری را متصل کنیم و آن را پارتیشن بندی کنیم. اگر دیسک ها از نوع SATA
باشند اولین دیسک متصل به سیستم sda
و دومین دیسک متصل به سیستم sdb
است. همچنین اولین پارتیشن دیسک اول sda1
و دومین پارتیشن دیسک اول sda2
و الی آخر.
پیشنهاد میکنم برای اطلاعات تکمیلی آموزش آشنایی با نام گذاری دیسک ها در لینوکس را مطالعه کنید
در اکثر توزیع های لینوکس ابزار parted بصورت پیش فرض نصب میباشد اما در صورتیکه به هر دلیلی این ابزار بر روی توزیع گنو/لینوکسی شما موجود نیست می توانید از دستورات زیر جهت نصب آن استفاده نمایید.
sudo apt install parted
yum install parted dnf install parted
برای آنکه فهرستی از دیسکهای متصل و پارتیشن های آن را مشاهده کنید دستور زیر را اجرا کنید.
parted -l
خروجی دستور را ببینید
Model: ATA Samsung SSD 850 (scsi) Disk /dev/sda: 250GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary ext4 boot 2 1075MB 250GB 249GB primary Model: PHD 3.0 Silicon-Power (scsi) Disk /dev/sdb: 1000GB Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1000GB 1000GB primary ntfs boot
همانطور که مشاهده میکنید. دو دیسک به سیستم متصل هستند اولی با حجم ۲۵۰ گیگ و دارای ۲پارتیشن و دومی با حجم ۱۰۰۰ گیگ و یک پارتیشن است.
با استفاده از دستور زیر می توانید نسخه ابزار parted نصب شده بر روی توزیع لینوکس خود را مشاهده نمایید. در صورتیکه نسخه ابزار شما متفاوت از نسخه نمایش داده شده است نگران نباشید ابزار parted از درایو primary شما استفاده خواهد کرد که در اکثر مواقع در مسیر /dev/sda
قرار دارد.
parted
خروجی دستور بالا
GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
در صورتی که قصد دارید از محیط ابزار parted خارج شوید. فقط کافی است quit را بنویسید و ENTER بزنید
در صورت مشاهده عبارت (parted)
شما در محیط ابزار parted قرار دارید به عبارت دیگر (parted)
در واقع prompt یا اعلان محیط ابزار parted است.
حال که ابزار parted شروع به اجرا کرده اجازه دهید لیست پارتیشن های دیسک انتخاب شده را مشاهده نماییم و همانطور که بیشتر نیز اشاره شده ابزار parted بصورت پیش فرض اولین درایو سیستم شما را انتخاب می کند. جهت چاپ کردن پارتیشن های دیسک از دستور print استفاده نمایید:
(parted) print
خروجی دستور بالا
Model: ATA Samsung SSD 850 (scsi) Disk /dev/sda: 250GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary ext4 boot 2 1075MB 250GB 249GB primary
زمانیکه از دستور print استفاده میکنید اطلاعات هارددیسک و مدل آن نیز نمایش داده می شود.
در صورتیکه شما بیش از یک دیسک بر روی سیستم خود دارید می توانید با استفاده از دستور select
به آسانی بین دیسک های خود سويیچ کنید. در مثال زیر من از dev/sda/
به dev/sdb/
که دومین درایو روی سیستم من هست سويیچ می کنم.
(parted) select /dev/sdb
و بعد دستور print
را اجرا کردم تا ببینم دیسک درست انتخاب شده است خروجی دستور را ببینید
(parted) print Model: PHD 3.0 Silicon-Power (scsi) Disk /dev/sdb: 1000GB Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1000GB 1000GB primary ntfs boot
از ابزار parted میتوانید جهت ایجاد پارتیشن Primary
یا Logical
استفاده نمایید. در این مثال به شما نشان خواهیم داد که چگونه از ابزار parted جهت ایجاد پارتیشن Primary
استفاده نمایید امام گام های ایجاد پارتیشن primary
برای ایجاد پارتیشن Logical
نیز یکسان هستند.
جهت ایجاد پارتیشن جدید توسط ابزار parted از دستور mkpart استفاده نمایید شما همچنین می توانید پارامترهای اضافه تری همچون primary
یا logical
بسته به نوع پارتیشنی که قصد ایجاد آن را دارید نیز تایپ کنید.
قبل از اینکه شما شروع به ایجاد پارتیشن ها نمایید. مهم است که بدانید که دیسک مورد نظر برای پارتیشن بندی را درست انتخاب کرده باشید. برای این منظور ابتدا از دستور print استفاده نمایید.
(parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 15.9GB 15.9GB ntfs
همانطور که در خروجی بالا مشاهده میکنید ما از یک فلش مموری به حجم ۱۶ گیگ استفاده میکنیم ابتدا به دیسک جدید یک label اختصاص داده و سپس اقدام به ایجاد یک پارتیشن و تنظیم فایل سیستم آن میکنیم. حال به عنوان اولین گام با استفاده از دستور زیر اقدام به دادن یک label به دیسک جدید میکنیم:
(parted) mklabel msdos
حال پارتیشن جدید را با استفاده از دستور mkpart
ایجاد میکنیم. برای مثال قصد داریم یک پارتیشن 5GB را ایجاد نماییم بنابراین در جلوی عبارت ?start
عدد ۱ و در جلوی عبارت ?end
عدد ۵۰۰۰ را وارد میکنیم که شروع و انتهای پارتیشن را مشخص کنند
توجه کنید که واحدها بر حسب MB هستند بنابراین برای ایجاد پارتیشنی به حجم 5GB داریم ۵*۱۰۰۰ = ۵۰۰۰ در واقع جهت راحتی کار هر 1GB را برابر 1000MB به جای 1024MB در نظر میگیریم
سپس با استفاده از دستور quit از محیط parted خارج شوید.برای راهنمایی به دستورات زیر دقت کتید
(parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? Start? 1 End? 5000 (parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 5000MB 4999MB primary ext2 lba
حال میخواهیم پارتیشن جدیدمان را با استفاده از فایل سیستم ext4
فرمت کنیم برای این منظور از دستور mkfs استفاده میکنیم
برای توضیحات تکمیلی در ارتباط با دستور mkfs را ببینید
توجه نمایید هنگامیکه از دستور زیر استفاده میکنیم حتما مطمئن شوید که دیسک و پارتیشن را به درستی انتخاب کرده باشید!
mkfs.ext4 /dev/sdc1
حال اجازه دهید با چاپ کردن partition table روی دیسک دوم خود نتایجمان را بررسی نماییم. همانطور که در خروجی زیر میبینید می بایست در زیر ستون file system عبارت ext4
به عنوان فایل سیستمی که برای پارتیشن خود استفاده کرده اید مشاهده نمایید.
(parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 5000MB 4999MB primary ext4 lba
ابزار parted شامل چندین تابع مفید است و یکی از آنها resizepart
می باشد. این تابع به شما کمک میکند تا سایز یک پارتیشن را تغییر دهید. در مثال زیر شما مشاهده خواهید کرد که اندازه یک پارتیشن موجود را تغییر خواهیم داد. برای این منظور از پارتیشنی که در بخش قبل ایجاد کرده بودیم استفاده خواهیم کرد توجه نمایید که جهت تغییر سایز یک پارتیشن نیاز دارید که شماره پارتیشن مورد نظر را بدانید. بنابراین از دستور print
جهت مشاهده شماره پارتیشن مورد نظر استفاده نمایید.
(parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 5000MB 4999MB primary ext4 lba
همانطور که در دستورات بالا مشاهده میکنید در مثال ما پارتیشن مورد نظر (پارتیشنی که اخیرا ایجاده کرده ایم) برابر ۱ است. حال جهت تغییر سایز آن از دستور زیر استفاده میکنیم:
(parted) resizepart
پس از وارد کردن دستور فوق سیستم از شما شماره پارتیشنی که قصد تغییر سایز آن را دارید سوال خواهد کرد شماره پارتیشن مورد نظر را وارد کنید ( در این مثال عدد ۱) پس از آن سیستم از شما درباره تنظیم نقطه خاتمه ending point
برای پارتیشن جدید سوال خواهد کرد. به یاد داشته باشید که بصورت پیش فرض واحد ها برحسب MB هستند بنابراین در این مثال سایز پارتیشن جدید را 8000 GB وارد میکنیم
(parted) resizepart Partition number? 1 End? [5000MB]? 8000
حال جهت بررسی نتایج از دستور print یکبار دیگر استفاده میکنیم.
(parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 8000MB 7999MB primary ext4 lba
در این بخش یاد خواهید گرفت که چگونه یک پارتیشن را از روی درایو خود حذف کنید. برای این منظور شما نیاز دارید از دستور rm در محیط ابزار parted استفاده نمایید توجه کنید که جهت حذف یک پارتیشن نیز به شماره پارتیشن یا partition number
نیاز خواهید داشت بنابرانی همانطور که بیشتر نیز اشاره شد شما می توانید به سادگی از دستور print جهت مشاهده شماره پارتیشن مورد نظر استفاده نمایید در این مثال ما قصد داریم تا پارتیشنی با partition number=1
را از روی درایو دوم سیستم خود یا dev/sdc1/
حذف کنیم بنابراین:
(parted) rm 1
همچنین جهت بررسی نتیجه دستور فوق از دستور print یکبار دیگر کمک میگیریم.
(parted) print Model: ADATA USB Flash Drive (scsi) Disk /dev/sdc: 15.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags
ابزار parted از ابزار کمکی rescue
که به شما جهت Recover
کردن یک پارتیشن بین نقاط ابتدای (strating point
) و انتهای (ending point
) کمک میکند پشتیبانی می نماید برای این منظور از دستور زیر rescue
استفاده نموده و نقاط ابتدایی و انتهایی را برای آن جهت جستجوی پارتیشن حذف شده و recovery
آن وارد نمایید.
(parted) rescue Start? 1 End? 8000
با استفاده از ابزار parted شما میتوانید حالت flag
را برای پارتیشن های دیسک تغییر دهید. Flag
های پشتیبانی شده عبارتند از:
حالت (stat
) مربوط به flag می تواند on یا off باشد. جهت تغییر یک flag میتوانید از دستور set
در parted به سادگی استفاده نمایید.
(parted) set 2 lba on
دستور فوق lba flag
را برای پارتیشن دوم بصورت on
تنظیم میکند.
اگر برای اولین بار هست که میخواهید دیسک را پارتیشن بندی کنید از دستور mklabel
برای ایجاد جدول پارتیشن استفاده کنید. دستور help mklabel
را جلوی اعلان parted اجرا کرده تا لیستی از موارد مجاز را مشاهده کنید.
(parted) help mklabel 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
برای ایجاد پارتیشن استفاده میشود دو مقدار start
و end
آغاز و انتهای پارتیشن و همچنین نوع پارتیشن را اختیار میکند دستور help mkpart
را اجرا کنید تا راهنمای دستور نشان داده شود.
(parted) 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: btrfs, nilfs2, 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 NUMBER
از دستور help rm
استفاده کنید تا راهنمای دستور نشان داده شود این دستور و تمامی دستورهای دیگر (mklabel و …) مانند دستور mkpart
می توانند با تمامی آرگومان های لازمشان در یک خط نوشته شوند یا اینکه دستور به تنهایی نوشته شود و در جلوی اعلان ها مربوطه مقادیر وارد شوند
جدول پارتیشن ها را نشان می دهد.اگر آن را بی هیچ پارامتری اجرا کنید فهرستی از پارتیشن های موجود و ایجاد شده را نشان می دهد و اگر print free
را اجرا کنید فهرست پارتیشن ها فضای خالی موجود بر روی دیسک را نیز نشان می دهد از دستور help print
برای مشاهده راهنمای آن استفاده کنید
برای انتخاب یک دیسک برای ایجاد یا تغییرات در پارتیشن های آن استفاده میشود این دستور مسیر کامل یک device (دیسک) را به عنوان آرگومان دریافت می کند بطور مثال برای انتخاب دومین دیسک متصل به سیستم از دستور زیر استفاده میشود.
select /dev/sdb
یا اینکه می توانید به هنگام اجرای دستور parted از خط فرمان با دستور زیر دیسک را انتخاب کنید.
parted select /dev/sdb
برای تنظیم واحد پیش فرض مقادیر start
و end
استفاده میشود بطور مثال اگر آن را به MB یعنی مگابایت وارد کرده باشید و میخواهید پارتیشنی به اندازه ۵ گیگابایت ایجاد کنید باید مقدار 5000MB را استفاده کنید. برای تغییر مقدار پیش فرض از دستور زیر و برای خواندن راهنمای آن از دستور help unit استفاده کنید.
برای خروج از محیط parted استفاده میشود.