Ext4文件系统介绍 - 理论篇

ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS文件系统性能对比 本文总结了文件系统 benchmark 的结果,给出各大文件系统的性能表现与对比,包含 ext4、ntfs、xfs、btrfs、f2fs、reiserFS 和 zfs 等常见文件系统在内,并给出文件系统性能结果分析,推理出各系统的适用场景。.................. 阅读详情
AI摘要

EXT4文件系统采用blockgroups来组织数据,通过blockallocator策略减少碎片。特色包括flexibleblockgroups提高效率,sparse_super提供冗余安全,bigalloc优化大文件存储。inode管理和block分配策略进一步优化了性能和访问速度。

Overview

ext4文件系统分割成多个block groups,为了解决碎片化问题,block allocator尽量将一个文件的block放在一个group中。block groups的size通过sb.s_blocks_per_group指定,同样也可以通过8*block_size_in_bytes计算得到。block默认大小是4KB,每个group包含32768个blocks,一个block group所有的block data大小是8*4K*4K=128M。

ext4在磁盘上是little-endian order。然后 jbd2(the journal)是big-endian order.

Layout

如上图,磁盘分割成多个block Group,每个Block Group都有相似的结构(之所以有不同,是因为收到sparse_super/flex_bg等feature影响)。每个block group引用ext4 spec如下:

super block:记录文件系统的整体信息。dumpe2fs命令最开始的输出部分就是superblock的信息

Group Descriptors: 块组描述符,每个block group对一个一个描述信息,由ext4_group_desc数据结构表示,其中描述块block bitmap的block号,inode bitmap的block号,空闲的block数目,空闲的inode数目等信息。dumpe2fs打印如下:

Data Block Bitmap: 数据块位图,记录数据块(data blocks)的使用情况。

Inode bitmap: inode位图,记录inode的使用情况。

Inode Table:inode表,存放inode数据结构的表格。磁盘数据的每个inode通过ext4_inode数据结构表示。

Data Blocks:存放文件数据的部分。

Flexible Block Groups

ext4引入了flexible block groups新特性,把相邻的几个block group组成一组(logic block group),称之为flex_bg。如上图,flex_bg中block group会把bitmaps(data block bitmap和inode bitmap)和inode table都放在了第一个group中,除了第一个group,其他group可以可以只包含data block(也有一些block存放了superblock和group desc的冗余数据)。这样将metadata紧凑存放加速了loading读取速度,同时有利于大文件的连续存放,提升访问性能。

Sparse_Super特性

由于文件系统metadata对于安全性非常重要,比如一个硬盘只保留一份superblock信息,如果恰好存放superblock的block损坏,那么将无法访问文件。所以如前文ext4 layout我们知道,每个block group都冗余存放了superblock和group desc,其实大可不必这么冗余,启用sparse_super特性就可以0,1以及3,5,7的整数次方(power of 3, 5 , 7)的block group存放冗余。

Bigalloc特性

block默认的大小是4K,如果一个文件系统大文件很多,那么以多个块(cluster)为单元管理磁盘可以减少碎片化,也可以减少metadata的空间占用,所以ext4引入bigalloc。格式化此片可以设置cluster size,data block bitmap的一位将表示一个cluster状态,当然申请数据块也是以一个cluster为单位。cluster size存储在sb.s_log_cluster_size。

Block and Inode Allocation Policy

数据块分配分配核心要解决碎片化(fragment)问题。ext4如下方法避免:

  • multi-block allocator
  • delayed allocation
  • keep a file's data blocks in the same block group as its inode
  •  all the inodes in a directory are placed in the same block group
  • e4defrag碎片整理工具
Inline Data特性

主要是为了处理tiny file,比如一个文件小于60字节,完全可以嵌入文件的inode里面存储。

Meta Block Groups(META_BG)特性

磁盘数据结构 

dumpe2fs之所以能打印磁盘信息,就是因为磁盘上的数据按特定协议或者格式存储,跟ELF是类似的,这种二进制文件都必然有一定的格式,而ext4也定义几种数据结构分别对应这种格式或者协议。

ext4_super_block : 描述磁盘上super block格式的数据结构。

ext4_group_desc : 描述磁盘上group descriptor格式的数据结构。

ext4_inode:描述述磁盘上inode格式的数据结构。block group中的ext4_inode以数组的形式存放在inode table中,即inode table数组中每一项都是ext4_inode。

ext4_super_block数据结构

