首页 > 系统相关 >Linux内核文件系统-什么是文件系统

Linux内核文件系统-什么是文件系统

时间:2024-09-22 18:54:54浏览次数:3  
标签:字节 哔哩 文件系统 dev 内核 Linux chenxiaosong sda

建议点击这里查看个人主页上的最新原文

点击这里在哔哩哔哩bilibili在线观看配套的教学视频

点击这里在哔哩哔哩bilibili在线观看配套的加餐视频(就是一些补充)

点击跳转到内核课程所有目录

一般的Linux书籍都是先讲解进程和内存相关的知识,但我想先讲解文件系统。第一,因为我就是做文件系统的,更擅长这一块,其他模块的内容我还要再去好好看看书,毕竟不能误人子弟嘛;第二,是因为文件系统模块更接近于用户态,是相对比较好理解的内容(当然想深入还是要下大功夫的),由文件系统入手比较适合初学者。

我们先来看一下什么是文件系统?我们买电脑时,肯定会配一块硬盘(现在一般是固态硬盘),硬盘是用来存储数据资料的。比如要存储一句话:“我爱操作系统”,一个汉字占用2个字节,存储这一句话要占用12个字节(不包括结束符),我们可以用2种方法来存储。第一种方法是从硬盘第一个字节开始存储,前两个字节存储"我",第三四个字节存储"爱",以此类推。第二种方法是先创建一个文件,在这个文件里存储这句话,我们打开硬盘时,只需要找到这个文件的位置,就能找到这句话。第一种方法数据管理起来很不方便,所以一般都用第二种方法,第二种方法管理数据的规则就称为文件系统。

文件系统可以分为3类:

  • 磁盘文件系统,如ext2、ext4、xfs、ntfs等。
  • 网络文件系统,如nfs、cifs等。
  • 特殊文件系统,如procfs、sysfs等。

我们来实际操作一下,虚拟机中的${HOME}/qemu-kernel/start.sh文件中增加以下内容(如果已有就不用增加):

-drive file=1,if=none,format=raw,cache=writeback,file.locking=off,id=dd_1 \
-device scsi-hd,drive=dd_1,id=disk_1,logical_block_size=512,physical_block_size=512 \

然后在${HOME}/qemu-kernel/目录下创建一个文件:

fallocate -l 1G 1

进入虚拟机后,可以使用上面提到的第一种方法,直接从磁盘的第一个字节开始存:

echo "我爱操作系统" > /dev/sda
cat /dev/sda # 从磁盘的第一个字节开始输出

也可以用上面提到的第二种方法,也就是我们要学的文件系统:

mkfs.ext4 -F /dev/sda # 格式化文件系统
mount -t ext4 /dev/sda /mnt # 把磁盘挂载到某个目录
df /dev/sda # 查看是否已经挂载上
echo "我爱操作系统" > /mnt/file # 存到挂载点下的某个文件中
cat /mnt/file # 输出文件内容
debugfs /dev/sda
# debugfs:  stats # Block size: 1024
# debugfs:  stat file # BLOCKS: (0):7169
dd if=/dev/sda of=./data bs=1 skip=7341056 count=20
cat data
umount /mnt # 卸载文件系统

标签:字节,哔哩,文件系统,dev,内核,Linux,chenxiaosong,sda
From: https://blog.csdn.net/chenxiaosongcsdn/article/details/142300469

相关文章

  • 手把手教你用linux安装Gromacs(2024 GPU-CUDA)
    文章目录1.Gromacs介绍2.Gromacs安装一、基础软件1.gcc下载安装2.g++下载安装3.python4.Cmake二、显卡驱动和CUDA安装1.显卡驱动2.CUDA安装3.Gromacs-2024GPU-CUDA安装可能遇到的问题1.错误一原因:解决方法:2.错误二原因:解决方法:3.错误三4.错误四结束语1.G......
  • Linux添加环境变量(gpt生成,实测有用)
    在Linux中添加PATH环境变量,可以通过修改用户的.bashrc、.bash_profile或.profile文件,也可以临时修改当前会话的PATH变量。以下是添加永久性PATH变量的方法:打开你的用户目录下的.bashrc文件:nano~/.bashrc在文件的末尾添加新的PATH内容,例如添加/usr/local/bin:exportPATH=$PA......
  • 帝国cms内核的系统安装和还原数据库
    帝国CMS(EmpireCMS,简称ECMS)是一款功能强大且灵活的内容管理系统,被广泛应用于各种类型的网站上。下面将详细介绍帝国CMS系统的安装过程以及如何还原数据库。帝国CMS系统安装步骤准备工作下载安装包访问帝国CMS官方网站下载最新版的安装包。解压安装包将下载的安装包解......
  • 2024.9.22 扩展 centos7的文件系统空间
    从lsblk的输出可以看出,你的磁盘/dev/sda的总大小是30G,但sda3分区只使用了17.7G。要扩展/dev/sda3分区,使其利用整个磁盘上的可用空间,你可以按照以下步骤进行。扩展/dev/sda3分区备份数据在操作分区之前,建议你备份重要数据。进入fdisk调整分区使用fdisk工......
  • Linux进程信号(二)
    前文简单介绍了Linux中的信号产生和信号捕捉的初步认识,这一篇文章我们将进一步了解Linux信号中的阻塞信号,并深入理解信号捕捉的具体过程。阻塞信号概念解释在介绍阻塞信号之前,我们需要了解一些信号相关的概念:实际执行信号的处理动作称为信号递达(Delivery)信号从产生带递达之......
  • Linux 7 主机名修改、查看
    使用hostname命令修改主机名,它修改是transient主机名,即临时生效的主机名。直接修改/etc/hostname文件,它瞬时生效,重启后也生效(因为内核会根据它初始化transient主机名)。使用nmtui命令在图形化界面修改主机名。它会直接修改/etc/hostname文件,因此也是瞬时生效+永久生效的。使......
  • linux运维之用户管理 堡垒机+普通用户sudo提权
    一、简介普通用户通过堡垒机登录linux服务器,不允许使用root用户登录堡垒机;普通用户登录后,限制普通用户使用一些命令,如禁止使用某些命令,仅允许使用部分命令等;普通用户不知道root密码,普通用户不能修改root密码;二、sudoers配置0.添加一个测试用户#添加用户useraddalibaby#设置密码......
  • Linux文件IO(七)-复制文件描述符
    在Linux系统中,open返回得到的文件描述符fd可以进行复制,复制成功之后可以得到一个新的文件描述符,使用新的文件描述符和旧的文件描述符都可以对文件进行IO操作,复制得到的文件描述符和旧的文件描述符拥有相同的权限,譬如使用旧的文件描述符对文件有读写权限,那么新的文件描述......
  • Linux文件IO(八)-文件共享
    什么是文件共享?所谓文件共享指的是同一个文件(譬如磁盘上的同一个文件,对应同一个inode)被多个独立的读写体同时进行IO操作。多个独立的读写体大家可以将其简单地理解为对应于同一个文件的多个不同的文件描述符,譬如多次打开同一个文件所得到的多个不同的fd,或使用dup()(或dup2......
  • 进程空间管理:用户态和内核态
    用户态虚拟空间里面有几类数据,例如代码、全局变量、堆、栈、内存映射区等。在structmm_struct里面,有下面这些变量定义了这些区域的统计信息和位置。unsignedlongmmap_base;/*baseofmmaparea*/unsignedlongtotal_vm;/*Totalpagesmapped*/unsignedlonglock......