分享

parted - 磁盘分区管理工具(1/2)

 昵称9560311 2012-03-31


  一.parted简介

  Linux下磁盘分区管理的高级工具parted。parted命令用来管理维护磁盘的分区。

  GNU Parted是一个用于对分区及其文件系统进行建立、修改、调整、检查、复制等操作的一个工具。对于安装新的系统来说,使用GNU Parted来为它进行分区是十分方便的。此外,你还可以用它来检查磁盘的使用状况,在不同的磁盘之间复制数据,甚至是"映象"磁盘--将一个磁盘的安装完好地复制到另一个磁盘中。

  GNU Parted是一个磁盘分区管理管理工具,它比fdisk更加灵活,功能也更丰富,同时还支持GUID分区表(GUID Partition Table), 这在IA64平台上管理磁盘时非常有用。

  GNU Parted同时支持交互模式和非交互模式. 它除了能够进行分区的添加,删除等常见操作外,还可以移动分区, 制作文件系统, 调整文件系统大小, 复制文件系统.

  GNU Parted的主页是:http://www./software/parted。一些库文件和前端可以从这里下载:http://ftp //ftp./gnu/parted。你同样会找到许多邮件列表、如何对该软件作贡献的指引以及其他许多有用的相关信息。

  二.安装parted

  1.GNU Parted依赖包

  如果您亲自动手编译和安装 GNU Parted,那么你需要先安装一些其他程序。如果你要编译 GNU Parted,那么你还需要安装这些程序的普通包和开发包。

  • libuuid, e2fsprogs包中的一部分。如果没有这个包,那么您可以从下面这个网站中获取它:

  http://web./tytso/www/linux/e2fsprogs.html

  如果您需要同时编译GNU Parted和e2fsprogs,那么请注意, 你需要对e2fsprogs进行 make install

  和make install-libs操作。

  • GNU Readline (可选), 可以从下面这个网站中获取它:

  http://ftp//ftp./gnu/readline

  如果你需要编译Parted,,但你又没有readline,,那么你可以使用以下编译配置选项来关闭Parted的readline功能:

  ./configure --disable-readline

  • GNU gettext (或其他兼容的软件) 用于编译,如果你需要国际化支持

  http://ftp//ftp./gnu/gettext

  • libreiserfs, 如果你需要对reiserfs文件系统的支持

  http://reiserfs./

  请注意,parted在每次运行时都会自动检测并载入libreiserfs 来打开对reiserfs 的支持。然而,libreiserfs 还是非常新,未经过广泛的测试,有可能不是很完善。

  2.编译GNU Parted

  如果你需要编译GNU Parted,那么你只需要这样做:

  $ ./configure

  $ make

  然而,请留意一下这些配置选项

  --without-readline

  关闭readline.功能。这个选项对于制作急救磁盘非常有用,因为这些库可能不存在。

  --disable-debug

  关闭调试功能

  --disable-dynamic-loading

  关闭动态载入程序库的功能(不过现在只有libreiserfs 库支持该功能,因此我们希望会有更多支持这个功能的库)动态载入是一个非常有用的功能,因为它能让你使用libparted ,特别是在你不知道有哪些库可用的时候,这个功能显得更加有用。当然,你可能会需要在特定的情况下关闭这个功能(如制作bootdisk)。

  --disable-fs

  关闭所有文件系统的支持

  --disable-nls

  关闭对本地语言的支持。使用旧版本的glibc时,这个选项会非常有用。(有时候急救磁盘中的glibc版本会很旧)

  --disable-shared

  关闭共享库。在使用旧版本的GNU libc时,如果发生了编译错误"spilled register",那么你可能需要使用这个选项。建立急救磁盘和引导盘时这个选项同样会很有用。

  --disable-Werror

  关闭编译时的警告信息的显示

  --enable-discover-only

  使perted只支持读

  --enable-mtrace

  打开malloc() 调试

  --enable-read-only

  关闭写入功能(调试时使用)

  三.GNU Parted的图形界面

  1.GParted

  一个基于GTK的分区工具,后台使用的正是GNU Parted的库:libparted

  2.QtParted

  基于QT的分区工具。有点像PQ Magic。不过现在仍在开发之中,不能说十分稳定。后台使用的也是GNU Parted的库。

  四.使用parted

  GNU Parted有两种运行模式:命令行模式和交互模式。

  1.命令行模式的选项

  当你调用命令行模式时,parted的语法是这样的:

  格式1# parted [option] device

  格式2# parted [option] device [command [argument]]

  格式1:用于进入parted的交互模式,在该模式下输入parted的子命令对指定的硬盘进行分区等操作。quit命令用于退出交互模式。

  格式2:直接在命令行方式下对指定的硬盘进行分区等操作。

  有几个选项可以供你使用。对于其他涉及分区细节的Parted命令,请参见下一节。选项以一个横杠开头,而Parted命令前则没有这个横杠。

  选项: 选项

  说明 -h(--help) 显示帮助信息 -i(--interactive) 在必要时提示用户;进入交互模式 -l(--list) 显示所有磁盘设备的分区表 -s(--script) 从不提示用户 -v(--version) 显示版本 命令: 命令

  描述 check minor-num 执行文件系统的简单检查 cp from to 把文件系统从一个分区复制到另一个分区,from和to是分区的次要号码 Help 显示可用的命令列表 mklable label 为分区表创建磁盘标签 mkfs minor-num file-system-type 创建类型为file-system-type的文件系统 mkpart part-type fs-type start-mb end-mb 不创建新文件系统,而制作分区 mkpartfs part-type fs-type start-mb end-mb 制作分区并创建指定的文件系统 move minor-num start-mb end-mb 移动分区 name minor-num name 仅为MAC和PC98磁盘标签的分区命名 Print 显示分区表 rescue start-mb end-mb 拯救一个丢失的分区,从"start-mb"到"end-mb" resize minor-num start-mb end-mb 重新划分分区大小,从"start-mb"到"end-mb" rm minor-num 删除分区 select device 选择另一个设备来配置 set minor-num flag state 在分区上设置标志:state要么是on,要么是off Quit 退出parted 子命令: 命令

  说明 Help [command] 打印命令的帮助信息,或指定命令的帮助信息 print [free|number|all] 显示分区表,指定编号的分区,或所有设备的分区表 mkpart PART-TYPE [FS-TYPE] START END 创建新分区。PART-TYPE是以下类型之一:primary(主分区)、extended(扩展分区)、logical(逻辑分区)、START和END是新分区开始和结束的具体位置 rm Number 删除指定编号NUMBER的分区 set Number FLAG STATE 对指定编号NUMBER的分区设置分区标记FLAG。对于PC常用msdos分区表来说,分区标记FLAG可有如下取值:"boot(引导)"、"hidden(隐藏)"、"raid(软RAID磁盘阵列)"、 "lvm(逻辑卷)"、"lba(LBA,Logic Block Addressing模式)"。状态STATE的取值是:on或off unit UNIT 设置默认输出时用UNIT表示磁盘大小,UNIT的常用取值可以为:"MB"、"GB"、"%(占整个磁盘设备的百分之多少)"、"compact(人类易读方式,类似于df命令中-h参数作用)"、"s(扇区)"、 "cyl(柱面)"、"chs(柱面cylinders:磁头,heads:扇区,sectors的地址)" mkfs NUMBER FS-TYPE 对指定编号NUMBER的分区创建指定类型FS-TYPE的文件系统 mkpartfs PART-TYPE FS-TYPE START END 创建新分区同时创建文件系统。FS-TYPE是以下类型之一:ext2、fat16、fat32、linux-swap、ntfs、reiserfs、ufs等 cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER 将分区FROM-NUMBER上的文件系统完整地复制到分区TO-NUMBER中,作为可选项,还可以指定一个来源硬盘的设备名称FROM-DEVICE,若省略可选项则在当前设备上进行复制 move NUMBER START END 将指定编号NUMBER的分区移动到从START开始END结束的位置上。注意:(1)只能将分区移动到空闲空间中;(2)虽然分区被移动了,但它的分区编号是不会改变的 resize NUMBER START END 对指定编号NUMBER的分区调整大小。分区的开始位置和结束位置由START和END决定 check NUMBER 检查指定编号NUMBER分区中的文件系统是否有什么错误 rescue START END 恢复靠近位置START和END之间的分区 mklabel,mktable LABEL-TYPE 创建一个新的LABEL-TYPE类型的空磁盘分区表,对于PC而言msdos是常用的LABEL-TYPE。若是用GUID分区表,LABEL-TYPE应该为gpt name NUMBER NAME 为指定编号NUMBER的分区命名为NAME 2.Parted 交互模式下的命令

  GNU Parted 提供以下命令:

  (1)check(检查)

  格式:check number

  检查编号中所指定的文件系统是否有什么错误.。

  例:

  (parted) check 1

  检查分区1上的文件系统.

  (2)cp(复制)

  格式:cp [from-device] from-number to-number

  将分区 from-number上的文件系统完整地复制到分区to-number 中。分区to-number 上的数据会被全部删除。你可以再指定一个来源硬盘的设备名称 from-device来指定来源分区所在的硬盘。

  该命令支持以下文件系统:

  * ext2, ext3 (所提供的目标分区必须比源分区要大)

  * fat16, fat32

  * linux-swap (相当于再目标分区执行mkswap 命令)

  * reiserfs (如果安装了libreiserfs库)

  例:

  (parted) cp /dev/hdb 2 3

  将/dev/hdb上的第二个分区的内容复制到第三个分区上。

  (3)help(帮助)

  格式:help [command]

  输出一个命令的帮助信息

  例:

  (parted) help resize

  输出rezize 命令的帮助信息。

  (4)mklabel(建立分区表)

  格式:mklabel label-type

  建立一个 label-type 类型的磁盘分区表。新的分区表不会有任何分区。这个命令通常不会破坏你的数据,但是它有可能让你的数据变得不可读。这是你就需要用到rescue 命令来恢复分区。关于rescue 命令的用法请参见后文。Parted 能在各种分区表上工作。

  label-type 必须是一下这些类型:

  * bsd

  * loop (raw disk access)

  * gpt

  * mac

  * msdos

  * pc98

  * sun

  例:

  (parted) mklabel msdos

  建立一个MS-DOS格式的分区表。这对于PC而言是一个非常常见的操作。

  (5)mkfs(建立文件系统)

  格式:mkfs number fs-type

  在指定的分区上建立指定的文件系统。这个命令会破坏该分区上的所有数据。

  该命令支持以下文件系统:

  * ext2

  * fat16, fat32

  * linux-swap

  * reiserfs (如果安装了libreiserfs库)

  例:

  (parted) mkfs 2 fat32

  在第二个分区上建立FAT32格式的文件系统。

  (6)mkpart(建立新分区)

  格式:mkpart part-type [fs-type] start end

  建立一个新的分区。若要建立非扩展分区,就最好用fs-type来指定文件系统。start和end是新分区开始和结束的具体位置。part-type是以下类型之一: primary(主分区), extended(扩展分区), logical(逻辑分区). 扩展分区和逻辑分区只对msdos 和dvh分区表有效。

  fs-type必须是以下文件系统:

  * ext2

  * fat16, fat32

  * hfs, hfs+, hfsx

  * linux-swap

  * NTFS

  * reiserfs

  * ufs

  例:

  (parted) mkpart logical 0.0 692.1

  建立一个包含ext2文件系统的逻辑分区,其位置是从磁盘的开始位置(0.0)到692.1M之间。

  (7)mkpartfs(建立分区及其文件系统)

  格式:mkpartfs part-type fs-type start end

  建立一个新的分区,并在上面建立文件系统。与mkpart相似,分区的位置处于begin和end之间,默认的单位是MB.。请勿使用这个命令来恢复一个被删除了的分区(应使用mkpart)。part-type是以下类型之一: primary(主分区), extended(扩展分区), logical(逻辑分区). 扩展分区和逻辑分区只对msdos 和dvh分区表有效。 fs-type必须是以下文件系统:

  * ext2

  * fat16, fat32

  * linux-swap

  * reiserfs (如果安装了libreiserfs库)

  例:

  (parted) mkpartfs logical ext2 440 670

  建立一个a包含ex2格式文件系统的逻辑分区。其开始位置是440 MB,结束位置是670MB。

  (8)move(移动)

  格式:move number start end

  该命令能将选定的分区在硬盘中移动。start 可以指定一个新的分区的起始位置。不过,你不能将一个分区移到另一个分区上。也就是说,你只能在空闲的地方中移动分区。如果你想改变分区的大小,那么你所需要的命令是resize 。另外,虽然分区被移动了,但它的分区编号是不会改变的。

  该命令支持以下文件系统:

  * ext2, ext3 (所提供的目标分区必须比源分区要大)

  * fat16, fat32

  * linux-swap

  * reiserfs (如果安装了libreiserfs库)

  例:

  (parted) move 2 150M 500M

  将编号为2的分区移动到硬盘中150M至500M的位置。

  (9)name (命名)

  格式:name number name

  为编号所指定的分区命名(只支持GPT, Mac, MIPS 和PC98 格式的分区)。名字可以用引号括起来。

  例:

  (parted) name 2 'Secret Documents'

  将第2个分区命名为 'Secret Documents'。

  (10)print (输出信息)

  格式:print [number]

  输出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 fat32 boot, lba

  2 945.000 2358.562 primary ext2

  3 2358.562 2445.187 primary linux-swap

  (parted) print 1

  Minor: 1

  Flags: boot, lba

  File System: fat32

  Size: 945.000Mb (0%)

  Minimum size: 84.361Mb (0%)

  Maximum size: 2445.679Mb (100%)

  (11)quit (退出)

  格式:quit

  退出Parted.

  只有当Parted退出后,Linux内核才会知道磁盘的设置已经被改变了。但是实际上只要你一执行一条命令,更改马上就会写入磁盘。不过,磁盘缓存有可能延缓写入的操作。

  (12)rescue (恢复)

  格式:rescue start end

  如果你不小心用Parted的rm命令删除了一个分区,那么这个命令可以帮你恢复。你需要给出所误删的分区的大概的开始和结束的位置。Parted 就会在你给出的磁盘区域内去寻找,如果找到这个分区,那么Parted 就会询问你是否重新建立这个分区。

  例:

  (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

  糟糕了!我们不小心删除了这个ext3分区。不怕,Parted可以将它起死回生。

  (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

  呵呵。这就恢复了。

  (13)resize (调整大小)

  格式:resize number start end

  将编号所指定的分区调整大小。分区的开始位置和结束位置由start和end决定。resize不会改变分区的编号。注意,如果更改扩展分区的大小,那么你必须保证新的分区大小能够容纳里面的逻辑分区。另外,在调整大小前你无须对分区进行碎片整理。

  该命令支持以下文件系统:

  * ext2, ext3 限制:新的分区开始位置必须和原来的开始位置相同。也就是说,你只能向后扩展分区的大小。

  * fat16, fat32

  * hfs, hfs+, hfsx 限制:新的分区开始位置必须和原来的开始位置相同。而且新的end必须小于原来的end。也就是说,你只能够缩小分区。

  * linux-swap

  * reiserfs (如果安装了libreiserfs库)

  例:

  (parted) resize 3 200M 850M

  改变编号为3的分区的大小。其新的位置是200MB至 850MB 之间。

  (14)rm (删除分区)

  格式:rm number

  将编号所指定的分区删除。如果你误删了某个分区,那么你还可以用mkpart来挽救它(而不是用mkpartds)。注意,如果你使用的是MSDOS格式的分区表,那么假如你删除了一个逻辑分区,那么该分区后面的逻辑分区的编号都会相应地向前改变。例如,你删除了编号为6的逻辑分区,那么后面的7、8号逻辑分区的编号将会改变,分别变成6、7号逻辑分区。若在Linux下。这意味着你可能要改变/etc/fstab文件。

  例:

  (parted) rm 3

  将编号为3的分区删除。

  (15)select (选择设备)

  格式:select device

  选择Parted将要编辑的磁盘设备。这个磁盘设备可以是一个Linux硬盘设备,一个软盘、一个软RAID磁盘阵或者是LVM逻辑卷。

  例:

  (parted) select /dev/hdb

  选择/dev/hdb作为Parted所要编辑的设备。

  (16)set (设置标记)

  格式:set number flag state

  更改编号所指定的分区的标记。哪些标记可用是由你的分区表决定的。标记有两种状态,要么是on(生效),要么是off(失效)。

  'boot' (用于Mac, MS-DOS, PC98分区表) - 如果你想从某个分区引导,那么你应该将这个分区的boot标记设置为on。对于MS-DOS分区表,一个硬盘上只能有一个分区是可引导的。如果你将 LILO装到某个分区上,那么这个分区一定是可引导的(也就是说你应该将安装了LILO的分区的boot标记设为on)。对于PC98分区表,所有 ext3分区都必须是设置为可引导的。(Parted会对此强行操作)

  'lba' (用于MS-DOS分区表)-这个标记可以告诉MS DOS、MS Windows 9x和 MS Windows ME等系统使用LBA(Logic Block Addressing)模式。

  'root' (用于Mac分区表) - 如果某分区是Linux系统的根分区,那么就要对该分区启用这个标记。

  'swap' (用于Mac分区表) - 如果某分区是Linux系统的交换分区,那么就要对该分区启用这个标记。

  'hidden' (用于MS-DOS, PC98分区表) - 启用这个标记能使一个分区'隐藏'起来。(仅对微软的操作系统有效)

  'raid' (用于MS-DOS分区表)-启用这个标记能够告诉Linux系统这是一个软RAID磁盘阵。

  'LVM'(用于MS-DOS分区表)-启用这个标记能够告诉Linux系统这是一个LVM逻辑。

  使用print命令能够将所有能用的标记显示出来。

  例:

  (parted) set 1 boot on

  将编号为1的分区的boot标记设定为on(生效)

  (17)unit (设置单位)

  格式:unit unit

  为Parted选择一个表示磁盘大小的单位。之后,凡是关于磁盘的位置(如分区的开始位置等等)的数字都是使用这个单位,你就可以不用给出单位后缀。(如:如果你选择了MB作为单位,那么512就代表512MB,你就不用额外打多个MB之类的东西)你可以使用下列单位:

  's' :扇区 (通常一个扇区的大小是512个字节)

  'B' byte

  'kB' kilobyte (1000 bytes)

  'MB' megabyte (1000000 bytes)

  'GB' gigabyte (1000000000 bytes)

  'TB' terabyte (1000000000000 bytes)

  '%' 表示占整个磁盘设备的百分之多少(显而易见,这个数字必须在0和100之间)

  'cyl' 柱面(这个具体的位置和BIOS的CHS地址有关)

  'chs' 柱面(cylinders),磁头(heads),扇区(sectors)的地址(这个具体的位置和BIOS的CHS地址有关)

  'compact' 这是一个比较奇怪的单位。输入时是使用MB作为单位,输出时的单位有可能不同,但是它确保输出时的单位能使用户一眼就看得出来磁盘的大小的,而不用心里默默地进行复杂的换算。(例如。它会使用1GB而不是使用1024MB,使用2MB而不是2048KB)

  一般来说,Parted只会使用默认的单位进行输出,除非输入的时候你没有给出数字的后缀。你可以在输入的数字后面加上一个单位来代替默认的单位(单位和数字之间是没有空格的)。不过若你使用CHS地址作为单位时,你就不需要给定后缀。使用chs地址的格式是:"柱面:磁头:扇区"。对你所给出的数字地址,Parted可能进行一些调整。例如,当你使用GB作为单位时,分区位置可能会有+-500M的误差。不过Parted总会尽量地使误差尽量地小。当然,你可以使用单位s(也就是扇区)来指定一个精确的位置。若无法做到精确,Parted会让你给出一个最接近的解决方案。另外,若你给出的数字为负数,那么就表示从磁盘的末尾开始计算。如"-1s"就表示硬盘最后一个扇区,就是硬盘的最末尾处。

  例:

  (parted) unit compact

  (parted) print

  Disk geometry for /dev/hda: 0kB - 123GB

  Disk label type: msdos

  Number Start End Size Type File system Flags

  1 32kB 1078MB 1077MB primary reiserfs boot

  2 1078MB 2155MB 1078MB primary linux-swap

  3 2155MB 123GB 121GB extended

  5 2155MB 7452MB 5297MB logical reiserfs

  (parted) unit chs print

  Disk geometry for /dev/hda: 0,0,0 - 14946,225,62

  BIOS cylinder,head,sector geometry: 14946,255,63. Each cylinder

  is 8225kB.

  Disk label type: msdos

  Number Start End Type File system Flags

  1 0,1,0 130,254,62 primary reiserfs boot

  2 131,0,0 261,254,62 primary linux-swap

  3 262,0,0 14945,254,62 extended

  5 262,2,0 905,254,62 logical reiserfs

  (parted) unit mb print

  Disk geometry for /dev/hda: 0MB - 122942MB

  Disk label type: msdos

  Number Start End Size Type File system Flags

  1 0MB 1078MB 1077MB primary reiserfs boot

  2 1078MB 2155MB 1078MB primary linux-swap

  3 2155MB 122935MB 120780MB extended

  5 2155MB 7452MB 5297MB logical reiserfs



--------转载













谪居黄城中,把盏临风,牵黄擎苍叹英雄。昔日汴河风光处,履履难重。成败任西东,此恨无穷,为了豪情谁与同?一蓑烟雨平生任,踏雪飞鸿。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多