查看Linux支持的文件系统
cat /proc/filesystems
这个列举出来的并不就是全部
能够
支持的全部
文件系统类型。
VFS
基本涵盖了全部的文件系统,只是支持的程度问题。不过是代码级别的
支持
,编译之后,可能会删减一些,所以这个看到的就是删减之后能支持的了。想要支持更多,那就得重新加载一下。
还有一点,就是显示的很多文件系统,并不就是真的文件系统,可能是虚拟的文件系统。
关于这点,随着使用的深入,会有更深入的了解的。
mkfs -t type dev
看名称大概就能够理解了吧
command | description |
---|---|
mkfs |
格式化命令,创建文件系统make filesystem |
-t |
指定文件系统类型 |
type |
具体的文件系统类型 比如: ext2 ,ext3 |
dev |
设备文件,一般是分区 千万别对整个磁盘直接进行格式化 |
顺序解读一下,更深入理解格式化的操作。
首先是文件 系统标签
,其实就是卷标,对于Windows而言,就是cdef
盘啦,我们一般可以重命名的吧。
卷标就是这个重命名,相对的cdef
盘已经成了sda5678
了。
之前所说的分块
,多个扇区sector
划做一个块。
前面说整体比例是一定的,但是具体比例不确定,关于这点,其实我们可以手动调整,后续说明。
可以看到块大小是4096
,一个扇区512
的话,这一个块就占据了8个扇区。
接下里看到一个5%
,这些块呢,你是用不上的。这是预留给管理员用的。
当你磁盘用完以后,管理啦,修复啥的也需要预留一些空间,这就是给管理员做这个用的。
一般来说,预留的都是5%
,不过有时候太大太多了反而不好,后面可以进行修改。
inode
和block
接下来就是块个inode
了,你可以看到这些在最初就已经创建好了的。
至于比例呢,一般说是4k
一个inode
,不过这个随便啦,目前不影响。
嗯,块要分组,之前说过了,看来这就是文件系统了,只不过数据组织方式不一样,结构还是一样的。
超级块也有哦,可以看到并不是全部组都有,具体备份哪些位置也有显示。
前面说过,可以回顾一下。
ext3
当创建新的文件系统时,原来的数据块就会被重新分配,数据就会被清除了。
所以之前认为格式化就是清空磁盘,就是合格原因。
嗯,多了一个journal
,这就是日志文件系统的区别了。
为什么要有journal
呢?
想象一下,数据写到一半了断电了该怎么办。
接下来就是修复了,要么把已经写好的半截数据给删除掉,要么就和断电续传一样继续写入。
问题来了,断点在哪呢?
ext2
中,要找寻断点,只能够全盘进行扫描,找到那些信息不全的块,然后进行后续操作。
说道全盘扫面,bitmap
出来就是防止全盘扫描的,全盘扫描真的太浪费时间和资源了。
journal
日志于是就出来了,相较于原来磁盘划分的数据区和元数据区,增加了一个日志区。
每次的写入,先往日志区中写入,写入完毕之后,然后才挪到元数据区和数据区。
如果断电了,还在日志区,都不用区找,直接就锁定了,接下来做什么就简单了。
我们分区的时候也一样,操作vim
也一样,往缓冲区写就避免了重复的硬件修改了。
不过,当重复的
IO
操作,而且不出错的话,这样也浪费。反正各有优劣,不能 吹毛求疵。
mkfs
which mkfs
# 查看使用的命令的位置
# /usr/sbin/mkfs
# 列举一下
ll /usr/sbin/mkfs*
可以看到好多后缀的mkfs
,其实我们的-t
指定了类型,就是分别调用这些命令的。
mkfs.ext2
ext3
-j
就是ext3
了,毕竟除了journal
没啥太大区别。选项
option description -j
日志文件系统 -b
指定块大小 -L
指定卷标 -m
指定预留空间 -i
指定多少空间创建一个 inode
-N
指定 inode
个数-F
强制执行
如果正在使用一般是不允许格式化的,不过可以强制执行嗯,卷标,日志,块大小,预留百分比,
inode
对应大小,都对上了,没问题。更多的可以自己
man
一下。
mke2fs
如果man
了,你会发现man mke2fs
和man mkfs.ext2
是一样的。
也就是说,两个命令使用方式是一样的。
所以呢,你就替换着用吧,没啥问题。
两个一样的,我仔细
ll
了一下,发现不是符号链接,然后ll -i
看了一下
inode
是一样的,确认是同一个文件,难怪用法一样,这下骗不到我了吧。
blkid
blkid /dev/sda5
卷标,类型,UUID
都会显示。
之前说过,识别是没有固定顺序的,当同样的卷标显示时,更不能锁定硬盘。
唯一能做区分你的,就是
UUID
,这将唯一标识一块硬盘,即使sda
变成了sdb
,UUID
不变。更多选项就自己
man blkid
了。如果空参的话,就会显示所有的块设备
e2label
一看就知道和卷标相关
e2label /dev/sda5
也可以用来修改卷标
空参的用法是错误用法哦
tune2fs
options | description |
---|---|
-j |
调整为日志文件系统,从ext2 变为ext3 这个不属于重新格式化,数据不丢失,无损升级 |
-L |
显示或调整卷标 |
-m |
调整预留百分比 |
-r |
调整预留块数 |
-o |
挂载选项 |
-c |
挂载次数自检 |
-i |
挂载天数自检 |
-l |
显示超级块信息 相当于 GDT 的内容 |
tune2fs -l /dev/sda5
说实话,在块结构的时候说这个效果会更好,不过和格式化相关,现在也不迟。
现在对块是不是更了解了呢,不论是分块,格式化,文件系统,都是一个事物的角度不一。
慢慢分析,总能有体会。
dumpe2fs
dumpe2fs /dev/sda5
关于每个块的信息就更多了,超级块的话最初几个能够看见,但是并不是所有块都会有。
dumpe2fs -h /dev/sda5
-h
只显示超级块信息,这个就方便多了。
不过更多信息也只能man dumpe2fs
了解了,这里不多说了。
fsck
options | description |
---|---|
-t |
指定文件系统类型 |
-a |
自动修复 |
e2fsck
options | description |
---|---|
-f |
强制检查 |
-p |
自动修复 |
加上
e2
的一般都是针对ext2/ext3
的,从好多命令能够看出来。关于修复,现在也不不能做啥,也不知道具体含义,后续再补充吧。
关于磁盘的硬件结构,到接下来的分区,格式化都已经完毕了。
接下来就是挂载了,当挂载以后,正式使用,关于磁盘的使用就结束了。
到时候真正能够说是了解磁盘, 运用?这只是基础知识啊,路还很长,哎~~~。
看一下闯关进度
嗯,快了,加油。