具体看参考文章ext4 Disk Layout,截取部分如下:

ext4_group_desc 数据结构

具体看参考文章ext4 Disk Layout,截取部分如下:

ext4_inode数据结构

内存数据结构 

前面介绍了磁盘数据结构,linux操作按照磁盘数据结构解析了磁盘数据,在内存中同样需要结构体存储这些信息。对应关系如下:

磁盘数据结构内存数据结构
ext4_super_blockext4_sb_info, (kzalloc分配,卸载时时候)
ext4_group_descext4_group_info(缓存内存紧张可回收)
ext4_inodeext4_inode_info(动态缓存,如文件删除会从高速缓存中动态删除)
data block bitmap缓冲区中的位数组
inode bitmap缓冲区中的位数组
block(数据块)VFS缓冲区

ext4_sb_info的创建代码:

static int ext4_fill_super(struct super_block *sb, void *data, int silent)
{
    char *orig_data = kstrdup(data, GFP_KERNEL);
    struct buffer_head *bh;
    struct ext4_super_block *es = NULL;
    struct ext4_sb_info *sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);

ext4_group_info创建代码:

 使用了SLAB_RECLAIM_ACCOUNT参数,内存紧张时可回收。

ext4_sb_info

定义在fs/ext4/ext4.h中,关联了VFS的super_block和ext4_super_block,同时保存了文件系统的通用信息,比如:

  • 磁盘超级块中大部分字段
  • buffer_head * s_sbh指针:指向包含磁盘超级块所在的缓冲区的缓冲区首部。
  • ext4_super_block *s_es:指向磁盘超级块缓冲区
  • super_block *s_sb:指向vfs super block。
  • 组描述符的个数s_desc_per_block
  • s_group_desc指针,指向缓冲区首部。

代码截取部分信息如下(详细字段可以查看fs/ext4/ext4.h内核代码)中ext4_sb_info结构体定义

/*
 * fourth extended-fs super-block data in memory
 */
struct ext4_sb_info {
	unsigned long s_desc_size;	/* Size of a group descriptor in bytes */
	unsigned long s_inodes_per_block;/* Number of inodes per block */
	unsigned long s_blocks_per_group;/* Number of blocks in a group */
	unsigned long s_clusters_per_group; /* Number of clusters in a group */
	unsigned long s_inodes_per_group;/* Number of inodes in a group */
	unsigned long s_itb_per_group;	/* Number of inode table blocks per group */
	unsigned long s_gdb_count;	/* Number of group descriptor blocks */
	unsigned long s_desc_per_block;	/* Number of group descriptors per block */
	ext4_group_t s_groups_count;	/* Number of groups in the fs */
	ext4_group_t s_blockfile_groups;/* Groups acceptable for non-extent files */
	unsigned long s_overhead;  /* # of fs overhead clusters */
	unsigned int s_cluster_ratio;	/* Number of blocks per cluster */
	unsigned int s_cluster_bits;	/* log2 of s_cluster_ratio */
	loff_t s_bitmap_maxbytes;	/* max bytes for bitmap files */
	struct buffer_head * s_sbh;	/* Buffer containing the super block */
	struct ext4_super_block *s_es;	/* Pointer to the super block in the buffer */
	struct buffer_head * __rcu *s_group_desc;
    ...
	struct super_block *s_sb;
    ...
};

ext4_sb_info和ext4_super_block中的很多字段相似,但也有区别,ext4_sb_info中的很多字段是根据ext4_super_block的字段计算而得,虽然可以通过 ext4_super_block计算而得到,但是定义在ext4_sb_info定义可以省去重复计算的时间。

super_block的结构提s_fs_info字段指向了ext4_sb_info,EXT4_SB宏就是通过该字段获取ext4_sb_info。内核代码举例:

int ext4_inode_bitmap_csum_verify(struct super_block *sb, ext4_group_t group,
                  struct ext4_group_desc *gdp,
                  struct buffer_head *bh, int sz)
{
    __u32 hi;
    __u32 provided, calculated;
    struct ext4_sb_info *sbi = EXT4_SB(sb);
    ...
}

ext4_inode_info

VFS的inode结构体与磁盘数据结构ext4_inode结构体之间也需要一座桥梁,就是ext4_inode_info,截取内核重要的字段如下:


/*
 * fourth extended file system inode data in memory
 */
struct ext4_inode_info {
	__le32	i_data[15];	/* unconverted */
	__u32	i_dtime;
	ext4_fsblk_t	i_file_acl;

