文件系统笔记

五大子系统及硬盘相关知识

操作系统内核的五大子系统

1、内存管理
2、文件系统
3、网络接口
4、进程调度
5、进程通信 – 进程之间都是独立的,进程之间的通信必须要通过第三方(内核)
进程之间有哪些通信的方式?  
    主要有:管道、共享内存、信号、信号量、消息队列、socket

固态硬盘 vs 机械硬盘
价格 贵 便宜
速度 快 慢

1、机械硬盘本质是电磁存储,固态硬盘则是半导体存储。
2、机械硬盘很怕摔,固态硬盘比较抗震。
3、固态硬盘读写速度比机械硬盘快。

硬盘的术语

磁头、磁道、扇区、柱面
定位方式:
CHS(物理层面的定位) – 柱面、磁头、扇区
LBA(逻辑层面定位) – 每个扇区一个编号,通过编号找扇区

磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头;
磁道(track)数:磁道是从盘片外圈往内圈编号0磁道,1磁道…,靠近主轴的同心圆用于停靠磁头,不存储数据;
柱面(cylinder)数:同磁道数量;
扇区(sector)数:每个磁道都别切分成很多扇形区域,每道的扇区数量相同;
圆盘(platter)数:就是盘片的数量。

分区管理

磁盘分区
基本磁盘上可以建立一到四个主分区
扩展分区会占用一个主分区的位置,扩展分区不能直接存储文件,划分为逻辑分区来存储文件
注意:主分区最多只能有四个,并且扩展分区会占用一个主分区,逻辑分区可以有很多个

Linux里的分区查看

SCSI接口的盘一般是以sd开头
IDE接口的盘 hd开头
虚拟云磁盘 vd开头

硬盘顺序以a、b、c、d…来表示
分区顺序以1、2、3…来表示
[root@syq ~]# ls /dev/sd* #查看所有的硬盘
/dev/sda /dev/sda1 /dev/sda2
#a表示第一块盘,1表示第一个分区

df命令 – 查看容量

