۱۳۹۱ خرداد ۵, جمعه

پارتیشن بندی و فرمت بندی حافظه‌ به کمک خط فرمان

-->
شروع به کار

وسایل مورد نیاز: یک عدد حافظه (برای تمرین بهتره از حافظه‌ی فلش استفاده کنید)، یه توزیع لینوکسی که بتونید روش ترمینال رو اجرا کنید و در آخر کمی حال وحوصله
اینم بگم که کار به این سختی‌ها هم نیست و اگه حوصله ندارید می‌تونید به صورت گرافیکی و با چندتا کلیک همه‌ی این مراحل رو طی کنید

مراحل کار برای آماده سازی یک حافظه و استفاده از اون، به صورت زیره:
۱. پاک کردن تک تک پارتیشن‌‌های موجود بر روی حافظه (پاک کردن پارتیشنی که قصد دستکاری اونو دارید)
۲. ایجاد پارتیشن‌های جدید
۳. فرمت بندی پارتیشن‌های جدید (فایل سیستم مورد نظر خودتون رو روی پارتیشن اعمال کنید)
۴. مانت کردن پارتیشن مورد نظر

تمام مراحل بالا چه توی ویندوز و چه توی لینوکس مراحل یکسانیه و البته ممکنه دستورات متفاوتی داشته باشه
البته مرحله‌ی چهارم فقط مختص لینوکس هست (به دلیل تفاوت ساختار فایل‌ها توی این دو سیستم‌عامل)

در ادامه با من همراه باشید


۱. معمولا حافظه‌های فلش فقط یک پارتیشن دارن ولی برای مثال می‌تونید هارد کامپیوتر خودتون رو در نظر بگیرید که اگه توی ویندوز باشید پارتیشن‌های C,D,E,F و ... رو خواهید داشت و توی لینوکس هم پارتیشن‌های root و home از نمونه‌های متداولش هستند

اول از همه باید ببینیم اسم حافظه‌ی مورد نظرمون چیه و این حافظه چند پارتیشن داره

# sudo fdisk -l

خط دستور بالا می‌گه:‌ دستور fdisk با آپشن l رو با دسترسی مدیر سیستم اجرا کن و یک همچین خروجی خواهد داشت


Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027b13

Device        Boot    Start             End                Blocks            Id    System
/dev/sda1   *         2048             39063551     19530752      83   Linux
/dev/sda2             39065598     156301311    58617857     5     Extended
/dev/sda5             148488192   156301311    3906560       82   Linux swap / Solaris
/dev/sda6             39065600     148488191    54711296     83   Linux

Partition table entries are not in disk order

Disk /dev/sdb: 8103 MB, 8103395328 bytes
24 heads, 18 sectors/track, 36636 cylinders, total 15826944 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001c77d

Device        Boot    Start       End                 Blocks         Id   System
/dev/sdb1              2048        15826943      7912448    83  Linux

چند نکته‌:
تمام ابزارهای جانبی که به یک کامپیوتر لینوکسی متصل می‌شن، فایلی مربوط به اونها در پوشه dev تشکیل می‌شه
حافظه‌ها در لینوک بر اساس نوعی که دارند ممکنه sdx و یا hdx نام بگیرند که منظور از x همون شماره‌ی هارد یا حافظه‌ی مورد نظر است که به ترتیب a,b,c,d,e و ... نامیده می‌شن

خط اول
Disk /dev/sda: 80.0 GB, 80026361856 bytes

این خط به ما می‌گه که یک هارد ۸۰ گیگ به نام sda داریم
مسلما این هارد که a نام گرفته اولین هارد روی سیستم من هست و درواقع هاردیه که سیستم‌عامل من روی اون نصب شده

حافظه‌ی دومی که روی سیستم من هست فلاش ۸ گیگی هست به اسم b

Disk /dev/sdb: 8103 MB, 8103395328 bytes

به صورت کلی چه روی ویندوز و چه بر روی لینوکس امکان ساختن بیش از ۴ پارتیشن اصلی (Primary) وجود نداره برای دور زندن این محدودیت ما یکی از این ۴ پارتیشن اصلی رو از نوع Extended تعریف می‌کنیم و بعد می‌تونیم این پارتیشن رو به هر تعداد پارتیشن مجازی (Logical) که خواستیم تبدیل کنیم

پارتیشن‌های Primary از ۱ تا ۴ اسم گزاری می‌شن که البته ترتیب توشون مهم نیست و می‌تونن به صورت ۴ ، ۲، ۳ نام گذاری بشن. ولی پارتیشن‌های مجازی یا همان Logical از ۵ شروع می‌شن و به ترتیب شماره‌هاشون افزایش پیدا می‌کنه

Device        Boot     Start              End                   Blocks           Id      System
/dev/sda1   *          2048               39063551       19530752     83     Linux
/dev/sda2              39065598       156301311     58617857     5       Extended
/dev/sda5              148488192    156301311      3906560       82     Linux swap / Solaris
/dev/sda6              39065600      148488191      54711296     83     Linux