	/*
	 * i_block_group is the number of the block group which contains
	 * this file's inode.  Constant across the lifetime of the inode,
	 * it is used for making block allocation decisions - we try to
	 * place a file's data blocks near its inode block, and new inodes
	 * near to their parent directory's inode.
	 */
	ext4_group_t	i_block_group;
	ext4_lblk_t	i_dir_start_lookup;

	unsigned long	i_flags;


	/*
	 * i_disksize keeps track of what the inode size is ON DISK, not
	 * in memory.  During truncate, i_size is set to the new size by
	 * the VFS prior to calling ext4_truncate(), but the filesystem won't
	 * set i_disksize to 0 until the truncate is actually under way.
	 *
	 * The intent is that i_disksize always represents the blocks which
	 * are used by this file.  This allows recovery to restart truncate
	 * on orphans if we crash during truncate.  We actually write i_disksize
	 * into the on-disk inode when writing inodes out, instead of i_size.
	 *
	 * The only time when i_disksize and i_size may be different is when
	 * a truncate is in progress.  The only things which change i_disksize
	 * are ext4_get_block (growth) and ext4_truncate (shrinkth).
	 */
	loff_t	i_disksize;
    ...
	struct inode vfs_inode;
	struct jbd2_inode *jinode;
    ...

}

ext4_inode_info内嵌了inode,可以通过传递inode对象到EXT4_I宏来获得ext4_inode_info,内核代码: 

void ext4_discard_preallocations(struct inode *inode)
{
    struct ext4_inode_info *ei = EXT4_I(inode);
    ...
}

 但是,ext4_inode_info没有定义指向ext4_inode的字段,只是拷贝了ext4_inode的i_block,i_flags等字段;同时inode结构体也包含了与ext4_inode类似的字段,比如i_atime,i_mtime,i_ctime等,所以三者的关系是:ext4_inode_info内嵌了vfs的inode,这两者一起“瓜分”了ext4_inode的信息。

ext4_group_info

struct ext4_group_info {
	unsigned long   bb_state;
	struct rb_root  bb_free_root;
    //第一个空闲的block号
	ext4_grpblk_t	bb_first_free;	/* first free block */
    //空闲block总数
	ext4_grpblk_t	bb_free;	/* total free blocks */
    //连续的空闲空间段数目
	ext4_grpblk_t	bb_fragments;	/* nr of freespace fragments */
    //最大空闲的order(cat /proc/fs/ext4/mb_groups可看到)
	ext4_grpblk_t	bb_largest_free_order;/* order of largest frag in BG */
	struct          list_head bb_prealloc_list;
#ifdef DOUBLE_CHECK
	void            *bb_bitmap;
#endif
	struct rw_semaphore alloc_sem;
	ext4_grpblk_t	bb_counters[];	/* Nr of free power-of-two-block
					 * regions, index is order.
					 * bb_counters[3] = 5 means
					 * 5 free 8-block regions. */
};

内核多块分配mballoc中ext4_group_info使用的很频繁,比如bb_largest_free_order的计算逻辑:


/*
 * Cache the order of the largest free extent we have available in this block
 * group.
 */
static void
mb_set_largest_free_order(struct super_block *sb, struct ext4_group_info *grp)
{
    int i;
    int bits;

    grp->bb_largest_free_order = -1; /* uninit */

    bits = sb->s_blocksize_bits + 1;
    for (i = bits; i >= 0; i--) {
        if (grp->bb_counters[i] > 0) {
            grp->bb_largest_free_order = i;                                                                                                                              
            break;
        }
    }
}

 mballoc为了解决block分配碎片化问题,使用memory buddy思想,将块按order组织成各种大小的,bb_largest_free_order就是还有剩余空间的最大order。

参考文章

Ext4 Disk Layout - Ext4

.ext4的新特性-bigalloc.pdf

Linux Ext2/Ext3/Ext4文件系统 目录 一、Ext2磁盘结构 二、Ext2 索引节点和数据块管理 三、Ext3文件系统 四、Ext4文件系统 一、Ext2磁盘结构 Ext2文件系统的磁盘结构如下图: 任何Ext2分区的第一个块都是引导块,引导块保存了分区和内核启动加载器相关的信息,不受文件系统管理。其余磁盘块被Ext2分成块组,每组包含的数据块和索引节点等都存放在相邻的磁道上,所有的块组大... 阅读详情

