http://www.phpweblog.net/killjin/archive/2007/09/14/1952.aspxParted是支很好用的程式,可以用來切割磁碟,也可以變動現有分割區的大小,很好用,尤其是變動分割區大小的功能超級好用,就像我學習parted的 原因,是為了把我的/usr擴大(因為當初在分割的時候,把usr切太小了)。但網路上似乎沒有完整一點的parted指令說明,於是我就依據官方 document,來做整理,因為小弟的英文程度不是很好,所以恐怕有的地方會有錯,或者有人願意為這文件增加內容,都歡迎指教,謝謝!!
GNU parted
文中的特殊用詞說明:
minor(我不會翻,意思就是在 parted裡的partition編號)
disk label(磁碟標記)
flag(旗標)
指令說明
check
用法:check minor
說明:檢查partition有沒有錯誤
cp
用法:cp [來源裝置] 來源minor 目的minor
注意:加了[]的參數是可有可無的參數。
說明:複製來源partition的檔案系統至目的partition,要注意的是下了這個指令後,會將目的partition原本的資料內容清除喔….要小心。而那個可選擇性的來源裝置選項就是用在”跨裝置”複製檔案系統,很方便吧。
範例:
(parted) cp /dev/hdb 2 3
意思是將/dev/hdb2的檔案系統拷貝至minor 3
支援的檔案系統有:
ext2,ext3(目的partition的容量要大於來源partition)
fat16,fat32
linux-swap
reiserfs
help
用法:help 指令
說明:show出一般的help,或者是某項指令的help說明
mklabel
用法:mklabel 標記類型
有以下這些類型:
bsd,loop(raw disk access)、gpt、mac、msdos、pc98、sun
說明:為整個磁碟建立一個新的磁碟標記,當建立新的磁碟標記時,此磁碟並沒有任何的partition。,因此尚不能使用,必須使用其他程式如Gpart來回復partition。
mkfs
用法:mkfs minor 檔案系統類型
說明:為一個partition 建立檔案系統類型,這個動作將會破壞掉此partition的所有資料。
支援的檔案系統類型有:
ext2,mips,fat16,fat32,linux-swap,reiserfs
範例:
(parted)mkfs 2 fat32
為minor 2這個partition建立為fat32的檔案系統類型
mkpart
用法:mkpart 分割區類型 [檔案系統類型] 起始 結束
說明:mkpart用來建立一個新的分割區,分割區類型有primary,extended,
logical。
範例:
(parted)mkpart logical 0.0 692.1
建立一個邏輯分割區,容量為692.1MB。注意的是,由於磁區計算方法不同的原因,也許你在建立容量範圍的時候會產生些微的偏差值,但這並不會對partition造成影響。
mkpartfs
用法:mkpartfs 分割區類型 檔案系統類型 起始 結束
說明:mkpartfs 用來建立一個新的分割區及檔案系統。
範例:
(parted)mkpartfs logical ext2 440 670
建立一個ext2的邏輯分割區,起始為440MB,結束為670MB,這個分割區共計230MB。
move
用法:move minor 起始 [結束]
說明:可以將整個partition位置移動。如果只給起始位置,沒給結束位置的話,將會保持這個partition原本的大小。
範例:
(parted)move 2 150
將minor為2的partition起始位置移動到150MB的地方。
name
用法:name minor 名字
說明:為partition命名(只有Mac及PC98可以用)。
範例:
(parted)name 2 ‘abc’
將partition 2 命名為abc。
用法:print
說明:show出parted正在處理的磁碟裝置的分割表。
範例:
(parted) print
Disk geometry for /dev/hda: 0.000-2445.679 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 945.000 primary FAT boot, lba
2 945.000 2358.562 primary ext2
3 2358.562 2445.187 primary linux-swap
quit
用法:quit
說明:離開parted。
rescue
用法:rescue start end
說明:用來挽救不小心被你用rm指令delete掉的partition。
範例:
(parted) print
Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 8056.032 primary ext3
(parted) rm
Partition number? 1
(parted) print
Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
Oh my god~~不小心把ext3的partition砍了,這時候就rescue就派上用場了
(parted) rescue
Start? 0
End? 8056
Information: A ext3 primary partition was found at 0.031Mb ->
8056.030Mb. Do you want to add it to the partition table?
Yes/No/Cancel? y
(parted) print
Disk geometry for /dev/hdc: 0.000-8063.507 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 8056.032 primary ext3
嘿嘿~降就救回來了!!
resize
用法:resize minor 起始 結束
說明:調整partion的大小,要注意,resize只能改變partition大小,並不能改變minor,另外當你在改變ext2,ext3的大小時,新的起始位置必須要和舊的一,也就是說只能動尾不能動頭啦!!
範例:
(parted)resize 3 200 850
調整第3個partition為從200MB ~ 850MB。
rm
用法:rm minor
說明:移除partition,除果你不小心用rm指令搞掉了一個partition,你可以用mkpart來回復。注意,假如你現在有編號1~8,8個minor,當你把minor
6砍掉時,原本的minor7及minor8就會向前變為minor6及minor7,因此當你有做移除partition動作時,記得要去修改/etc/fstab裡頭的設定喔。
範例:
(parted)rm 3
移除minor3 這個partion。
select
用法:select 裝置名稱
說明:用來直接在parted裡切換裝置。
範例:
(parted)select /dev/hdb
切換處理的裝置到/dev/hdb
set
用法:set minor flag 狀態(on,off)
說明:變更partiton的flag,狀態那欄就是拿來設定flag要打開或關閉用的。Flag有下列幾種:boot、lba、root、swap、hidden、raid、LVM。
範例:
(parted)set 1 boot on
將partition1的旗標設為boot並且將之開啟。
講那麼多,不如做幾個實例看看吧!!
範例 1:增加partition的大小
假如我們的/dev/hda的分割區是以下這樣:
(parted) print
Disk geometry for /dev/hda: 0.000-1000.000 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.063 500.000 primary ext2
2 500.000 625.000 primary linux-swap
由上面可以看出我們擁有1000MB的空間,partition1用去500MB,partition2用去125MB,還有375MB空間可供運用,假如你想要將剩餘的375MB空間全部都給partition1使用的話,就照著下面的步驟來囉!!
#parted /dev/hda
進入parted,並選擇hda為操作的磁碟
(parted)rm 2
刪 除partition2。注意:在一般增加partition空間的情形下並不需要做刪除的動作,因為刪除動作會將partition裡的資料毀損。在這 個例子裡,partiton2是linux-swap,swap並不會儲存資料,所以把partiton2刪除了並不會有所影響,我們稍後再建立一個 linux-swap的partition就可以了。
(parted)resize 1 0.063 874.9
調整partition1的位置為從0.063到874.999,共875MB。
(parted) print
Disk geometry for /dev/hda: 0.000-1000.000 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.063 874.999 primary ext2
(parted)mkpartfs primary linux-swap 875 999.9
建立新的linux-swap partition。
(parted) print
Disk geometry for /dev/hda: 0.000-1000.000 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.063 874.999 primary ext2
2 875.000 1000.000 primary linux-swap
這樣就大功告成啦~~
範例2:增加一個即將不夠用的partition空間
假設我們的/dev/hda如下:
(parted) print
Disk geometry for /dev/hda: 0-8063.5 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.0 23.5 primary ext2 boot
2 23.5 8056.0 extended
5 23.6 3545.6 logical ext2
6 3545.6 7067.7 logical ext2
7 7067.7 7326.5 logical ext2
8 7326.5 7585.4 logical ext2
9 7585.4 7844.2 logical linux-swap
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 251M 31M 207M 13% /
/dev/hda1 23M 2.4M 19M 11% /boot
/dev/hda5 3.4G 577M 2.7G 18% /usr
/dev/hda6 3.4G 289M 2.9G 9% /home
/dev/hda7 251M 12M 226M 5% /var
如果我們想增加/var空間到1GB,而這想要增加的空間哪來呢??從/home拿過來好了。照著下面步驟來吧!!
(parted)resize 6 3545.6 6200
縮小/home的空間至500MB
(parted)mkpartfs logicai ext2 6200 7067.7
建立一個新的partition,這個partition將被編號為10。
(parted)cp 7 10
將partition7(/var)的內容copy到新建的partition10上。
(parted)rm 7
刪除partition 7,到了這個地方,由於partition 7被刪除了,於是原本的partition8、9、10號碼往前挪變成了partiton 7、8、9。
(parted)resize 9 6200 7326.5
調 整partition9(新的/var)大小為1G。到此,整個調整partition大小的動作只算完成了一半喔!!因為我們有新增partition 也有刪除partition,甚至連/var的parition位置都變了,所以最後的動作就是更改/etc/fstab囉!!
原本的/etc/fstab內容如下:
/dev/hda8 / ext2 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/hda6 /home ext2 grpquota,usrquota 0 2
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda5 /usr ext2 defaults 1 2
/dev/hda7 /var ext2 grpquota,usrquota 0 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda9 swap swap defaults 0 0
parted做完後的變動如下:
/var變成了/dev/hda9
/ 變成了/dev/hda7
swap變成了/dev/hda8
因此修改後的/etc/fstab如下:
/dev/hda7 / ext2 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/hda6 /home ext2 grpquota,usrquota 0 2
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda5 /usr ext2 defaults 1 2
/dev/hda9 /var ext2 grpquota,usrquota 0 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda8 swap swap defaults 0 0
重開機後!!就完成了。