创建文件系统也称之为磁盘分区格式化。
磁盘:也称之为硬盘,由盘片,机械臂,磁头,马达组成。马达带动盘片旋转,,由机械臂上的磁头在盘片上读写数据。
磁盘盘片的组成:
1.扇区:(sector)为最小物理存储单位,每个扇区为512字节
2.柱面:(cylinder)是分区(partition)的最小单位
3.磁盘的第一个扇区通常存放MBR(开机主引导记录,Master boot record)及磁盘分区表(partition table),其中MBR占用446字节,而磁盘分区表占64字节,最后2个字节为启动标记。
每16个字节标示一个分区,在linux系统上最多能分四个主分区,或者三个主分区和一个扩展分区,在扩展分区中可以划分多个逻辑分区。注意:一个硬盘只能有一个扩展分区!
使用fdisk -l: 查看所有磁盘信息,后跟设备路径查看某个磁盘的信息:
使用fdisk 后跟磁盘路径会出现交互式选项:
使用m是获得帮助:
使用d是删除一个分区:加入我删除第三个分区:
使用q是不保存退出:
退出后,我们发现删除操作没有生效。再看看其他选项:
选项n是新建一个分区,我们这里已经有三个主分区了,因此我把第四个分区设为扩展分区,以便我在其内部创建逻辑分区,由于linux操作系统上只能创建四个主分区,所以,最后两项柱面的选项我都选择了默认。如果我们不按回车选默认,就会有一段磁盘空间无法分配使用,这样就会浪费磁盘空间。
使用选项p显示当前分区信息:
然后我们就来创建逻辑分区:
选项l:各分区类型所对应的system id:
使用选项t,可以修改某指定分区的system id:
我现在将创建好的分区进行保存退出(w),并用fdisk -l查看:
这样分区就创建好了,但这时候内核并未对新创建的分区进行识别,打开/proc/partitions进行查看:
使用partx -a 后跟磁盘名称,先试一试:
我为何之前要说试一试,有时候使用上述方法不一定能让内核识别,如果内核无法识别,就使用:partx -a [分区] [设备磁盘名称]。
如果内核无法对所创建的分区进行识别,就无法对其进行控制。而只有内核对分区进行控制之后,分区才能够被格式化。
partx还有一个用法:partx -d [--nr 分区] [设备磁盘名称]
下面我们看看分区格式化:
格式化分区,也称作创建文件系统:
创建文件系统的命令有很多,但是mkfs是通用命令,对非ext系列文件系统均可创建。不过,要使用mkfs创建文件系统需要两个前提:
1.文件系统必须被内核支持才能使用,即内核中有相应的内核模块,或已经将之整合进入内核。
2.要有相应的文件系统创建工具,通常是mkfs.fstype
上图是我的虚拟机中的linux所拥有的文件系统创建工具,我们先看看已经创建好的分区的文件系统类型,使用blkid命令查看:
我们已经看到前两个分区是ext4类型,第三个分区是swap类型,而第四,第五个分区都还没有创建文件系统,但是第四个分区它是扩展分区,
扩展分区上是不能够直接创建文件系统的,而只能在其内部的逻辑分区上创建,也就是在第五个分区上创建:
以上我使用mke2fs -t ext4 /dev/sda5对分区5进行了文件系统的创建,我们再来查看一下:
对于ext系列的文件系统的创建方式有一下几种:
mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4
mkfs -t ext3 = mkfs.ext3 = mke2fs -t ext3 = mke2fs -j
mkfs -t ext2 = mkfs.ext2 = mke2fs -t ext2 mke2fs
mkfs 是针对所有文件系统的创建命令,而mke2fs 只是针对ext系列文件系统的创建命令。mke2fs 有一个配置文件/etc/mke2fs.conf 用于设定 mke2fs 的默认特性,以及文件系统的特有特性:
而这些特性都是可以在我们需要的时候加以更改的。另外,我们还可以使用一些选项对被格 式化的磁盘做一些设定:
以上我使用的那条命令是用来查看5号分区的块大小的,下面我来对5号分区的块大小重新设定:
我再用tune2fs -l 这条命令来验证一下:
同时,我们还可以调整给管理员使用的块在分区中的空间比例。
首先,我们先来看一下没有调整前的空间比例:
5号分区的块总个数是:2623506块,预留给管理员使用的块个数是:131175块。我们来用bc 计算器计算一下比例:
根据以上操作,我们可以得出结论:预留给管理员使用的块所占的比例,在没有事先设定的 情况下,通常不超过5%。我们可以通过以下操作对此设定进行调整:
上面的操作我执行了两条命令,第一条命令中我将比例调整到了3%,第二条命令是用来验证 第一条的执行效果。
在创建文件系统的过程中,还有些其它选项可以设定:
-L:设定卷标
-r:设定给管理员使用的块的个数
-E:设定文件系统的扩展属性
-o:设定挂载的默认选项
-O:设定文件系统的默认特性
以上这些选项都可以被 mke2fs 和 tune2fs 命令使用,唯独-b:块大小的设定,以及-t:文件 系统的类型只有 mke2fs 能够运用,而 tune2fs 是无法做到的。
另外,还有一个命令可以用来设定卷标:e2label
以上是本人对创建文件系统的总结,欢迎大家前来吐槽!