相关推荐

Linux Ext2/Ext3/Ext4 文件系统分区

然而,在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

m0_74282605的博客 1199

ext4文件系统解析

写文件操作时,除了更新Data区处,还会相应更新GDT、Inode Bitmap、Block Bitmap、目录区、Inode Table区。● 针对小于480MB的文件,GDT、目录区、Inode Bitmap,更新较少。Block Bitmap会不停记录使用了的Block,更新较多,Inode Table会不停记录已经使用了的Block数,也更新较多。● 针对超过480MB的文件,尤其是更大的文件,其会启用extent子节点表。

飞鹤的程序员人生 8805

ext4,xfs文件系统深入讲解inode,block,superblock,位图,块位图等

每个文件或目录都有一个唯一的 inode 号码,inode 中包含了文件或目录的元数据,如文件大小、权限、时间戳和指向数据块的指针等信息。与 ext4 不同的是,在 xfs 文件系统中,inode 号码只在文件或目录创建时分配,因此 inode 号码随着文件或目录的删除而不会被重复利用。inode 中包含了文件或目录的元数据,如文件大小、权限、时间戳和指向数据块的指针等信息。与 ext4 不同的是,在 xfs 文件系统中,文件或目录的数据不会被分成多个块存储,而是以 extent 的形式存储。

走向CTO的路上... 1258

系统篇: ext4 文件系统

系统篇: ext4 文件系统

旧年不在的博客 9896

Android 12 利用ext4格式改善Android数据分区f2fs断电丢失数据的问题

利用ext4格式改善Android数据分区f2fs断电丢失数据的问题

448313096@qq.com 2938

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1126

Linux EXT4文件系统简介

在先前有关Linux文件系统的文章中,我写了Linux文件系统的介绍以及一些更高级的概念,例如, 一切都是文件 。 我想更详细地了解EXT文件系统的细节,但是首先让我们回答以下问题:“什么是文件系统?” 文件系统包括以下所有内容: 数据存储:任何文件系统的主要功能都应该是存储和检索数据的结构化场所。 命名空间:一种命名和组织方法,提供命名和结构化数据的规则。 安全模型:一种用于定...

cumj63710的博客 6265

Qt + Robot Interface实现上位机和发那科机器人通信

摘要: 本文详细介绍了FANUC机器人的RobotInterface模块开发流程,包括环境配置、通信连接和上位机开发等内容,并提供了数值寄存器、位置寄存器和当前位置的读写代码等示例。适用于自动化行业有通讯需求的上位机开发人员,保姆教程,超详细版,新手也可以根据示例开发自己的通信程序。

xyhkma的博客 1750

Linux 中 ext、ext2、ext3、ext4 文件系统介绍与区别

文件系统名称 介绍 特点 优势 ext 第一代扩展文件系统, 于1992年4月发表,是为Linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。 它是Linux上第一个 利用虚拟文件系统实现的文件系统。 克服MINIX文件系统性能不佳的问题。 ext2 第二代扩展文件系统 是Linux内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入Linux核心支持之中。ext2 的经典实现为Linu...

早知晓的博客 2万+

PCL DBSCAN密度聚类【2026最新版】

点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。

点云侠的博客 5681

1998年高教社杯全国大学生数学建模竞赛 B 题:《灾情巡视路线》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 883

mkfs.ext4 -- 生成ext4文件系统

论如何生成ext4文件系统文件

m0_51451952的博客 4799

基于STM32设计的自动追光系统(项目资料ID:2)

基于STM32设计的自动追光系统主要由光敏采集电路、单片机核心板电路和步进电机控制电路构成。通过光敏电阻采集环境光强信息,经 STM32 单片机处理后,控制步进电机转动,实现对光源的自动追踪。该系统具有响应速度快、追踪精度较高等优点,可应用于太阳能发电、智能照明等领域,为相关场景提供高效的光资源利用方案。

以培养嵌入式工程师为己任 1万+

Linux Ext2/3/4文件系统

Linux Ext2/3/4文件系统简介

小立仔 3517

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1769

OpenClaw Docker 安装与部署教程,环境隔离不冲突技术指南

本文介绍了使用Docker容器化部署OpenClaw的完整教程。首先通过流程图详细说明了Docker环境检测流程,包括系统支持性检查、Docker安装状态验证、版本检测和服务配置等步骤。然后提供了Windows、macOS和Linux(Ubuntu/CentOS)系统下的Docker安装指南,涵盖从下载、安装到权限配置的全过程。最后介绍了OpenClaw官方镜像的拉取方法以及自定义镜像构建的Dockerfile示例。该教程适用于开发和生产环境,利用Docker实现环境隔离和快速部署。