[root@syq ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.5G 14G 21% /
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0

/dev/sda1 --> /boot 磁盘挂载了才能使用
挂载好之后,操作挂载点,其实就是操作磁盘分区

怎么添加磁盘

在VMware的设置中添加一块硬盘,输入以下命令:
新添加盘之后,务必重启
echo “scsi add-single-device 2 0 1 0”>/proc/scsi/scsi
如果执行# ls /dev/sd* 看不到新添加的硬盘,那就重启reboot

fdisk 查看硬盘信息

fdisk -l [设备名]
不接设备名 就查看所有设备的信息
[root@syq ~]# fdisk -l

fdisk 设备名
m 查看帮助
n 新建分区
p 打印分区信息
w 退出保存
q 退出不保存

建立分区

fdisk命令建立分区(默认情况下为2T的分区)
用途:在交互式的操作环境中管理磁盘分区
格式:fdisk [磁盘设备]
交互模式中的常用指令
m:查看操作指令的帮助信息
p:列表查看分区信息 print
n:新建分区 new
d:删除分区 delete
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出

parted命令分区
可以支持交互式环境分区,也可以支持命令行分区
所以脚本中使用parted更方便

分区表:MBR和GPT

DOS 标签: MBR
GPT 标签: GPT

MBR 主引导记录 – 用于启动系统的
硬盘的0柱面、0磁头、1扇区称为主引导扇区

MBR大小512字节,分为三个部分
主引导程序:446字节 (grub)
硬盘分区表DPT:64字节 一个区:16字节
分区结束标记:2字节

GPT
GPT没有分区限制,理论上可以对无限大的磁盘进行分区
但是在Windows系统上,最多支持128个分区
GPT兼容MBR,保留MBR的主引导记录

GPT VS MBR
1、GPT 理论上来说可以对无限大的磁盘进行分区, MBR对2T以下磁盘进行分区
2、MBR最多支持4个分区 GPT 1-128

进程

系统的驱动文件一般放在/boot目录下
PPID为0的进程只有两件事,创建PID 1号进程和2号进程
内核相关的进程都是由2号进程创建的,即父进程为2
用户相关的进程都是由1号进程创建的,即父进程为1
systemd 进程与用户相关 systemd(与服务相关)

新增一块盘的步骤

新增一块盘
物理插拔 --》 分区 --》 格式化(确定文件系统) --》 挂载

分区使用fdisk命令
格式化命令:mkfs.ext4或者mkfs.xfs
挂载:mount /dev/sdb1 /mount 卸载:umount /mount
永久挂载:修改/etc/fstab文件,然后mount -a自动挂载

blkid命令 查看磁盘UUID,注意每个磁盘的UUID是不一样的
UUID=4d812c09-bf36-4030-9391-b7040d5be2e7 /mount xfs defaults 0 0
第一列:挂载设备 / UUID (可以写UUID,也可写路径)
第二列:挂载点
第三列:文件系统
第四列:
第五列:是否备份,0忽略,1备份
第六列:是否检查 0不检查

ext4 vs xfs

区别一:单个文件的大小
EXT4可以是16GB到16TB,而XFS可以是16TB到16EB
区别二:最大文件系统大小
EXT4可以是1EB,而XFS可以是8EB
区别三:
EXT4受限制于磁盘结构和兼容问题,可扩展性和scalability不如XFS

lsof命令

lsof /mount2/hzw #检测/mount2/hzw被哪些程序使用
lsof -i:80 查看端口
lsof -p 进程号 查看进程打开了哪些文件
lsof 列举出当前系统所有的打开文件

/proc目录
/proc – 正在运行的程序,系统,以及当前主机一些硬件情况
/proc/cpuinfo cpu的一些信息
/proc/meninfo

经典分区方案

/boot linux启动文件
/swap 交换分区 当物理内存不足的时候,启动磁盘上的交换分区来做内存使用
一般不建议开启,因为会导致程序速度变慢

swap交换分区 – 通俗理解:把磁盘当内存用,在磁盘中开辟一片空间称为swap,但速度仍然很慢

设置swap,什么时候触发swap分区的使用

[root@syq ~]# cd /proc/sys/vm #vm 即virtual memory 虚拟内存
[root@syq vm]#
[root@syq vm]# cat swappiness
30 # 默认当物理内存还剩30%的时候启动交换分区
[root@syq vm]# echo 0 > swappiness 临时修改为0
[root@syq vm]# cat swappiness
0
[root@syq vm]# swapon -a #开启swap

虚拟文件系统(VFS)

VFS(虚拟文件系统)
在文件系统挂载之后,将文件系统的一些元数据加载到内存中
虚拟文件系统只存在于内存中
VFS作用就是屏蔽给各类文件系统的差异, 给用户、应用程序一个统一的接口

VFS描述文件系统使用的是超级块和inode的方式

VFS主要定义了四种对象类型:

1、超级块对象 super block
记录文件系统的总体信息:inode数量、block数量,
使用了多少,还剩余多少
属于哪个文件系统 调用方式
2、索引节点 inode
里面包含文件的元信息
字节数、所属主和组、权限、修改、创建时间戳
block的位置
3、文件对象 file
4、目录项对象 dentry
filename inode号

磁盘文件系统格式化之初,就会将磁盘大体分为两个部分, 一个存放inode索引的,一个存放数据的
inode实在文件系统初始化之初就已经存在的

扇区 512个字节一个单位
格式化之后分为2个区:
一块存放文件元数据 – inode 存放权限、修改时间等
一块存放真正的数据 – block

inode的数量比block少,一个文件占一个inode,一个文件可以占用多个block

如果你的系统里面小文件过多,会造成你的inode耗尽 你的block还有
明明磁盘还有空间 但是创建不了文件了

inode和block的管理
inode位图 使用了标记已使用,未使用标记未使用
block位图 使用了标记已使用(或者说1),未使用标记0

查看inode的信息:stat 文件名

文件系统如何读到文件
1、根据文件名通过目录项知道它的inode号
2、通过inode号找到inode table里的inode
3、通过inode里的block指针,找到对应的数据块

查看文件系统用了多少inode 还剩多少inode:df -i
查看文件的inode号:ls -i 文件名

软硬链接

1、创建 – 》 ln (-s)
2、现象 --》 删除原文件两个链接文件的区别
3、原理 --》 硬链接其实就是新建目录项和原文件,指向同一个inode
软链接: 新创建了一个文件,只是这个文件的data数据指向原文件的路径
4、区别 --》
硬链接: 不能跨文件系统创建(每个文件系统都有自己独立的inode)
不能对目录进行链接

逻辑卷管理

LVM – Logical Volume Manager,逻辑卷管理(通俗理解为另一种分区)
屏蔽了底层磁盘布局,便于动态调整磁盘容量(动态扩容、快照(备份数据))
相对传统分区方式的有下列优点
空间利用率高
可以在线扩展容量
数据备份方便
可随意定义逻辑卷卷标
/boot分区用于存放引导文件,不能应用LVM机制

PV 物理卷
VG 卷组 很多个物理卷组成卷组
LV 逻辑卷

pv,vg,lv–》格式化–》mount

物理卷 卷组 逻辑卷
建立 pvcreate vgcreate lvcreate

扩容:加卷组加逻辑卷

RAID 磁盘阵列
RAID 用来进行磁盘冗余(容错),读写加速 --》提升IOPS

RAID0 RAID1 RAID5 RAID6

RAID0条带主要是用来提高速度的,某种特定场景下使用,三块盘当一块盘使用,但没有冗余,一块盘坏掉了,数据就丢失了。
RAID1:镜像条带,冗余,50%的空间利用率,两块盘,一块盘坏了,另一块盘还有数据,但是浪费资源,成本高。
RAID4:带校验的条带,(n-1)/n利用率,一块盘专门放校验码
RAID5:条带+分布校验,通过异或的形式,(n-1)/n的利用率,只允许坏一块盘,每块盘都放了部分的校验码。 特点,读写性能一般,读还好一点,写不好
RAID6:条带+分布校验+分布校验,(n-2)/n的利用率,允许坏掉两块盘。
RAID10:先RAID1再RAID0
RAID01:先RAID0再RAID1
Raid 10:至少需要4块硬盘,冗余一半的硬盘数量,但是硬盘的总数必须是大于或等于4的偶数(相当于每两块硬盘做一个Raid0,然后把各个Raid0做成一个Raid1)

冗余从好到坏:RAID1 RAID10 RAID 5 RAID0

性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10

单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5

我们会根据数据的存储和访问的需求,去匹配对应的RAID级别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值