加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 一、Linux文件系统简介
    • 二、Linux磁盘文件系统
    • 三、Linux文件系统结构
    • 四、文件系统与磁盘管理相关命令
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

Linux | 看完就明白devsda、devhda是什么了

2022/06/02
909
阅读需 11 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

公众号:嵌入式攻城狮(ID:andyxi_linux)

作者:安迪西

一、Linux文件系统简介

任何一个操作系统中,文件管理是其基本功能之一,而文件的管理是由文件系统来完成的。文件系统主要用于组织和管理计算机存储设备上的大量文件, 并提供用户交互接口。数据在硬盘上是二进制的,文件系统可以将这些二进制数据还原为相应文件形式,并实现数据的查询和存储等。存储数据的物理设备有硬盘、U盘、SD卡、Flash、网络存储设备等。不同的存储设备有不同的物理结构,因此就需要不同的文件系统去管理,比如管理Nand Flash使用Yaffs文件系统,管理硬盘/SD卡使用ext文件系统等。Linux支持的文件系统格式很多,主要分为以下几类:

磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见格式有:Ext2、Ext3、Ext4、JFS、NTFS、UFS、FAT、FAT16、FAT32等

网络文件系统:是可以远程访问的文件系统,在服务器端仍是本地磁盘文件系统,客户机通过网络远程访问数据。常见格式有:NFS、Samba等

专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS、PROCFS等

二、Linux磁盘文件系统

接下来主要介绍磁盘文件系统。目前Ext4(Extended File sytem,扩展文件系统)是广泛使用的一种磁盘文件系统格式。是在Ext3基础上发展起来的,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进,其特点是日志文件系统:可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写,主要分为以下几类:

IDE磁盘:价格低廉,兼容性强,性价比高,但是数据传输慢,不支持热插拔

 

SCSI磁盘:传输速率高,读写性能好,运行稳定,可连接多个设备,支持热插拔,占用CPU低,但是价格相对较贵,一般用于工作站或服务器上

 

SATA磁盘:结构简单、支持热插拔

 

Linux中硬盘以及分区等设备均表示为文件,其命名规则如下:

IDE磁盘的文件名为:/dev/hdxx

SCSI/SATA/USB磁盘文件名为:/dev/sdxx

 

下面是一些具体的命名实例:

/dev/hda      #表示第一个IDE硬盘
/dev/hda1     #表示第一块IDE硬盘的第一个主分区
/dev/hda2     #表示第一块IDE硬盘的扩展分区(或第二个主分区)
/dev/hda5     #表示第一块IDE硬盘的第一个逻辑分区
/dev/hda8     #表示第一块IDE硬盘的第四个逻辑分区
/dev/hdb      #表示第二个IDE硬盘
/dev/sda      #表示第一个SCSI硬盘
/dev/sda1     #表示第一个SCSI硬盘的第一个主分区
/dev/sdd3     #表示第四个SCSI硬盘的第三个主分区

为了便于管理和使用,通常会对磁盘进行分区:

主分区:必须要存在的分区,最多能创建4个,最少1个,编号只能是1~4,可以直接格式化,然后安装系统,直接存放文件

扩展分区:会占用主分区位置,即主分区+扩展分区之和最多4个。相当于独立的磁盘,有独立的分区表,但不能独立的存放数据

逻辑分区:扩展分区不能直接存放数据,必须经过再次分割,成为逻辑分区后才能存放数据。一个扩展分区中的逻辑分区可以有任意多个,编号只能从5开始

下图中的分区方案为:2个主分区 + 1个扩展分区,其中扩展分区又分割出了2个逻辑分区

交换分区(swap):安装系统时建立的,一块特殊的硬盘空间,当实际内存不够用时,操作系统会从内存中取出部分暂时不用的数据,放在swap中,为当前程序腾出足够的内存空间。swap不会使用到目录树的挂载,无需指定挂载点(即cd无法进入)。

三、Linux文件系统结构

Linux采用载入/挂载的方式将分区与目录联系起来,通过访问目录就可以访问分区的存储空间。挂载点就是硬盘分区挂载到文件系统的某目录后,该目录就是相应分区的挂载点。在挂载点创建的文件,实际上是存储到硬盘的分区上,通过挂载点可以访问分区上的文件,若将硬盘分区与目录的挂载关系删除,分区上的文件不会被删除,只是原挂载点不能访问到分区上的文件。除了swap分区外,其他分区都是在根分区(/)目录上操作的。Linux文件系统是一个树形的分层组织结构,根作为整个文件系统的惟一起点,其他所有目录都从该点出发,如下图:  

