引言
為什么要把硬盤(pán)分區?
1、維護相關(guān):如可以把相同類(lèi)型,有共同安全需要的內容,放到不同的分區中,這樣方便了維護。
2、效率因素:如果一個(gè)大的硬盤(pán),在整個(gè)硬盤(pán)上找到相應的資料,很費時(shí)。
3、硬盤(pán)限額:限額的控制,只能對分區來(lái)實(shí)施。
4、備份資料:這個(gè)和第一個(gè)控制有一點(diǎn)雷同,我可以對重要的信息放到某個(gè)分區,方便備份。
5、安全考慮:如果大的硬盤(pán),一但有損壞的話(huà),就有可能導致整個(gè)硬盤(pán)資料丟失,如果把硬盤(pán)的資料分開(kāi)來(lái)存放的話(huà),損失會(huì )很小。
你可以把這個(gè)磁盤(pán)想像成您家的房子,而分區就相當于房子里面的房間一樣。
為什么要對分區進(jìn)行格式化?
格式化就是對分區進(jìn)行初始化的一種操作,為了讓我們能向分區中寫(xiě)入數據。如果你看過(guò)一天一點(diǎn)學(xué)習Linux之認識文件系統 的話(huà),那么就你會(huì )明白格式化操作其實(shí)就是創(chuàng )建分區的Inode/block/super block/group block等等信息。
第一部分:磁盤(pán)的分區
下面我們就用虛擬機來(lái)實(shí)驗RHEL6上的硬盤(pán)分區與格式化
在虛擬機上增加一塊硬盤(pán)
我以VMware workstation為例,演示如何給RHEL6系統上增加一塊SCSI硬盤(pán),并設置大小寫(xiě)為20G。
關(guān)機狀態(tài)下:在VMware Workstation的工具欄中選擇VM——Settings——Hardware——Add——選擇Hard Disk——Next——Create a virtual disk——Next——SCSI(Recommended)——Next——Maximum disk size(GB):20.0——Next——Finish
這樣就就為你的系統增加了一塊20G的SCSI的硬盤(pán)了,然后啟動(dòng)系統,下面就開(kāi)始今天的分區操作了。
對硬盤(pán)進(jìn)行分區操作