همون‌طور که مشاهده می‌کنید روی هارد اول (a) دو پارتیشن Primary با شماره‌های ۱ و ۲ داریم و شماره‌ی دو که یک پارتیشن پرایمری از نوع Extended است به دو پارتیشن Logical با شماره‌های ۵ و ۶ تقسیم شده.

Device        Boot     Start      End                  Blocks        Id     System
/dev/sdb1                2048      15826943      7912448    83   Linux

هارد دوم که اسمش b هست فقط یک پارتیشن پرایمری با شماره ۱ داره.

در ادامه می‌خوایم روی فلش ۸ گیگ سه پارتیشن ایجاد کنیم به اندازه‌های ۱ ، ۲ و ۵ گیگ
اول دستور زیر رو اجرا می‌کنیم
# sudo fdisk /dev/sdb
خروجی زیر رو دریافت خواهیم کرد
Command (m for help):

می‌تونید حرف m رو برای دیدن گزینه‌های مختلف تایپ کنید
اولین کاری که می‌کنیم اجرای کامند d به منظور پاک کردن پارتیشن مورد نظر هست. نکته‌ای که هست اینه که چون ما اینجا یک پارتیشن بیشتر نداریم، سیستم بطور خودکار همون یک پارتیشن رو پاک می‌کنه ولی اگر چند پارتیشن داشتیم باید با دادن شماره پارتیشن مورد نظر به سیستم می‌فهموندیم که کدوم پارتیشن رو پاک کنه

بعد از این مرحله با وارد کردن آپشن p می تونیم نگاهی به جدول پارتیشن ها بندازیم که توی این مثال به دلیل پاک کردن تنها پارتیشن موجود روی فلش، جدول کاملا خالیه

Disk /dev/sdb: 8103 MB, 8103395328 bytes
24 heads, 18 sectors/track, 36636 cylinders, total 15826944 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001c77d 

Device Boot      Start         End      Blocks   Id  System

 ۲. در ادامه آپشن n رو برای ساخت یک پارتیشن جدید وارد می‌کنیم
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):

خروجی داره اعلام می‌کنه هنوز هیچ گونه پارتیشن Primary و Extended ایجاد نشده و این نکته رو هم می‌گه که مجموعشون بیش از ۴ تا نمی‌تونه باشه
برای ادامه‌ی کار P رو وارد می‌کنیم تا یک پارتیشن Primary بسازیم

Partition number (1-4, default 1): 

از بین اعداد ۱ تا ۴ هر عددی رو که خواستید وارد کنید مثلا ۲

First sector (2048-15826943, default 2048): 

دستور fdisk بر اساس سکتورها کار می‌کنه. البته اینجا لازم نیست بدونید سکتور چیه و هیچ نیازی به محاسبه ندارید
برای این که به صورت دیفالت سکتور اولیه‌ی هارد رو اولین سکتور آزاد در نظر بگیره اینتر بزنید

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

به صورت دیفالت سکتور اولیه رو در نظر گرفت و حالا سکتور پایانی این پارتیشن رو می‌خواد
اگر اینتر کنیم به صورت دیفالت سکتور پایانی حافظه رو در نظر می‌گیره و این یعنی پارتیشن به اندازه کل حافظه‌ی فلش دیسک خواهد شد، از طرفی حساب کردن سکتوری که اندازه یک گیگ رو به ما بده مشکله، برای همین ما بهش می‌گیم که یک گیگ به عدد سکتور اولیه اضافه کن:
+1G
اینتر می‌کنیم و تمام
پارتیشن یک گیگ ما آمادست و باید سراغ پارتیشن ۲ گیگ و ۵ گیگمون بریم
می‌تونیم دو پارتیشن دیگه رو هم primary بسازیم که البته برای یاد گیری سیستم extended  و logical منextended رو انتخاب می‌کنم
دوباره n رو وارد می‌کنیم اینبار به جای p حرف e رو وارد می‌کنیم. سکتور اولیه رو دیفالت انتخاب می‌کنیم که میشه اولین سکتور بعد از یک گیگ قبلی و برای این که کل ۷ گیگ باقی مانده رو extended کنیم سکتور پایانی رو هم دیفالت انتخاب می‌کنیم

در اینجا اگر جدل پارتیشن ها رو با p ببینیم متوجه می‌شیم که یک پارتیشن یک گیگ از نوع پرایمری و یک فضای ۷ گیگ به نام extended داریم که تازه باید فضای ۷ گیگ رو به پارتیشن‌های logical تبدیل کنیم تا قابل استفاده باشه

Device         Boot    Start             End               Blocks           Id     System
/dev/sdb2                2048             2099199     1048576       83    Linux
/dev/sdb3                2099200      15826943   6863872       5      Extended
 
