学科分类
目录
Linux编程

fdisk/mks

Linux系统中提供了用于创建和管理磁盘分区的命令fdisk以及创建文件系统的命令mkfs,下面分别对这两个命令进行讲解。

1、 fdisk

fdisk命令可以查看当前系统中的磁盘,以及磁盘中的分区情况,也可以用于磁盘分区。其命令格式如下:

fdisk [选项] [参数]

当使用fdisk命令查看磁盘使用情况时,常用的选项为-l,该选项可以列出指定设备的分区表状况;该命令的参数一般为设备文件,若参数被省略,则打印系统中所有磁盘的使用状况。使用命令“fdisk -l”后输出的信息如下:

[root@localhost itheima]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00048bf4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2358    18631680   83  Linux
/dev/sda3            2358        2611     2031616   82  Linux swap / Solaris

观察打印的信息:命令执行后,该信息被空行分割成两部分,其中第一部分为该磁盘实体的描述信息,第二部分为磁盘的分区情况,以及各个分区的信息。

第一部分的第一行信息中,/dev/sda代表磁盘名,21.5GB代表磁盘的容量(该数字不一定精确),21474836480bytes同样代表磁盘的大小,单位为字节;第二行信息表示该磁盘有255个磁头、每个磁道上有63个扇区、磁盘中共有2610个柱面;第三行信息表示一个柱面上扇区的数量:磁盘中所有的磁头应在同一个柱面,每个磁道上有63个扇区,因此一个柱面上扇区的总数=磁头数×每个磁道上的扇区数;第四行信息代表扇区的逻辑大小和物理大小(都是512字节);第五行信息代表最小和最佳的I/O尺寸(都为512字节);最后一行代表磁盘标识符。

第二部分每一行表示一个分区的信息,各包含设备名,分区起始柱面、分区结束柱面、分区总块数等信息。

根据以上的信息可以大致掌握系统中磁盘的情况,另外亦可将“-u”与“-l”搭配使用,此时第二部分的开始与结束的显示单位将会被更换为扇区。

fdisk也是Linux系统中用于分区的工具,使用该命令可以为设备进行分区。在将设备添加或连接到主机时,可以先使用fdisk命令查看系统中的磁盘。假设新增的设备是一块新磁盘,其在系统中的名称为/dev/hd,使用fdisk命令后,除初始的磁盘/dev/sda,还能看到/dev/hd的大致信息,只是该磁盘第二部分信息只有一行。确认磁盘已被系统识别后,可为该磁盘分区。

fdisk使用传统的问答式界面,用户在分区时需要通过键盘来选择要执行的内容,其中常用的按键如表1所示。

表1 fdisk命令常用按键

参数 说明
p 打印分区信息
n 创建一个新的分区
d 删除一个分区
w 将分区信息写入分区表,保存并退出
q 退出但不保存

主机默认磁盘的分区可以在安装时确定,此处读者只需掌握对fdisk命令的基本用法有所了解即可。若有需要,读者可自行对fdisk的分区功能进行实践。

1、 mkfs

为了让操作系统识别磁盘,并知道如何控制数据的存取,我们需要为已完成分区的磁盘创建一个文件系统。所谓创建这个文件系统,并非在分区中安装一个实现文件系统功能的工具,而是定义一组符合文件系统存取方式的规则。Linux中通过高级格式化来创建文件系统。

高级格式化又称逻辑格式化,它是指根据用户选定的文件系统,在磁盘的特定区域写入特定数据,以达到初始化磁盘或磁盘分区、清除原磁盘或磁盘分区中所有文件的一个操作。高级格式化会对主引导记录中分区表相应区域进行重写,并将分区空间划分两部分,一部分用于存储数据,另一部分用于存储与分区文件管理相关数据。

Linux系统中提供了mkf2es命令,来为磁盘分区创建ext2、ext3文件系统,该命令的格式如下:

mke2fs [选项] [参数]

mke2fs命令常用的选项如表2所示。

