最後更新: 2020-03-11
介紹
parted 是 Linux 上修改 partion 的利器來.
它可以建立(mkpart), 刪除(rm), 檢查(check) Partion.
而且還可以 更改容量(resize) 及 救回(rescue) 誤刪的 partion !!!
注意: resize partion 唔等於 resize file system !!
目錄
SYNOPSIS
parted [options] [device [command [options...]...]]
i.e.
parted /dev/sdb mklabel msdos
parted /dev/sdb mkpart pri 0% 100%
parted /dev/sdb print
互動 Shell
(parted) help <cmd>
i.e.
(parted) help set
Tips
Modern HDD starting after about 1TB can use 4kB physical sectors.
Its important for performance that filesystems are aligned on 4kB boundaries,
as the drive will do read/modify/write to fake 512B physical sectors.
-a alignment-type
alignment-type:
- optimal
- minimal
- cylinder
用 parted 的 "optimal" 或 "minimal" 就沒有 align 的問題
P.S.
fdisk -b 4096 /dev/sda
switched off DOS compatibility of fdisk ("c") and changed view mode to sectors ("u")
HardDisk Format 的要求:
Partitions:
Make sure that all partitions start on a multiple of 8 sectors (8x 512B = 4KB) and
that partition sizes are multiples of 8 sectors.
所以:
The first partition starting at sector 63 is done automatically by the partitioning program to optimize read/write performance.
PS:
The file system defaults on most Linux systems are to use blocks of 4KB data.
Typically no specific actions are needed to configure block sizes for WD Advanced Format drives.
Usage
查看本機上所有的 block device 的資訊
parted -l
Model: WDC WD800JB-00FSA0 (ide) Disk /dev/hda: 80.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 8003MB 8003MB primary ext3 boot 2 8003MB 10.0GB 1999MB primary linux-swap 3 10.0GB 20.0GB 10.0GB primary ext3 4 20.0GB 80.0GB 60.0GB extended 5 20.0GB 40.0GB 20.0GB logical lvm 6 40.0GB 60.0GB 20.0GB logical lvm 7 60.0GB 80.0GB 20.0GB logical ext3
進入 interactive mode
parted
在 interactive mode 看本看資料
print all = parted -l
print free
print <n>
<n> 是指 print 時的 Number, 如
Model: ST362021 C " " " " " " " (scsi)
Disk /dev/sda: 60.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 30.0GB 30.0GB primary ntfs
2 30.0GB 60.0GB 30.0GB primary
建立 Partition Table(mklabel)
mklabel <label-type>
label-type:
- loop (raw disk access)
- msdos
- gpt
建立 Partition(mkpart)
mkpart [...]
Creates a new partition, without creating a new file system on that partition.
You may specify a file system type,
to set the appropriate partition code in the partition table for the new partition.
i.e 在 Device 上建立4個 partiion
選擇要進行操作的 Device
select DEVICE
i.e. select /dev/sda
建立第 1 個 partiion
(parted) mkpart
Partition type? primary/extended? primary File system type? [ext2]? ext3 Start? 0% End? 33%
Start 及 END 的表達方式可以是"容量"或"%", 如 4GB or 10%
P.S.
File system type:
swap = linux-swap
建立第 2 個
(parted) mkpart
Partition type? primary/extended? primary File system type? [ext2]? ext3 Start? 15% End? 100% Warning: You requested a partition from 9003MB to 60.0GB. The closest location we can manage is 30.0GB to 60.0GB. Is this still acceptable to you? Yes/No?yes
建立第 3 個
Default 單位 megabytes
Start=34s <-- (units in sectors)
End=Total sectors - 34s
建立第 4 個
mkpart primary 2200 100%
當沒有 partation table 時:
(parted) mkpart
Error: /dev/sda: unrecognised disk label
unrecognised disk label
Unit
"s" (sectors),
"B" (bytes),
"MB" <- megabyte (10^n)
"MiB" <- mebibyte (2^n)
"%" (percentage of device size),
"compact" (megabytes for input, and a human-friendly form for output)
Set Flags
set minor flag state
- boot
- root
- swap
- hidden
- raid
- lvm
- lba
Example:
set 1 boot on
set 1 raid off
說明
lba
this flag can be enabled to tell MS DOS, MS Windows 9x and MS Windows ME based operating systems to use Linear (LBA) mode.
Rescue 測試
刪除 Number 為 1 的 partion
rm 1
!!!!!!!! 沒有再問一次的 !!!!!!!!
拯救:
(parted) rescue
Start? 0
End? 100%
searching for file systems... 0% (time left 179:30)
Information: A ntfs primary partition was found at 32.3kB -> 60.0GB. Do you
want to add it to the partition table?
Yes/No/Cancel?yes
Resize
方案 1:
parted /dev/sdc
(parted) unit s
(parted) print
Number Start End Size Type File system Flags 1 2048s 488386559s 488384512s primary ext4 boot
(parted) rm 1
(parted) mkpart pri ext4 2048s 100%
方案 2:
# Error: The resize command has been removed in parted 3.0
(parted) resize 1 0.00B 100%
Example
假設要 resize lamp 這個 Partition
mount | grep lamp # 看看它的 device 是什麼
/dev/sdd6 on /var/lib/lxc/lamp/rootfs type btrfs
(rw,noatime,space_cache,subvolid=264,subvol=/squeeze)
umount /dev/sdd6 # 必須 umount 它
# 查看原來 partition 的位置
parted /dev/sdd
(parted) unit s
(parted) print
6 23633920s 101562367s 77928448s logical btrfs 5 179689472s 273436671s 93747200s logical ext4
# 刪除及建立
(parted) rm 6
(parted) mkpart log btrfs 23633920s 131562367s
7 23633920s 131562367s 107928448s logical btrfs lba 5 179689472s 273436671s 93747200s logical ext4
mount -a # mount by UUID
cd /var/lib/lxc/lamp/rootfs
btrfs fi resize max . # resize fs (BTRFS)
df -h | grep lamp # checking
/dev/sdd7 52G 36G 15G 71% /var/lib/lxc/lamp/rootfs
快速方案
parted 錯地方 (Device, Partition)
parted /dev/sdc1
(parted) unit s
Number Start End Size File system Flags 1 0s 488384511s 488384512s ext4
parted /dev/sdc
(parted) unit s
(parted) print
Number Start End Size Type File system Flags 1 2048s 488386559s 488384512s primary ext4 boot
parted mkpart without set "File system" or "Name"
name
...
fs-type
The mkpart command does not actually create the file system:
the fs-type parameter will simply be used by parted to set a 1-byte code that is used by
boot loaders to "preview" what kind of data is found in the partition, and act accordingly if necessary.
* 如果不 set 它們, 最簡單方法係轉用 fdisk