Linux文件系统原理

news2024/11/16 20:24:42

Linux文件系统

冯诺依曼在1945年提出计算机的五大组成部分
运算器:CPU
控制器:CPU
存储器:内存和硬盘
输入设备:鼠标、硬盘
输出设备:显示器

一、硬盘结构

机械硬盘结构

在这里插入图片描述

  1. 扇区:硬盘的最小存储单位,大小为512字节
  2. 磁道:由扇区组成的园
  3. 柱面:多扇片下,所有盘片的同一磁道组成的
固态硬盘结构

固态硬盘的特点

固态硬盘,使用固态电子芯片阵列而制成的硬盘,由控制单元和存储单元组成

特点:读写快、噪音低、防震、轻薄,有写入次数限制,容量较小、价格高

在固态硬盘中,为了便于理解,有逻辑上的磁道、扇区的概念

二、Centos6 下的ext4文件系统

1.磁盘使用流程
对硬盘进行分区
格式化指定文件系统
挂载使用

分区:MBR与GPT

MBR分区方式

  • 主引导记录 是位于磁盘最前边的一段引导代码
  • 主引导程序 占用了446byte
  • 分区表 占用了64byte,16标识一个分区
  • 有效标识符占用了2byte,标记MBR是否有效

GPT分区方式

  • 现存系统最大支持128个主分区
  • 最大支持18EB分区
  • 提供分区表的冗余
  • 实现分区表备份与安全
2.使用虚拟机进行MBR分区

1.关机添加硬盘

2.查看是否添加成功 ls /dev/sda

3.使用fdisk+设备文件名进行分区

#进入分区界面
[root@localhost ~]# fdisk /dev/sda1
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xd4897b23 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助)

​ fdisk交互页面中可用选项有

m:寻求帮助d:删除分区l:显示分区类型n:新建分区
p:显示分区表信息q:不保存退出t:修改分区id,l可查看w:保存并退出
3.格式化与挂载

在这里插入图片描述

super block:超级块,记录每个分区的block的大小、数量

inode表:用来快速搜索磁盘上的索引节点

data block:数据块,保存真实数据的位置,block的大小和数量在格式化成文件系统已经固定,除非重新格式化,否则不能修改。

单个文件占用小于一个block的大小时,单独占用一个block,剩余空间不会被利用。

inode:i节点,记录inode号、权限、属主属组、时间戳、大小、占了那几个block。