由于Linux是完全开源软件,因此众多Linux发行版本的目录结构不尽相同。为了规范文件目录命名和存放标准,颁发了文件层次结构标准(FHS),Ubuntu系统也遵循该标准。

四、文件系统与磁盘管理相关命令

文件系统与磁盘管理相关命令非常多,下面仅对几个较常用的命令做简单介绍⏩ df命令:disk free,用于列出文件系统的整体磁盘使用量,命令的格式为:

df [-a -h -i -k -H -T -m] [目录或文件名]

不加参数使用时,默认会将系统内所有的(特殊内存与swap除外)都以Kbytes容量列出来。常用的选项如下示:

-a:列出所有的文件系统

-k:以KBytes容量显示各文件系统

-m:以MBytes容量显示各文件系统

-h:以GBytes,MBytes,KBytes等格式自行显示

-H:以M=1000K取代M=1024K的进位方式

-T:显示出文件系统类型

-i:不用硬盘容量,而以inode数量来显示

⏩ du命令:disk used,用于查看文件和目录磁盘使用空间的,命令的格式为:

du [-a -h -s -k -m] 文件或目录名称

不加参数使用时,默认会分析当前所在目录里的子目录所占用的硬盘空间。常用的选项如下示:

-a:列出所有的文件与目录容量

-h:以人们较易读的容量格式 (G/M) 显示

-s:列出总量,而不是单个目录占用容量

-S:不包括子目录下的总计

-k:以KB列出容量显示

-m:以MB列出容量显示

⏩ fdisk命令:磁盘分区表操作工具,命令的格式为:

fdisk [-l] 装置名称

常用的选项如下示:

-l:输出装置名称里所有的分区内容,若为空,则会搜寻系统里所有装置的分区并列出来

⏩ file命令:用于辨识文件类型,命令的格式为:

file [-b -c -L -v -z][-f <名称文件>][文件或目录...]

常用的选项如下示:

-b:列出辨识结果时,不显示文件名称

-c:详细显示指令执行过程,便于排错或分析程序执行的情形

-f <名称文件>:指定名称文件

-L:直接显示符号连接所指向的文件的类别

-v:显示版本信息

-z:尝试去解读压缩文件的内容

[文件或目录...]:要确定类型的文件列表,多个文件之间使用空格分开

⏩ mkdir命令:make directory的缩写,用于创建目录,命令的格式为:

mkdir [-p] dirName

常用的选项如下示:

-p:确保目录名称存在,不存在的就建一个

⏩ ln命令:link files,为某一个文件在另外一个位置建立一个同步的链接。命令的格式为:

 ln [参数][源文件或目录][目标文件或目录]

常用的选项如下示:

-b:删除,覆盖以前建立的链接

-d:允许超级用户制作目录的硬链接

-f:强制执行

-i:交互模式,文件存在则提示用户是否覆盖

-n:把符号链接视为一般目录

-s:软链接(符号链接)

-v:显示详细的处理过程

--help 显示帮助信息

--version 显示版本信息

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
CM315D32768EZFT 1 Citizen Finedevice Co Ltd Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, SMD, 2 PIN

ECAD模型

下载ECAD模型
暂无数据 查看
24LC16BT-I/SN 1 Microchip Technology Inc 2K X 8 I2C/2-WIRE SERIAL EEPROM, PDSO8, 0.150 INCH, ROHS COMPLIANT, PLASTIC, MS-012, SOIC-8

ECAD模型

下载ECAD模型
$0.35 查看
ASDMB-25.000MHZ-LY-T 1 Abracon Corporation MEMS OSC XO 25.0000MHZ LVCMOS

ECAD模型

下载ECAD模型
$3.27 查看

相关推荐

电子产业图谱

公众号:嵌入式攻城狮;专注于分享和记录嵌入式开发技术,主要包含C语言、STM32、STM32CubeMX、lwIP、FreeRTOS、Linux、Zigbee、WIFI、BLE、LoRa、NB-loT、PCB电路设计、QT等等。