表2 mke2fs命令的常用选项

参数 说明
-b<区块大小> 指定区块大小,单位为字节
-c 检查是否有损坏的区块
-f<不连续区段大小> 指定不连续区段的大小,单位为字节
-F 忽视设备,强制执行mke2fs
-N 指定inode的数目
-S 仅写入superblock与GDT

该命令的参数一般为要格式化的设备文件或文件系统磁盘块的数量。若要使用该命令将Linux系统中的分区/dev/sda5格式化为ext2格式,可使用如下命令:

mke2fs ext2 /dev/sda5

Linux系统中还有个类似的命令——mkfs。该命令也可将磁盘分区格式化为指定格式,其常用选项为-t,之后的参数为文件系统类型,使用该选项可以指定要建立的文件系统种类。若要将Linux系统中的分区/dev/sda5格式化为ext2格式,可使用如下命令:

mkfs –t ext2 /dev/sda5

文件系统中存储数据的最小单位是块(Block),块的大小在格式化时确定,使用mke2fs命令格式化的分区中,块的大小一般为1kb、2kb或4kb,可使用参数-b指定。

其实使用过电子设备的大多数读者都应该接触过高级格式化:当设备提示存储空间不足时,若设备中没有存储重要文件,有些用户会选择对设备进行格式化,这个格式化就是高级格式化。

与高级格式化相对的,是低级格式化。我们使用的电子设备一般是不提供低级格式化功能的,因为低级格式化后的磁盘中只存在柱面、磁道、扇区以及扇区细节的划分,这样的设备无法直接被使用。但低级格式化是高级格式化之前需要进行的一项操作。

多学一招:du/df

du和df是Linux系统与磁盘使用情况相关的命令,下面对这两个分别做出讲解。

① du

du即disk usage,意为磁盘使用情况,该命令可以计算文件或目录占用的磁盘空间。其命令格式如下:

du [选项] [参数]

du的参数一般为目录或文件,选项可以对显示信息进行控制。当选项与参数都缺省时,该命令会逐级进入当前工作目录与其所有子目录,检测目录占用的磁盘块数,并在最后显示工作目录占用的总块数。du命令常用的选项如表2所示。

表2 du命令的常用选项

参数 说明
-a 显示所有目录以及目录中每个文件所占用的磁盘空间
-s 只显示目录及文件占用磁盘块的总和
-b/-k/-m/-g 以b/kb/mb/Gb为单位,显示目标占用磁盘块的总和
-x 以最初处理时的文件系统为准,跳过不同文件系统上的文件
-D 显示指定符号链接的源文件大小

du命令后可跟多个参数,若参数皆为文件,执行命令后系统会逐条显示每个参数占用空间的大小;若参数中有目录,系统会计算目录中每个文件占用的磁盘块数并逐条输出,指定参数的统计信息会在最后输出。

案例1:使用du命令统计文件所占的磁盘块数。

使用的命令和打印的信息分别如下:

[itheima@localhost ~]$du -a
487520 .
4  dir
4  itheima

du打印的结果通常只有两项,第一项为磁盘块数,第二项为目录的路径名。

② df

df命令用于查看与磁盘空间相关的信息,其命令格式如下:

df [选项] [参数]

df的参数可以是文件,但打印的信息会是该文件所在文件系统磁盘的使用情况。在命令行输入命令df,会打印如下所示的信息:

Filesystem   1K-blocks  Used Available Use% Mounted on
/dev/sda2    18208184 3761136 13515464 22% /
tmpfs       502068   228  501840  1% /dev/shm
/dev/sda1     289293  34635  239298 13% /boot

打印的信息共有六项,分别为:文件系统、总容量(单位为k)、已用容量、可用容量、已用容量百分比、挂载目录。其中与容量相关的项默认显示单位为千字节;挂载目录即文件系统在目录树上的入口,挂载是文件系统中一个重要概念,将会在之后的小节中讲解。

点击此处
隐藏目录