Linux文件系统原理

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安装即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVASE】抽象类

1、抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如: 说明&a…

基础IO用户缓冲区 、inode、硬软链接【Linux】

文章目录 用户缓冲区磁盘磁盘分区EXT2文件系统的存储方案 inode软链接硬链接 用户缓冲区 代码一&#xff1a; 1 #include<stdio.h>2 #include<unistd.h>3 #include<string.h> 4 int main()5 {6 const char * fstr &…

Linux下的调试器 : gdb指令详解

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 gdb是什么 gdn是linu…

SQL注入:原理及示例讲解,配置mysql环境变量,pikachu靶场搭建

SQL注入原理 SQL注入&#xff08;SQL Injection&#xff09;是一种代码注入技术&#xff0c;攻击者通过将恶意的SQL代码插入到应用程序的输入字段中&#xff0c;诱使后台数据库执行这些恶意代码&#xff0c;从而对数据库进行未授权的操作。常见的操作包括获取敏感数据、篡改数…

Liunx基本指令以及权限(个人笔记)

Linux指令和权限 1.指令1.1ls指令1.2pwd命令1.3cd指令1.4touch指令1.5mkdir指令1.6rm指令1.7man指令1.8cp指令1.9mv指令1.10cat指令1.11less指令1.12head指令1.13tail指令1.14date显示1.15Cal指令1.16find指令1.17grep指令1.18zip/unzip指令1.19tar指令1.20bc指令1.21uname -r指…

Python数据可视化(五)

实现GUI效果 借助 matplotlib&#xff0c;除可以绘制动画内容外&#xff0c;还可以实现用户图形界面的效果&#xff0c;也就是 GUI 效果。 GUI是用户使用界面的英文单词首字母的缩写。接下来&#xff0c;我们就以模块widgets中的类RadioButtons、 Cursor 和 CheckButtons 的使用…

属于程序员的浪漫,一颗会跳动的心!!!

绘制一颗会跳动的心❤ 嘿嘿 可以说是程序员的专属浪漫了吧&#xff0c;就像点燃一颗LED灯一样&#xff1f;&#xff08;我瞎说的啊&#xff0c;大家别当真&#xff0c;我很菜的&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 程序就在下面啦&#xff0c;然…

​✨聚梦AI绘图插件-for photoshop(基于ComfyUI) 内测版V0.1发布

&#x1f388;背景 photoshop本身是有AI生成能力的&#xff0c;不过限于种种原因&#xff0c;国内使用很不方便。 photoshop也是有AI插件的&#xff0c;不过大多安装起来比较复杂&#xff0c;或者&#xff0c;干脆就会收费。 所以我们做了一个免费的AI插件&#xff0c;期望能…

Vue.js条件渲染与列表渲染指南

title: Vue.js条件渲染与列表渲染指南 date: 2024/5/26 20:11:49 updated: 2024/5/26 20:11:49 categories: 前端开发 tags: VueJS前端开发数据绑定列表渲染状态管理路由配置性能优化 第1章&#xff1a;Vue.js基础与环境设置 1.1 Vue.js简介 Vue.js (读音&#xff1a;/vju…

如同“水生态”的存储引擎|OceanBase数据转储合并技术解读(一)

本系列文章主要围绕 OceanBase数据库存储引擎中的转储合并进行解读&#xff0c;涉及到数据存储、转储合并、数据校验等方面的内容&#xff0c;旨在让读者了解OceanBase数据库的存储引擎中与转储合并有关的各种概念&#xff0c;帮助读者更好地理解OceanBase数据库的存储技术原理…

20240526怎样将windows的屏幕复制到第二屏

百度&#xff1a;WIN10 第二显示器 COPY https://zhidao.baidu.com/question/761454546683111004.html 20240526怎样将windows的屏幕复制到第二屏  我来答 分享 举报 2个回答#热议# 海关有哪些禁运商品&#xff1f;查到后怎么办&#xff1f; 华硕服务 2022-07-05 百度认证:…

C++模板——函数模板和类模板

目录 泛型编程 函数模板 函数模板概念 函数模板的定义和语法 函数模板的工作原理 函数模板的实例化 隐式实例化 显示实例化 函数模板的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 什么是泛型编程&#xff1f; 泛型编程&#xff08;Generic Pr…

Sam Altman微软Build 2024最新演讲:AI可能是下一个移动互联网

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

gfast:基于全新Go Frame 2.3+Vue3+Element Plus构建的全栈前后端分离管理系统

gfast&#xff1a;基于全新Go Frame 2.3Vue3Element Plus构建的全栈前后端分离管理系统 随着信息技术的飞速发展和数字化转型的深入&#xff0c;后台管理系统在企业信息化建设中扮演着越来越重要的角色。为了满足市场对于高效、灵活、安全后台管理系统的需求&#xff0c;gfast应…

人工智能+量子计算:飞跃现实边界还是科技幻想?

人工智能量子计算&#xff0c;这是一种可能改变世界的伙伴关系。 在科技的前沿&#xff0c;两大革命性技术——人工智能&#xff08;AI&#xff09;和量子计算——正站在合作的十字路口。人工智能&#xff0c;以其强大的数据分析能力和模式识别&#xff0c;正在改变着我们生活…

MOS选型及其参数解析

背景&#xff1a; 整理现有常用元器件选型&#xff0c;日后使用时针对性观看&#xff0c;生成列表链接如下&#xff1a; https://blog.csdn.net/caozhaokun/article/details/126069701 作者&#xff1a;Cayden 时间&#xff1a;2024/05/26 一、MOS选用现状 MOS是电路设计…

【软件设计师】面向对象技术

1.面向对象基础 1.1 基本概念 方法重载是函数名字相同&#xff0c;参数列表不同 组成 即组合&#xff0c;指整体与部分的关系&#xff0c;整体与部分生命周期相同 聚合 关联关系的一个特例&#xff0c;是体现整体与部分&#xff0c;即使has-a的关系&#xff0c;此时整体与部分…

设计模式在芯片验证中的应用——模板方法

一、模板方法 模板方法(Template Method)设计模式是一种行为设计模式&#xff0c; 它在父类中定义了一个功能的框架&#xff0c; 允许子类在不修改结构的情况下重写功能的特定步骤。也就是模板方法定义了一组有序执行的操作&#xff0c;将一些步骤的实现留给子类&#xff0c;同…

6818 android 修改开机 logo, 编译脚本分析

问题&#xff1a; 客户需要去掉 android5.1 的开机logo. 说明&#xff1a; 对于Android5.1 来说&#xff0c;uboot 与kernel 的logo 是一个。 过程&#xff1a; 其实对于开机logo 的修改很简单&#xff0c;直接参考厂家手册就可以了。 这是 android4.4 的开机logo 的修改&…

Ps:消失点滤镜 - 导出 3D 信息

Ps菜单&#xff1a;滤镜/消失点 Filter/Vanishing Point 快捷键&#xff1a;Ctrl Alt V “消失点”滤镜的导出 Export功能允许用户将创建的 3D 信息&#xff08;包括平面、纹理和测量&#xff09;导出为兼容 CAD、建模、动画和特殊效果应用程序的格式。这使得 Photoshop 与其…