一键难忘的博客 987

EXT4 文件系统

文章概览 Linux文件系统 首先我们要知道:linux系统中一切皆文件 进入linux系统就可以看到下面目录结构,应该很熟悉 可以再深入了解一下 安装系统的时候会指定安装硬盘,然后创建分区,当硬盘分区创建好之后会选择合适的文件系统(一般默认ext4)格式化分区,mount到指定目录下就可以读写文件 来看看 ls /dev/sd* (系统中有1块硬盘并且创建了2个主分区sda1、sda2) sudo fdisk -l /dev/sda (/dev/sda2为该系统下的文件系统) ...

qq_40174198的博客 3005

【WRF数据准备】气象驱动数据-ERA5再分析数据(Copernicus)

【WRF数据准备】气象驱动数据-ERA5再分析数据

WW、forever的博客 5525

Ext4文件系统修复

Ext4文件系统修复 目录 一、 super block................................................................................................................................................. 二、查看分区设备信息.....

weixin_30240349的博客 4320

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux开发篇 | Linux下制作EXT4文件系统镜像

一、创建文件系统镜像挂载目录 $ sudo mkdir fs 二、创建初始大小的镜像文件 此处以创建4G大小为例,其中4G=bs×count: $ sudo dd if=/dev/zero of=fs.img bs=1M count=4096 三、格式化镜像文件为EXT4文件系统 $ sudo mkfs.ext4 fs.img 四、挂载镜像文件到fs目录 $ sudo mount fs.img fs/ 五、拷贝文件系统内容到fs目录 $ sudo cp -rfp src-.

Systemcall名屋 4029

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【转发】ext4文件系统

ext4文件系统

zhongzhenxing7961的博客 2875

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux文件系统ext2\ext3\ext4\xfs详解

1.ext2 介绍: 第二代扩展文件系统是LINUX内核所用的文件系统,用以代替ext,是 EXT文件系统的升级版, 特点: 在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。 2.ext3 介绍: EX...

大道至简 3237

关于ext4文件系统概述

前言: 目前大部分Linux操作系统使用的文件系统是ext4和xfs, 了解ext4在磁盘中的分布 1. 容量概念 对于储存几个概念的解析: sector(扇区) : 1.磁盘最小的储存单位,可以通过命令行 fdisk -l得知单位每sector的大小(一般是512byte) 2.机械硬盘HDD的可用空间大小计算公式是 heads(磁头数量) cylinders(柱面数量) sectors(扇区数量) * 每个sector大小(512byte) 3.所以固态可用空间的总大小是 sectors(扇区数量)

RJ0024的博客 3127

UBI及EXT4文件系统

UBIFS介绍: 由于超大容量NandFlash的普及,YAFFS等皆无法再去控制NandFlash的空间,于是在2006年由IBM与Nokia的工程师设计开发了UBI(UnsortedBlockImage)及其UBIFS文件系统,专门为了解决MTD(MemoryTechnologyDevice)设备所遇到的瓶颈。UBIFS可以认为是JFFS2文件系统的下一代产品。JFFS2运行在M...

发呆健将的博客 3614

ext文件系统

Linux 以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在 Linux 的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。Linux 上的文件系统一般来说就是 EXT2/3/4。 EXT 是 延 伸 文 件 系 统 ( 英 语 : Extended file system,缩写为 ext 或 ext1),也译为扩展文件系统,一种文件系统,于 1992 年 4 月发表,是为 linux 核心所做的第一个文件系统

m0_65931372的博客 3327

linux 将ext2变成ext4文件系统

linux 将ext2变成ext4文件系统 ext2是非日志系统,断电很容易造成文件损坏。 1 卸载 sudo vim /etc/fstab /dev/mmcblk1p7 /data auto defaults 0 0 前面加一个#,改成如下 #/dev/mmcblk1p7 /data auto defaults 0 0 保存退出 (或 umount /dev/mmcblk1p7),重启reboot 2 格式化数据盘 sudo mkfs.ext4 /dev/mmcblk1p7 格式化...

码灵的博客 2553
上一篇: Linux iowait到底是什么含义
下一篇: Android代码解读之渲染机制揭秘
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值