在大文件系统下, 单一inode表将会变得非常臃肿, 难以管理, 因此 ext2采用多个区块群组(group block), 每个区块群组均具有其 superblock, inode, block data block 在进行文件系统创建时, 创建的记录文件的单位 在ext2文件系统下支持的block大小有1k,2k,4k三种 因block大小而产生的ext2文件系统限制如下表 block大小 1k 2k
Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。 ext3 基于ext2 的代码,它的磁盘格式和 ext2 的相同;这意味着,一个干净卸装的 ext3 文件系统可以作为 ext2 文件系统重新挂装。 Ext3文件系统仍然能被加载成ext2文件系统来使用,你可以把一个文件系统在ext3和ext2自由切换。这时在ext2文件系统上的ext3日志文件仍然存在,只是ext2不能认出日志而已。 将ext2文件系统转换为ext3文件系统 将linux系统的文件系统由ext2转至ext3,有以下几处优点:第一系统的可用性增强了,第二数据集成度提高,第三启动速度提高了,第四ext2与ext3文件系统之间相互转换容易 这样,原来的ext2文件系统就转换成了ext3文件系统。注意将ext2文件系统转换为ext3文件系统时,不必要将分区缷载下来转换。
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
于是没过多久,Ext2文件系统就替换了该文件系统,并与1997年应用在了RedHat的发行版中。 现在,Ext系列的文件系统都已经发展到第四代了,也就是Ext4文件系统。 Ext2概述 Ext2文件系统将磁盘划分为大小相等的逻辑块进行管理,其默认大小是4KB(不做特殊说明,本文后续内容都采用该默认值)。文件系统逻辑块的大小在格式化的时候可以指定的。 块组是Ext2文件系统的管理单元,块组中又包含若干管理数据(元数据)实现对块组中的逻辑块的管理,比如那些逻辑块是什么功能,那些逻辑块已经被使用等等。 图2 超市货架图 如图3是Ext2文件系统的磁盘布局图。如中间蓝色为磁盘的逻辑空间,它被划分为若干个块组。每个块组的大小相等。 为了保证整个文件系统的完整性,例如突然断电或者系统崩溃等场景,文件系统出现元数据损坏的情况,Ext2文件系统对超级块进行了备份。
本文以ext2文件系统为例来剖析一个真实的文件系统如何查找文件,这对于深入理解文件系统至关重要。 100 记录了100+0 的读入 记录了100+0 的写出 102400 bytes (102 kB, 100 KiB) copied, 0.00125457 s, 81.6 MB/s 2)格式化为ext2 我们可以看的创建的文件系统的总体信息: Filesystem magic number:0xEF53 表示为ext2文件系统 Inode count: 16 表示文件系统 下面我们详细来看ext2文件系统如何查找指定的文件的? 文件系统磁盘inode结构,可知i_block为磁盘inode结构的偏移40B处,内容即为0x07(ext2通过i_block来查找文件在磁盘中的位置)。
Linux文件系统Ext2和Ext3现在已经过时了。 现在是将旧文件系统转换为最新的文件系统EXT4。 Ext4文件系统比以前的版本更快,更可靠。 如何将ext2或ext3分区迁移到ext4 首先备份您的所有数据,然后按照给定的步骤。 首先,检查你的内核。 运行uname -r命令来知道你正在使用的内核。 例: root@server1:/# uname -r 3.16.0-4-amd64 从Ubuntu Live CD启动 3将文件系统转换为ext4 运行以下命令将ext2转换为ext4: sudo bash nano /mnt/etc/fstab 搜索以前的文件系统参考(ext2或ext3)并将其编辑为ext4。 保存对文件所做的更改并退出。 它适用于ext2或ext3或ext4文件系统。 要修复Linux ext2或ext3或ext4文件系统,请以root用户身份运行以下命令。
此书已经开源,阅读地址 http://www.kerneltravel.net 一、Ext2 文件系统 (一)、文件系统布局 ? 启动块之后才是 ext2文件系统的开始, ext2文件系统将整个分区划成若干个同样大小的块组( Block Group),每个块组都由以下部分组成。 Ext2 文件系统加上日志支持的下一个版本是 ext3 文件系统,它和 ext2 文件系统在硬盘布局上是一样的,其差别仅仅是 ext3 文件系统在硬盘上多出了一个特殊的 inode(可以理解为一个特殊文件 二、VFS 虚拟文件系统 Linux支持各种各样的文件系统格式,如 ext2、 ext3、 reiserfs、 FAT、 NTFS、 iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式 对于 ext2文件系统来说,在磁盘存储布局上也有 inode和超级块的概念,所以很容易和 VFS中的概念建立对应关系。
[root@btg linux-2.6]# vim [1]+ Stopped vim [root@btg linux-2.6]# vim fs/ext2/super.c [2]+ Stopped vim fs/ext2/super.c [root@btg linux-2.6]# vim fs/ext2/inode.c [3]+ Stopped vim fs/ext2/inode.c [root@btg linux-2.6]# [root@btg linux-2.6]# jobs [1] Stopped vim [2]- Stopped vim fs/ext2/super.c [3]+ Stopped vim fs/ext2/inode.c [root@btg linux-2.6]# 上面是建立了三个任务,并且都ctrl+z给stop掉了,然后用jobs查看,一共有三个 0.0 0.0 6920 1516 pts/3 S+ May25 0:00 bash root 17459 0.0 0.1 14424 3696 pts/1 T 14:02 0:00 vim fs/ext2
安装完成后,勾选Start Ext2 Volume Manager right now to assign driver letters for your ext2/ext3 partitions? ,即启动Ext2 Volume Manager工具进行设置,单击Finish 9) Ext2Fsd主界面 ? 在右下角ext2的小图标上右键,选择配置文件系统驱动 2) 配置文件系统驱动 ? 在Ext3文件系统分区上单击右键选择配置Ext2卷属性 6) 配置Ext2卷属性 ? 提示配置Ext2卷属性成功 9) 刷新 ? 10) 查看 ? 可以查看到Ext3文件系统的盘符已经设置为H盘了 3. 测试 1) 新建一个文件 ? 2) 修改其文件名 ?
,'2',19.8799991607666); INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-1,11 ,'n_11',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6 _1000',NULL,'2021-10-28 16:23:30.000',NULL,NULL,NULL,NULL,NULL); INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2 10-28',NULL,'2021-10-28 16:22:41.000',177.3330,'你好啊~','0',NULL); INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2 " INT CS_INT NOT NULL, "NUM" INT CS_INT, "NAME" NVARCHAR(20) CS_STRING, "EXT1" DAYDATE CS_DAYDATE, "EXT2
第一步: vi /etc/fstab 找到对应于/home和/www的行,例如: /dev/sda5 /home ext2 defaults 1 2 /dev/sda7 /www ext2 defaults 1 2 在/home里实现用户级的磁盘配额,所以对sda5行的挂装选项域做如下修改: /dev/sda5 /home ext2 defaults,usrquota 1 2 注意,是usrquota哦。 类似的,我们可以如下修改/www行: /dev/sda7 /www ext2 defaults,grpquota 1 2 如编辑根用户 改/etc/fstab文件中: LABEL=/ / ext2 defaults
在本指南中,我们将说明七种方法来识别Linux文件系统类型,例如Ext2,Ext3,Ext4,BtrFS,GlusterFS等。 506M 2% /boot/efi tmpfs tmpfs 1.6G 120K 1.6G 1% /run/user/1000 在Linux中查找文件系统类型的7种方法(ext2 –打印Linux文件系统类型 3.使用lsblk命令 lsblk显示块设备,与该-f选项一起使用时,它还会在分区上打印文件系统类型: $ lsblk -f 在Linux中查找文件系统类型的7种方法(ext2 在不带任何参数的情况下运行时,它将打印有关磁盘分区的信息,包括以下文件系统类型: $ mount | grep "^/dev" 在Linux中查找文件系统类型的7种方法(ext2,ext3或ext4) .使用fstab文件 所述的/ etc / fstab的是静态的文件系统信息(诸如安装点文件系统类型,安装选项等)文件中: $ cat /etc/fstab 在Linux中查找文件系统类型的7种方法(ext2
在磁盘分区上创建ext2、ext3、ext4、ms-dos、vfat、xfs文件系统,默认情况下会创建ext2。mkfs用于在设备上构建Linux文件系统,通常是硬盘分区。 type>] [fs-options] <device> [<size>] Options: -t, --type=<type> filesystem type; when unspecified, ext2 其中,Linux 的预设值为 ext2 # mkfs mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs 5.3.1 扩展知识1 Ext2 :Linux的第一个文件系统是MINIX文件系统。 Ext2是Ext的后继者 。 Ext2不是日记文件系统。 Ext3 :这是Ext2的后继产品,可以看作是带有日志记录的Ext2,它可以保护文件系统免受崩溃和突然断电导致的数据损坏。
decimal(9,0) DEFAULT NULL, `MEMO` varchar(1000) DEFAULT NULL, `EXT1` varchar(255) DEFAULT NULL, `EXT2 -------+------+------+---------------------+ | RK | QTY | MEMO | EXT1 | EXT2 EXT2" = NULL,x."ORDERTIME" = TO_DATE('2022-01-04 20:02:11','YYYY-MM-DD HH24:MI:SS') WHERE x." EXT2" IS NULL AND x." EXT2" is NULL AND x."ORDERTIME" = :b5 AND ROWNUM = 1>).
ext2文件系统 ext2文件系统全称是second extended file system。最大的文件大小是2T.最大文件系统的大小上限是32TB.目录允许的最大的子目录数为32000个。 ext2的限制相对较多,对于现在很多应用来说ext2并非是首选。 ext2文件系统中的目录项是由struct ext2_dir_entry_2呈现,目录项中存储inode和对应文件或者目录名称,结构如下图所示 // 文件名称或者目录名称的最大长度,在内核中已经限定了 和ext2文件系统不同的是多出了journaling日志的功能 ext3的journal能够保证文件系统的一致性和恢复时间。 ext2中在目录项中查找文件时间的复杂度是O(n),ext3中采用了h-trees查找效率提高了很多。
/dev/loop0 rw,seclabel 501 463 7:1 / /mntP rw,relatime - ext2 /dev/loop1 rw,seclabel 502 463 7:0 / / /dev/loop0 rw,seclabel 501 463 7:1 / /mntP rw,relatime - ext2 /dev/loop1 rw,seclabel 502 463 7:0 / / mntS-B rw,relatime shared:162 - ext2 /dev/loop0 rw,seclabel 503 500 7:2 / /mntS/mntS-sub rw,relatime shared:254 - ext2 /dev/loop2 rw,seclabel 506 502 7:2 / /mntS-B/mntS-sub rw,relatime shared:254 - ext2 :254 - ext2 /dev/loop2 rw,seclabel 505 283 7:2 / /mntS-B/mntS-sub rw,relatime shared:254 - ext2 /dev/
(详情请自行 man mke2fs) mke2fs 命令常用的选项如下所示: -t : 用来指定文件系统的类型,可以是 ext2 , ext3 ,也可以是 ext4 。 F : 强制创建文件系统(一般针对已挂载) - E : 用户指定额外文件系统属性 下面进行一些常用操作: (实验环境 Centos 6.5) 在分区上创建 ext2 由下图可以发现如果不用 -t 指定文件系统类型的话,默认为 ext2 并且 BLOCK SIZE 为 1024 。 ? tune2fs : 调整文件系统的相关属性 -j : 不损害原有数据,将ext2 升级为 ext3 (注意不能将 ext3 降为 ext2 ) -L LABEL : 设定或修改卷标 fsck : 检查并修复 linux 文件系统类型 -t : FILESYSTEM -a : 自动修复(不询问自动完成修复) e2fsck : 专门修复 ext2 ext3
注:本文主要讲解文件系统挂载核心逻辑,暂不涉及挂载命名空间和绑定挂载等内容(后面的内容可能会涉及),且以ext2磁盘文件系统为例讲解挂载。 如ext2,ext4,xfs 2)内存文件系统 文件在内存上,掉电丢失。 每当进程访问一个目录项就会在内存中创建目录项对象(如ext2路径名查找中,通过查找父目录数据块的目录项,找到对应文件/目录的名称,获得inode号来找到对应inode)。 为NULL) ->fc->fs_type->mount -> ext2_mount //fs/ext2/super.c 调用到具体文件系统的挂载方法 来看下ext2对挂载的处理: 启动阶段初始化 下面给出ext2_fill_super之后ext2相关图解: ?
有2种方式: ⑴ 新建ext3文件系统 ⑵ 从ext2升级 下面来看看: ⑴ 新建ext3文件系统 使用mkfs命令: mkfs -t ext3 device mkfs.ext3 [options 指定ext3的日志功能细节 -R raid_options 指定与磁盘阵列有关的参数 ① /dev/hda8文件系统是ext2 。 将ext2文件系统升级成为ext3时,必须注意2件事: ⑴ 别忘记修改/etc/fstab的设置。 将ext2文件系统升级成为ext3后,一定要去修改/etc/fstab文件系统的类型字段,否则,下次开机时,RHEL仍会把文件系统当做ext2文件系统挂载,这样无法享有ext3提供的好处。 安装RHEL时,如果根文件系统为ext2,则安装程序产生的初始化内存磁盘中,不会提供ext3的模块。这会导致RHEL启动时,因无法顺利挂载ext3的根文件系统而使开机失败。
扫码关注腾讯云开发者
领取腾讯云代金券