دوباره n رو وارد می‌کنیم و اینبار مشاهده می‌کنیم که به‌جای حرف e حرف l رو در اختیار داریم این یعنی این که ما فقط یک فضای Extende بیشتر نمی‌تونیم داشته باشیم و از اینجا به بعد می‌تونیم اون رو به پارتیشن‌های logical تبدیل کنیم

مراحل کاملا مثل قبل هست و باید بعد از انتخاب حرف l اول مقدار۲ گیگ رو بسازیم و بعد هم مقدار باقی مانده که ۵ گیگ هست رو به آخرین پارتیشن خودمون تبدیل کنیم

در آخر جدول پارتیشن ها رو نگاه می‌کنیم و از کار خودمون مطمئن می‌شیم

Device        Boot    Start             End                  Blocks          Id      System
/dev/sdb2               2048             2099199         1048576     83     Linux
/dev/sdb3               2099200      15826943       6863872     5       Extended
/dev/sdb5               2101248      6295551         2097152     83     Linux
/dev/sdb6               6297600      15826943       4764672     83     Linux 

با وارد کردن حرف w تغییراتی که دادیم اعمال می‌شه و دستور fdisk بسته میشه

۳. فرمت بندی پارتیشن‌های ساخته شده

برای پارتیشن بندی پارتیشن‌های ساخته شده از دستور mkfs یا make file system استفاده می‌کنیم
اول از همه مطمئن بشید که پارتیشن‌های مورد نظر درون دایرکتوری dev هستند یا نه

# ls /dev/sdb*

باید خروجی زیر رو دریافت کنید

/dev/sdb    /dev/sdb2    /dev/sdb3    /dev/sdb5    /dev/sdb6

در غیر این صورت یه بار فلش رو دربیارید و دوباره به سیستم بزنید
دوباره اسم فلش خودتون رو چک کنید که sdb باشه و sdc نشده باشه چون ممکنه هنگام در آوردن و جا زدن فلش این اتفاق بیافته که البته در ادامه می‌تونید از sdc استفاده کنید

# mkfs.format name    partition name

به جای format name باید اسم فرمت مورد نظر مثلا fat یا vfat و ... رو بزنید
می‌تونید با نوشتن این کد و زدن دوبار پشت سر هم کلید tab از فرمت‌های موجود مطلع بشید

# mkfs.

چون سیستم‌های ویندوز معمولا فقط فرمت‌های خود ماکروسافت رو می‌فهمند و فلش هم برای انتقال اطلاعات بین همه‌ی سیستم‌هاست من vfat رو برای پارتیشن‌هام انتخاب می‌کنم
با زدن دستورات زیر من سه پارتیشنم رو فرمت می‌کنم

# mkfs.vfat     /dev/sdb2
# mkfs.vfat     /dev/sdb5
# mkfs.vfat     /dev/sdb6 

دقت کنید که sdb3 از نوع extended هست
یعنی خودش پارتیشن جدایی نیست و فقط در بر دارنده‌ی پارتیشن‌های logical هست ، پس نمی‌تونه فرمت بندی بشه

کار تمام
فلش رو در بیارید و دوباره به سیستم بزنید تا ۳ پارتیشن رو مشاهده کنید

۴. مانت کردن پارتیشن‌ها
لینوکس و کلا شبه یونیکس‌ها فایل سیستم درختی دارن یعنی این که کل سیستم در زیر مجموعه‌ی پوشه‌ای به اسم / که در واقع root یا ریشه نامیده میشه قرار می‌گیره
تمامی قسمت‌های مختلف سیستم از جمله پوشه‌ی خانگی کاربر و وسایل جانبی که به سیستم متصل می‌شن زیر مجوعه‌ی روت قرار می‌گیرن
مثلا فولدر home که اطلاعات کاربرها درش قرار داره

/home

و یا فولدر media که ابزارهای متصل به سیستم درون اون قرار می‌گیرن

/media

مانت کردن یعنی این که ابزار مورد نظرتون که مثلا فلش دیسک باشه رو زیر مجموعه این فایل سیستم درختی بکنید
مثلا توی فولدر media پوشه‌ای به نام test بسازید و با دستور زیر پارتیشن مورد نظرتون رو به اون وصل کنید

# mount    /dev/sdb2    /media/test

حالا هرچی رو که توی test بنویسید در واقع دارید روی پارتیشن sdb2 می‌نویسید
با دستور umount می تونید یک پارتیشن رو از حالت مانت در بیارید

# umount    /dev/sdb2

البته نباید نگران باشید چون در لینوکس‌های جدید با زدن فلش به سیستم، به صورت خودکار مانت میشه و در پوشه media قرار می‌گیره
این رو فقط برای این گفتم که اگر هنگام فرمت کردن فایل سیستم خطی مبنی بر مانت بودن پارتیشن دریافت کردید بدونید که چطور پارتیشن رو از حالت مانت خارج کنید تا بتونید فرمت بندی رو انجام بدید.