3.1 查看使用的扇区
fdisk -l 设备文件
[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b1fe4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624    41943039    20446208   8e  Linux LVM
3.2 查看分区情况
fdisk -l 设备文件  查看分区情况

[root@localhost ~]# fdisk -l /dev/sdb1

磁盘 /dev/sdb1:3221 MB, 3221225472 字节,6291456 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
3.3 格式化:
命令格式:mkfs.文件系统类型 磁盘路径

[root@localhost ~]# mkfs.xfs /dev/sdb2
3.4 挂载
命令格式:mount -t 文件系统类型 路径 挂载点

补充:df -h 查看已挂载的磁盘空间使用情况
	df -i 查看已挂载的inode号
3.5 永久挂载
blkid 查询UUID
选择需要挂载的分区,复制到/etc/fstab

[root@localhost ~]# blkid
/dev/sda1: UUID="c198eb8b-f5d7-4dd1-9083-dc4168a9588d" TYPE="xfs" 
/dev/sda2: UUID="xCaOvp-L9To-Obc9-5BLe-d9ES-vncR-Iz9pqm" TYPE="LVM2_member" 
/dev/sdb1: UUID="371168b5-8eaf-4ddc-b26a-9e283ea06181" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="333657ff-e432-4b66-bca9-9201ce9f726c" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=c198eb8b-f5d7-4dd1-9083-dc4168a9588d /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=371168b5-8eaf-4ddc-b26a-9e283ea06181 /root/disk1 xfs defaults  0 0 

3.6 查看UUID
1.dumpe2fs -h 分区设备名

2.ls -l /dev/disk/by-uuid/
[root@localhost ~]# ls -l /dev/disk/by-uuid/
总用量 0
lrwxrwxrwx. 1 root root 10 514 04:29 131eb8b0-a1b4-47d0-9d94-c2571c083711 -> ../../dm-1

3.查看分区文件系统:df -T 

补充命令:

partprode:将磁盘分区变化信息通知内核,请求操作系统重新加载分区表
	-s:显示磁盘分区汇总信息
	-h:显示帮助信息
	
fack:文件系统修复
格式:fack -y 分区名

三、Centos 7下的XFS文件系统

XFS每个单个文件系统量最大支持8eb,单个文件可以支持16tb。

XFS是一个适合高容量磁盘与 巨型文件的文件系统

1.XFS组成部分

XFS文件系统在数据的分布上主要分为三部分:

数据区(data section)

文件系统活动登录区(log section)

实时运行区(realtime section)

2.XFS文件系统相关查询命令
df -t #查看已经挂载分区的文件系统类型

xfs_info 挂载点/设备文件名 #查看已挂载XFS文件系统元数据信息命令

blkid #列出设备的UUID等参数

lsblk #查看设备详细信息
[root@localhost ~]# lsblk /dev/sdb2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb2   8:18   0   2G  0 part [SWAP]
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  512M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 18.5G  0 lvm  /
  └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    2G  0 part [SWAP]
└─sdb2            8:18   0    2G  0 part [SWAP]
sr0              11:0    1 1024M  0 rom  
[root@localhost ~]# 
3.磁盘分区
GPT分区表
命令格式:gdisk 设备文件完整路径 

#分区完成后,可以通过查看/proc/partitions来确定分区是否修改成功

partprode -s #更新Linux内核的分区表信息
4.磁盘格式化
mkfs.xfs 创建xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/sdb1
5.文件系统挂载

挂载:mount

选项
	-a:根据/etc/fstab文件,将所有磁盘进行挂载
	-t:指定文件系统类型来进行挂载
	-o:挂载特殊选项
6.开机自动挂载

开机自动挂载需要写入配置文件/etc/fstab

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=866208a7-b3a2-4998-b20a-4c8dc6ecd0dc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

第一列:磁盘设备文件名或UUID

第二列:挂载点

第三列:磁盘分区的文件系统

第四列:文件系统参数

async/sync(异步、同步)设置磁盘是否以异步方式运行,默认异步(性能较佳)
auto/noauto自动、手动,默认文件系统自动挂载
rw/ro读写、只读,设置磁盘以读写或者只读运行
exec/noexec执行、不执行。限制文件系统可执行操作
suid/nosuid该文件系统是否允许SUID权限存在
defaults同时拥有rw、suid、dev、exec、suto、async等功能

第五列:能否被dump备份(0:不备份,1:每天备份,5不定期备份)

第六列:是否以fsck检验扇区

补充命令
stat:文件名、文件大小、占用block数量、单个block大小、所在设备编号、inode号、硬链接数、权限、属主属组、访问时间、数据修改时间、状态修改时间

[root@localhost ~]# stat .cshrc 
  文件:".cshrc"
  大小:100       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:33942934    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2013-12-29 10:26:31.000000000 +0800
最近更改:2013-12-29 10:26:31.000000000 +0800
最近改动:2024-04-22 22:46:36.028008307 +0800
创建时间:-
cat:改变访问时间
vim:改变数据修改时间
chmod、chown:权限的变动改变状态修改时间
[root@localhost ~]# 
命令格式:du 目录或分区挂载点
命令选项:
-a:列出目录下所有子文件和子目录占用空间大小(默认列出子目录)。
-h:以常见单位显示目录大小。
-s:递归式显示目录下所有子文件子目录占用总空间。

挂载的三种方式

临时挂载:mount
永久挂载:vim  /etc/fstab
mount -a:重新挂载/etc/fstab
扩展swap分区

swap指的是交换分区(swap space),它是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是两者的组合。

	1.修改分区ID
[root@localhost ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-41943006, default = 8390656) or {+-}size{KMGTP}: 
Last sector (8390656-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'

Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 68E53DD4-EB72-44D6-A891-EC8367BDD529
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 29360061 sectors (14.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         4196351   2.0 GiB     8200  Linux swap
   2         4196352         8390655   2.0 GiB     8200  Linux swap
   3         8390656        12584959   2.0 GiB     8200  Linux swap
#8200是Centos7中的swap的默认systemID 
Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

	2.mkswap /dev/sdb3  #swap格式化
	3.swapon  /dev/sdb3  #开启设备
	  swapoff /dev/sdb3  #关闭设备
	4.free -k -m -g -h   #查看swap情况
[root@localhost ~]# free -k  #以kb显示swap大小
              total        used        free      shared  buff/cache   available
Mem:         995892      664036       68396       26972      263460      101380
Swap:       5242868       21768     5221100
[root@localhost ~]# free -g  #以gb显示swap大小
              total        used        free      shared  buff/cache   available
Mem:              0           0           0           0           0           0
Swap:             4           0           4
[root@localhost ~]# free -m  #以mb显示swap大小
              total        used        free      shared  buff/cache   available
Mem:            972         648          66          26         257          99
Swap:          5119          21        5098
[root@localhost ~]# free -h    #以常见单位显示swap大小
              total        used        free      shared  buff/cache   available
Mem:           972M        648M         66M         26M        257M         99M
Swap:          5.0G         21M        5.0G
[root@localhost ~]# 

ble
Mem: 972 648 66 26 257 99
Swap: 5119 21 5098
[root@localhost ~]# free -h #以常见单位显示swap大小
total used free shared buff/cache available
Mem: 972M 648M 66M 26M 257M 99M
Swap: 5.0G 21M 5.0G
[root@localhost ~]#


注:fdsik命令可以在centos6、7版本使用,gdisk在centos7可以使用,如果需要在centos6使用yum安装即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1698760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows使用gzip和bzip2对文件进行压缩

git软件 git bash:下载地址https://git-scm.com/downloads,安装时一路next。 这个软件是给程序员提交代码用的工具,内置linux系统的命令行,可以使用linux系统特有的压缩软件gzip和bzip2. gzip使用 gzip一般用于压缩tar包&#…

学习经验分享【37】YOLOv10解读——最新YOLO版本

YOLO算法更新速度很快,已经出到V10版本,后续大家有想发论文或者搞项目可更新自己的baseline了。有需要改进方法的和相关资料可以关注后私信获取。 代码:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 摘要&…

【credit_based流控机制】

credit_based流控机制 1 credit_based way1.1 Principle1.3 DFD1.4 Module1.4.1 Interface1.4.2 Code Block 在网络芯片处理大流量报文中,一般主要是两种机制:1.valid–ready反压(backpressure)机制;2.credit信用机制; credit机制…

Postman快捷功能-批量断言与快速查询替换

大家好,在我们日常的接口测试工作中,经常需要对接口返回的数据进行断言,以确保接口的正确性。当接口数量较多时,逐个编写断言语句会变得非常繁琐。此外,在接口测试过程中,我们还可能需要频繁地查找和替换某…

sql-labs靶场环境搭建(手把手保姆级教学)

文章目录 一、sql-labs靶场简介:二、搭建过程1、资源下载2、配置文件;3、访问网站4、创建数据库 三、使用PhpStudy2018原因 一、sql-labs靶场简介: SQL-Labs 是一个实践环境,旨在用于数据库和 SQL(结构化查询语言&…

SAP FS00如何导出会计总账科目表

输入T-code : S_ALR_87012333 根据‘FS00’中找到的总账科目,进行筛选执行 点击左上角的列表菜单,选择‘电子表格’导出即可

docker-compose 搭建 单机版ELK

docker-compose 搭建 单机版ELK 前言 本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在…

yolov8报警图片写入minio服务器 Rabbitmq发送地址

OSError [WinError 1455]页面文件太小,无法完成操作”解决方案“_深度学习_yangshejun-GitCode 开源社区 (csdn.net) python对RabbitMQ的简单使用_python rabbitmq-CSDN博客 【Windows安装RabbitMQ详细教程】_rabbitmq windows-CSDN博客 Windows 10安装Minio 文件…

以前:不会用电脑;现在:不会用AI

购买特价商务机票需要一些策略和灵活性。、 提前规划:商务舱票价通常在出发日期的2-3个月前最便宜。尽早规划您的行程并开始关注票价。 使用比价工具:使用Skyscanner、Kayak等比价网站来比较不同航空公司的商务舱票价。这些网站可以显示多个航空公司的价…

IOT技术怎么落地?以宝马,施耐德为例

物联网技术 物联网(IoT)技术正逐渐成为数字化工厂转型的核心驱动力。本文将通过实际案例,探讨IoT技术如何促进制造业的数字化转型,提高生产效率,降低成本,并提升产品质量。 1. 物联网技术简介 物联网技术通…

Vue项目如何进行XSS防护

前言 在目前主推网络安全的情况下,很多开发项目都需要在上线前进行渗透测试,当符合渗透测试标准及没有安全漏洞即可正常上线,当前还会有代码审计的,这个另当别论。 如何对XSS进行防护 在很多的富文本编辑器项目中,x…

gcc g++不同版本切换命令

sudo update-alternatives --config g sudo update-alternatives --config gcc ubuntu20.04 切换 gcc/g 版本_ubuntu降低g版本-CSDN博客

MDK安装

MDK安装 1 MDK的差异2 切换MDK3 安装芯片支持包注意点 1 MDK的差异 不同版本MDK有略微的差别,比如:MDK536.EXE,支持版本5的交叉编译链。如下图所示: 而MDK539.EXE不支持版本5的交叉编译链,所以工作的时候&#xff0c…

是的,我换logo了!

大家好,我是记得诚。 当你收到推文的时候,会发现记得诚换logo了! 之前是这样的。 现在是这样的。 这个新logo(头像)是2年前在淘宝上请人做的,价值37人民币,但一直没有换上。当时还发了一个朋友…

netcat一键开始瑞士军刀模式(KALI工具系列六)

目录 1、KALI LINUX简介 2、netcat工具简介 3、在KALI中使用netcat 3.1 目标主机IP(win) 3.2 KALI的IP 4、命令示例 4.1 测试某IP的端口是否打开 4.2 TCP扫描 4.3 UDP扫描 4.4 端口刺探 4.5 直接扫描 5、即时通信 5.1 单击对话互联 5.2 传…

初中英语优秀作文分析-002Who stole the cupcake-谁偷了纸杯蛋糕?

更多资源请关注纽扣编程微信公众号 记忆树 1 One Sunday afternoon, Leslie was at home with her kids, 3-year-old Angel, 6-year-old Carl, and 7-year-old Tony. 翻译 一个周日的下午,Leslie和她的孩子们在家,他们是3岁的Angel,6岁的…

告别红色波浪线:tsconfig.json 配置详解

使用PC端的朋友,请将页面缩小到最小比例,阅读最佳! tsconfig.json 文件用于配置 TypeScript 项目的编译选项。如果配不对,就会在项目中显示一波又一波的红色波浪线,警告你这些地方的类型声明存在问题。 一般我们遇到这…

[LDAP: error code 34 - invalid DN]

目前我的项目版本: Spring版本:5.3.15SpringBoot版本:2.6.3 完整错误 org.springframework.ldap.InvalidNameException: [LDAP: error code 34 - invalid DN]; nested exception is javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]at org.s…

STM32—HAL-PWM-舵机180(每个频率对应每个角度)

1开启时钟 2开启定时器和通道设置为PWM模式 3将定时时间设置为50Hz(20ms)//每25为1ms 4代码编写 4.1开启PWM 4.2改PWM的占空比 4.3效果0~180度在0度 源码 /* USER CODE BEGIN Header */ /******************************************************************************…

OceanBase SQL 诊断和调优实践——【DBA从入门到实践】第七期

数据库作为绝大多数应用系统储存数据的核心系统,在用户系统需要访问数据时,有着至关重要的作用。在这些交互中,SQL 语言是应用与数据库系统之间“沟通”的桥梁,它负责将应用的指令传达给数据库。因此,SQL 的性能好坏直…