AI智能
改变未来

『学了就忘』Linux文件系统管理 — 61、使用parted命令进行分区

[toc]

1、

parted

命令介绍

我们Linux系统中有两种常见的分区表,MBR分区表(主引导记录分区表)和GPT分区表(GUID分区表,也叫全局唯一标识分区表),其中:

  • MBR分区表:支持的最大分区是2TB(
    1TB=1024GB

    )(超过2TB不识别多出来的空间);最多支持4个主分区,或3个主分区1个扩展分区。

  • GPT分区表:支持最大18EB的分区(
    1EB=1024PB=1024*1024TB

    );最多支持128个分区,其中1个系统保留分区,127个用户自定义分区。

我们前边所说的

fdisk

命令,只识别MBR分区表。如果需要对GPT分区表进行分区,需要使用

parted

命令。

注意:

parted

命令也有点小问题,就是命令自身分区的时候只能格式化成

ext2

文件系统,不支持

ext3

文件系统,那就更不用说

ext4

文件系统了(截止到

CentOS6.8

还是这样,这里只是指不能用

parted

命令把分区格式化成

ext4

文件系统,但是

parted

命令还是可以识别

ext4

文件系统的)。不过这没有太多的影响,因为我们可以先用

parted

命令分区格式化,再退出

parted

命令,用

mkfs

命令进行格式化成

ext4

文件系统。

parted

命令感觉还不是太成熟,命令看文档会用就可以了。

一个硬盘的分区表改变了,原来的分区就会全部消失,该硬盘在

/etc/fstab

文件中配置的自动挂载的配置要提前全部删除掉,否则下次启动系统的时候就会报错。

这里要注意一点:删除分区和建立分区是完全相反的流程。

  • 建立分区:先加入一个新硬盘,
    fdisk

    命令进行分区设置,

    mkfs

    命令对分区进行格式化,之后

    mount

    命令进行分区挂载,最后修改

    /etc/fstab

    文件进行分区自动挂载。

  • 删除分区:先取消掉
    /etc/fstab

    文件的分区自动挂载,在

    umount

    命令取消分区挂载,卸载没有格式化,之后把分区删除掉,然后在移除硬盘。

所以执行

parted

命令前一定要删除分区的自动挂载。(这个练习只进行新添加的硬盘用

parted

命令分区,对创建Linux系统初始的硬盘不用

parted

命令分区,所以只删除新增硬盘的自动挂载就可以。)

2、

parted

交互模式

执行命令:

[root@localhost ~]# parted /dev/sdb(不用写分区号)

命令结果如下,会开启一个交互模式,并告知你可以通过

help

查看命令列表。

# 用`parted`命令划分/dev/sdb 硬盘[root@localhost ~]# parted /dev/sdbGNU Parted 2.1使用 /dev/sdbWelcome to GNU Parted!Type\'help\'to view a list of commands.(parted)(等待输入交互命令的位置)

输入

help

。结果如下:

parted交互命令说明:

  • check NUMBER

    :做一次简单的文件系统检测。

  • cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER

    :复制文件系统到另外一个分区。

  • help [COMMAND]

    :显示所有的命令帮助。

  • mklabel,mktable LABEL-TYPE

    :创建新的磁盘卷标(分区表)。

  • mkfs NUMBER FS-TYPE

    :在分区上建立文件系统。

  • mkpart PART-TYPE [FS-TYPE] START END

    :创建一个分区。

  • mkpartfs PART-TYPE FS-TYPE START END

    :创建分区,并建立文件系统。

  • move NUMBER START END

    :移动分区。

  • name NUMBER NAVME

    :给分区命名。

  • print [devices|free|list,all|NUMBER]

    :显示分区表,活动设备,空闲空间,所有分区。

  • quit

    :退出。

  • rescue START END

    :修复丢失的分区。

  • resize NUMBER START END

    :修改分区大小。

  • rm NUMBER

    :删除分区。

  • select DEVICE

    :选择需要编辑的设备。

  • set NUMBER FLAG STATE

    :改变分区标记。

  • toggle [NUMBER [FLAG]]

    :切换分区表的状态。

  • unit UNIT

    :设置默认的单位。

  • Version

    :显示版本。

3、建立分区

(1)查看分区

命令:

print [devices|free|list,all|NUMBER]

:使用

print

命令可以查看分区表信息,包括硬盘参数,硬盘大小,扇区大小,分区表类型和分区信息。

结果如下:

可以看到

sdb

硬盘大小是21.5GB,文件系统是

msdos

msdos

文件系统是Windows下的文件系统,在

parted

命令交互中就是表示MBR分区表)。

分区信息总共七列,分别是:

  • Number

    :分区号。

  • Start

    :分区起始位置,这里不再像

    fdisk

    用柱面表示,而是使用Byte更加直观。

  • End

    :分区结束位置。

  • Size

    :分区大小。

  • Type

    :分区类型。

  • File system

    :文件系统类型。我不是说

    parted

    不支持

    ext4

    文件系统吗?注意,我一直都是说

    parted

    不能直接把分区,直接格式化成

    ext4

    文件系统,但是它是可以识别的。

  • 标志:
    Flags

    ,就是分区的标记。