[root@yufei ~]# fdisk -l
顯示出系統中所有的硬盤(pán)信息
[root@yufei ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00093fdc#設備名 是否是啟動(dòng)設備 開(kāi)始柱面 結果柱面 大小1K為單位 分區類(lèi)型標識 分區的系統類(lèi)型Device Boot Start End Blocks Id System/dev/sda1 * 1 1913 15360000 83 Linux/dev/sda2 1913 1978 524288 82 Linux swap / SolarisDisk /dev/sdb: 21.5 GB, 21474836480 bytes #磁盤(pán)的名稱(chēng)、大小255 heads, 63 sectors/track, 2610 cylinders #磁頭、扇區、柱面數量Units = cylinders of 16065 * 512 = 8225280 bytes#每個(gè)柱面的大小Sector size (logical/physical): 512 bytes / 512 bytes#扇區的大小I/O size (minimum/optimal): 512 bytes / 512 bytes #硬盤(pán)的IO情況Disk identifier: 0x00000000 ##磁盤(pán)的標識Disk /dev/sdb doesn't contain a valid partition table
這里面會(huì )顯示磁盤(pán)的空間大小以及磁頭、扇區、柱面的數量。如果沒(méi)有分區的磁盤(pán),他會(huì )給有相應的提示“Disk /dev/sdb doesn’t contain a valid partition table”。這就是我們要對其分區的磁盤(pán)sdb。
[root@yufei ~]# fdisk /dev/sdb
顯示fdisk的幫助信息
Command (m for help):m #顯示幫助信息Command actiona toggle a bootable flagb edit bsd disklabelc toggle the dos compatibility flagd delete a partition #刪除一個(gè)分區l list known partition types #列出分區類(lèi)型m print this menun add a new partition #增加一個(gè)新的分區o create a new empty DOS partition tablep print the partition table #打印出分區表q quit without saving changes #不保存退出s create a new empty Sun disklabelt change a partition's system id #改變分區類(lèi)型u change display/entry unitsv verify the partition table #校驗分區表w write table to disk and exit #保存分區表x extra functionality (experts only)
新增分區
Command (m for help): nCommand actione extended #擴展分區p primary partition (1-4) #主分區由于硬盤(pán)的設計原因,我們的主分區表最多是4個(gè)。至于為什么會(huì )是這樣,請大家參考:帶您深入了解硬盤(pán)分區表http://www.opsers.org/base/take-you-in-depth-understanding-of-the-hard-disk-partition-table.html。如果想更詳細了解的話(huà),請觀(guān)看我以前的視頻內容:Linux分區與格式化及文件系統優(yōu)化http://www.opsers.org/videos/chapter-x-linux-partition-and-format-and-file-system-optimization.htmlpPartition number (1-4): 1 #分區號First cylinder (1-2610, default 1): #柱面默認是1,直接回車(chē)Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):+1G #設置結束柱面或者用分區的大?。?K、M、G)來(lái)讓系統自動(dòng)計算結束柱面 然后回車(chē)列出分區信息
Command (m for help): p #列出剛才的分區信息Disk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 LinuxCommand (m for help): nCommand actione extendedp primary partition (1-4)pPartition number (1-4): 2First cylinder (133-2610, default 133):Using default value 133Last cylinder, +cylinders or +size{K,M,G} (133-2610, default 2610): +50 #在原來(lái)的基礎上加上50個(gè)柱面Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux新增加擴展分區
Command (m for help): nCommand actione extendedp primary partition (1-4)e #我們來(lái)分擴展分區Partition number (1-4): 3 #擴展分區的分區號是3,當然也可以是4,但不可能是大于4的。First cylinder (184-2610, default 184): #擴展分區的起始柱面Using default value 184Last cylinder, +cylinders or +size{K,M,G} (184-2610, default 2610): #擴展分區的結束柱面,默認就是全部劃分給擴展分區了Using default value 2610Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended #注意這里的類(lèi)型已經(jīng)和上面的不一樣了增加邏輯分區
Command (m for help): nCommand actionl logical (5 or over) #這時(shí)候就和上面的不一樣了,因為在擴展分區中再分的話(huà),就是邏輯分區了,必需是5以上p primary partition (1-4) #因為我們還可以分一個(gè)主分區出來(lái),所以這里會(huì )顯示這樣的信息。當然,因為我們已經(jīng)把硬盤(pán)所有我空間全分給了擴展分區,所以,我們分不出那個(gè)主分區了。lFirst cylinder (184-2610, default 184):Using default value 184Last cylinder, +cylinders or +size{K,M,G} (184-2610, default 2610): +2GCommand (m for help): PDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux #這個(gè)分區就是邏輯分區了,我是怎么看出來(lái)的呢?關(guān)鍵是你要注意兩點(diǎn):1是分區號。這里是sdb5。2是分區的開(kāi)始柱面是從184開(kāi)始的,而我們的擴展分區也是從184開(kāi)始的,可以肯定是在擴展分區里面分出來(lái)的分區,那當然是邏輯分區啊增加SWAP分區
下面我們再分一個(gè)512M的分區出來(lái),為了我們后面的課程講解。這個(gè)分區我們后面會(huì )用他當作SWAP分區。
Command (m for help): nCommand actionl logical (5 or over)p primary partition (1-4)lFirst cylinder (446-2610, default 446):Using default value 446Last cylinder, +cylinders or +size{K,M,G} (446-2610, default 2610): +512MCommand (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux/dev/sdb6 446 511 530113+ 83 Linux我們下面來(lái)個(gè)錯誤的演示
Command (m for help): nCommand actionl logical (5 or over)p primary partition (1-4)pSelected partition 4No free sectors available
因為已經(jīng)沒(méi)有剩余的扇區了,所以肯定是分不了主分區了。
轉換分區類(lèi)型
Command (m for help): l #這個(gè)是L的小寫(xiě),不是1??!就是列出分區的類(lèi)型,因為很多,所以我就找幾個(gè)出來(lái)82 Linux swap / #這個(gè)就是SWAP分區代碼了83 Linux #這個(gè)就是Linux系統的分區代碼了8e Linux LVM #LVM分區的代碼Command (m for help): t #轉換分區類(lèi)型Partition number (1-6): 6 #選擇轉換的分區號Hex code (type L to list codes): 82 #轉換成的類(lèi)型Changed system type of partition 6 to 82 (Linux swap / Solaris) #提示內容Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux/dev/sdb6 446 511 530113+ 82 Linux swap / Solaris
我們就先分這么多出來(lái),當然這個(gè)磁盤(pán)還有很多空間,因為這只是演示,所以無(wú)需全部來(lái)分完。下面就是重要一個(gè)環(huán)節,保存我們分好的分區表,如果不保存,那么我們剛才的功勞,等于沒(méi)有做。
保存分區表
Command (m for help): w #保存分區表The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.
注意,如果出現
The kernel still uses the old table.The new table will be used at the next reboot.
這樣的提示的話(huà),他的意思就是讓我們重新啟動(dòng)系統,好讓內核認出我們新的分區表,為了不讓系統重新啟動(dòng),我們可以用
partprobe
這個(gè)命令,來(lái)讓內核重新獲得一次分區表的信息。
這時(shí)候我們再用
[root@yufei ~]# fdisk -l就可以看到我們分出來(lái)的分區內容了,我只取有用的內容Disk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux/dev/sdb6 446 511 530113+ 82 Linux swap / Solaris
如果說(shuō),你在分區的時(shí)候,哪里出現了錯誤,或者是不想那么操作的話(huà),按q退出,然后重新來(lái)過(guò)即可。千萬(wàn)在確保正確后再用w保存哦,如果你分錯了硬盤(pán)的話(huà),那么數據就OVER了??!
這個(gè)分區其實(shí)很簡(jiǎn)單,關(guān)鍵是多操作幾次,熟練后就很容易了!
注意:SATA 硬盤(pán)最多能夠支持到15個(gè)分區, IDE 則可以支持到63個(gè)。如果超過(guò)了這個(gè)限制,那么你的硬盤(pán)多余的空間也就浪費。
第二部分:格式化
分區完,我們的這塊硬盤(pán)還是不能使用的,需要對分區進(jìn)行格式化,讓其變成系統認識的分區。關(guān)于格式化的原理,大家可以參考:Linux分區與格式化及文件系統優(yōu)化這里我就不多說(shuō)了,下面進(jìn)行格式化的操作。
下面我們以第一個(gè)分區為列來(lái)講解如何對分區進(jìn)行格式化
先查看我們要進(jìn)行格式化的磁盤(pán)分區情況
[root@yufei ~]# fdisk -l /dev/sdbDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xd6737273Device Boot Start End Blocks Id System/dev/sdb1 1 132 1060258+ 83 Linux/dev/sdb2 133 183 409657+ 83 Linux/dev/sdb3 184 2610 19494877+ 5 Extended/dev/sdb5 184 445 2104483+ 83 Linux/dev/sdb6 446 511 530113+ 82 Linux swap / Solaris
再來(lái)認識一下格式化的工具
mkfs [-t 文件系統格式] 設備名
或者是
mkfs.文件系統格式 設備名
用mkfs[tab][tab]就可以顯示出系統所有支持的格式了
這個(gè)里面有很多的參數,可以用–hlep來(lái)查看
[root@yufei ~]# mkfs.ext4 --hlepmkfs.ext4: invalid option -- '-'Usage: mkfs.ext4 [-c|-l filename] [-b block-size] [-f fragment-size][-i bytes-per-inode] [-I inode-size] [-J journal-options][-G meta group size] [-N number-of-inodes][-m reserved-blocks-percentage] [-o creator-os][-g blocks-per-group] [-L volume-label] [-M last-mounted-directory][-O feature[,...]] [-r fs-revision] [-E extended-option[,...]][-T fs-type] [-U UUID] [-jnqvFKSV] device [blocks-count]
-b 指定block的大小 1024 2048 4096 默認是4096
-I 指定inode的大小(min 128/max 4096) 默認是256
-i 指定多少個(gè)字節分配一個(gè)inode
-L 指定卷標
分區演示
[root@yufei ~]# mkfs.ext4 -L opsers_tech -b 2048 -i 10240 /dev/sdb1mke2fs 1.41.12 (17-May-2010)Filesystem label=opsers_techOS type: LinuxBlock size=2048 (log=1)Fragment size=2048 (log=1)Stride=0 blocks, Stripe width=0 blocks106128 inodes, 530128 blocks26506 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=53791948833 block groups16384 blocks per group, 16384 fragments per group3216 inodes per groupSuperblock backups stored on blocks:16384, 49152, 81920, 114688, 147456, 409600, 442368Writing inode tables: doneCreating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 32 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
因為我的分區很小,所以格式化是很快的,如果分區很大的話(huà),這個(gè)也是要消耗一些時(shí)間的。大家可以用默認格式化與自定義格式化來(lái)進(jìn)行對比。
希望大家和其他三篇文章結合起來(lái)看,我相信這三篇文章,應該能徹底的讓你了解并掌握磁盤(pán)的分區、格式化原理與優(yōu)化了。
一天一點(diǎn)學(xué)習Linux之認識文件系統:
一天一點(diǎn)學(xué)習Linux之文件系統屬性更改相關(guān)操作:
注意:如果你遇到了這樣的提示
/dev/sdx:No such file or directory //找不到該分區,無(wú)法格式化
那么和我們上面的是一樣的原因,就是內核無(wú)法讀到新的分區表。解決方法有兩個(gè)
1.重啟系統。系統重新啟動(dòng)的時(shí)候會(huì )重新加載分區表,新的分區自然也就生效了。
2.為了節省時(shí)間或者系統環(huán)境不允許重啟,使用partprobe命令,在不重啟情況下重新加載分區表。
[root@yufei ~]# partprobe //重新加載所有硬盤(pán)的分區表[root@yufei ~]# partprobe /dev/sdb //只重新加載第一塊硬盤(pán)的分區表如果沒(méi)有那個(gè)命令的話(huà),那就安裝rpm -q parted
本文關(guān)鍵字:一天一點(diǎn),學(xué)習Linux,RHEL6,硬盤(pán),分區,格式化,磁盤(pán)優(yōu)化