(2)修改成GPT分区表

把硬盘由MBR分区表,改成GPT分区表,使用的命令如下:

mklabel,mktable LABEL-TYPE

:创建新的磁盘卷标(分区表)。

(如果要由GPT分区表改成MBR分区表,命令为

mklabel msdos

修改了分区表,如果这块硬盘已经有分区了,那么原有分区和分区中的数据都会消失,而且需要重启系统才会生效。

我们在查看一下当前硬盘分区表情况,如下图所示:

可以看到分区表已经变成GPT分区表,并且之前硬盘的分区信息已经没有了。

注意:在说一下,一定要把

/etc/fstab

文件中和原有分区的内容删除掉(就是修改的硬盘的分区的自动挂载),才能重启动,要不系统启动就一定会报错的。

之后

quit

退出

parted

命令交互,执行

reboot

命令重启计算机。

重启完计算机才能执行之后的操作。(不重启后续操作是无法完成的)

(3)建立分区

因为修改过了分区表,所以

/dev/sdb

硬盘中的所有数据都消失了,所以我们可以重新对这块硬盘分区了。

执行

parted

命令,进入硬盘分区。

执行分区命令,对硬盘进行分区,命令如下:

mkpart PART-TYPE [FS-TYPE] START END

:创建一个分区。

注意:建立分区时,默认文件系统就只能建立成

ext2

了。

查看硬盘的分区情况,如下图所示:

已显示刚刚创建好的分区

disk1

。因为没有格式化,所以

File system:文件系统类型

是空着的。

不知道大家注意到了吗?

我们现在的

print

查看的分区,和第一次查看MBR分区表的分区时有些不一样了,少了

Type

这个字段,也就是分区类型的字段,多了

Name

分区名字段。分区类型是标识主分区、扩展分区和逻辑分区的,不过这种标识只在MBR分区表中使用,我们现在已经变成了GPT分区表了,所以就不再有

Type

类型了。也就说折磨我们很久的主分区、扩展分区和逻辑分区的概念不再用了(其实就是突破一个硬盘只有四个分区的限制)。

(4)建立文件系统(格式化)

分区分完了,我们还需要对分区进行格式化。不过我们已经知道如果使用

parted

交互命令格式化的话,只能格式化成

ext2

文件系统。我们这里是要演示下

parted

命令的格式化方法。

parted

交互命令的格式化命令为

mkfs

,命令如下:

mkfs NUMBER FS-TYPE

:在分区上建立文件系统。

再查看硬盘的分区情况,如下图所示:

退出,执行

quit

命令。

上图提示你,如果需要让分区自动挂载,需要手动修改

etc/fstab

文件。

如果要把硬盘格式化成

ext4

文件系统,需要执行

mkfs

命令,重新对硬盘进行格式化。(注意不是

parted

交互命令中的

mkfs

命令,而是系统命令

mkfs

)!

执行

[root@localhost ~]# mkfs -t ext4 /dev/sdb1

sdb1

分区格式化为

ext4

文件系统之后,就可以进行分区的挂载了。

如下图:

如果你需要开机自动挂载,手动修改

etc/fstab

文件即可。

(5)调整分区大小

parted

命令还有一大优势,就是可以调整分区的大小(Windows中也可以实现,不过需要转换成动态磁盘,要不就需要依赖第三方工具,如硬盘分区魔术师)。起始Linux中LVM和RAID是可以支持分区调整的,不过这两种方法也可以看成是动态磁盘方法。使用

parted

命令调整分区大小要更加简单。

注意:

parted

调整已经挂载使用的分区时,是不会影响分区中的数据的,也就是说数据不会丢失。但是一定要先卸载分区,再调整分区大小,否则数据是会出现问题的(有一定几率)。还有要调整大小的分区必须已经建立了文件系统(格式化),否则会报错。

  • 卸载硬盘分区
    sdb1
    [root@localhost ~]# umount /dev/sdb1
  • 使用
    parted

    命令调整分区大小,执行

    resize

    命令。

    resize NUMBER START END

    :修改分区大小。

    [root@localhost ~]# parted /dev/sdb(parted 命令不能加分区号)

    注意:使用

    parted

    命令调整分区大小,文件系统必须是

    ext2

    ,否则命令执行不了。我们上边把

    sdb1

    分区格式化成

    ext4

    ,是不行的。(这个知道就可以了,如果需要调整分区大小,用LVM调整就好。)

(6)删除分区

删除分区前提,要先把分区的自动挂载在

/etc/fstab

文件删除,然后用

umount

卸载掉分区的挂载。在执行

parted

命令的删除分区命令。

rm NUMBER

:删除分区。

还有件事要注意,

parted

中所有的操作都是立即生效,没有保存生效的概念。这点和

fdisk

交互命令明显不同,所以所做的所有操作大家要倍加小心。

那么到底使用

fdisk

命令进行分区,还是

parted

命令进行分区呢?这个完全看个人习惯,我更加习惯

fdisk

命令。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『学了就忘』Linux文件系统管理 — 61、使用parted命令进行分区