linux专题(五)存储结构与管理磁盘

简介
本文主要用于学习linux中的 FHS文件系统层次化标准、udev硬件命名规则以及硬盘设备原理 ,本文的目录结构与参考目录大致相同,但是会包含一些实践,

主要参考 《Linux就该这么学》

及命令大全https://www.linuxcool.com/

一切从“/”开始
Linux中一切文件都是从“根目录/”开始的,并且按照文件系统层次化标准(FHS)存放文件,并且定义了常见目录的用途

FHS是存储文件是需要遵守的规约,指导用户应该把文件保存到什么位置,以及应该在何处找到所需文件

Linux系统中常见的目录名称以及相应内容

目录名称 应放置文件的内容
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户主目录
/bin 存放单用户模式下还可以操作的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的“共享”临时目录
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放经常变化的文件,如日志
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里
物理设备的命名规则
常见的硬件设备及其文件名称

硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-z]
virtio设备 /dev/vd[a-z]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0
主分区或扩展分区的编号从1开始,到4结束;

逻辑分区从编号5开始

image

硬件设备由大量的扇区组成,每个扇区容量为512字节,第一扇区最重要,因为保存着主引导记录和分区信息

如下: 主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区

image

每块硬盘最多只能创建出4个分区?明显不够用也不合情理

将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区

也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针—一个指向另外一个分区的指针。 然后可以从扩展分区中创建出无数个逻辑分区。

文件系统
用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。

Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。

Ext2:早期版本,沿用Unix文件系统的设计标准,不包含日志功能,数据丢失可能性很大

Ext3:Ext2升级版,添加了日志功能,硬盘容量较大时宕机,恢复时间会很长,并且不能保证资料百分百不丢失

Ext4:Ext3改进版,支持容量达到1EB,且能够有无限多的子目录,能够批量分配block块,从而提高读写效率

XFS:高性能的日志文件系统,优势在于宕机后快速恢复可能被破坏文件,最大支持18EB容量

在拿到了一块新的硬盘存储设备后,先需要分区,然后再格式化文件系统,最后才能挂载并正常使用。硬盘的分区操作取决于您的需求和硬盘大小;也可以选择不进行分区,但是必须对硬盘进行格式化处理。

就像拿到了一张未裁切的完整纸张那样,首先要进行裁切以方便使用(分区),接下来在裁切后的纸张上画格以便能书写工整(格式化),最后是正式的使用(挂载)。

由于硬盘中需要保存的数据太多了,所以会有一个名为super block的硬盘地图,里面记录着整个文件系统的信息。每个文件的权限与属性记录在inode中,每个文件占有一个独立的inode表格,表格默认大小为128字节,记录如下内容

该文件的访问权限(read、write、execute);

该文件的所有者与所属组(owner、group);

该文件的大小(size);

该文件的创建或内容修改时间(ctime);

该文件的最后一次访问时间(atime);

该文件的修改时间(mtime);

文件的特殊权限(SUID、SGID、SBIT);

该文件的真实数据地址(point)。

文件的时机内容保存在block快中(一般是1KB,2KB或4KB)

,一个inode的默认大小仅为128字节,记录一个block则消耗4字节。当文件的inode被写满后,Linux系统会自动分配出一个block块,专门用于像inode那样记录其他block块的信息,这样把各个block块的内容串到一起,就能够让用户读到完整的文件内容了。对于存储文件内容的block块,有下面两种常见情况(以4KB的block大小为例进行说明)。

情况1:文件很小(1KB),但依然会占用一个block,因此会潜在地浪费3KB。

情况2:文件很大(5KB),那么会占用两个block(5KB-4KB后剩下的1KB也要占用一个block)。

Linux为了让用户读取或写入文件是不关系底层硬件结构,所以提供一个VFS的虚拟文件接口如下

image

挂载硬件设备
当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”

mount
格式: mount 文件系统 挂载目录

简介: 挂载文件系统 。 挂载是在使用硬件设备前所执行的最后一步操作。只需使用mount命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。

mount命令中的参数以及作用

参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型
如果要挂载的是一个网络存储设备,名称可能便来便去,可以使用UUID来进行挂载

使用命令blkid [设备名]查询

[root@zhao56 /]# blkid
/dev/vda1: UUID="6858667d-1005-4b38-8bdc-9836ce9253e0" TYPE="ext4"
注:上述命令系统重启后会失效,如果需要永久有效则需要修改/etc/fstab文件

UUID
[root@zhao56 dev]# cat /etc/fstab

/etc/fstab

Created by anaconda on Fri May 21 03:52:28 2021

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=6858667d-1005-4b38-8bdc-9836ce9253e0 / ext4 defaults 1 1
[root@zhao56 dev]#
挂载信息的指定填写格式中,各字段所表示的意义

字段 意义
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
注: 网络存储设备,可以加上_netdev参数 如defaults,_netdev,可以在系统联网成功后尝试加载网络存储设备

df
格式: df -h

简介: 查看当前系统中设备的挂载情况

[root@zhao56 dev]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 480K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 3.8G 34G 10% /
tmpfs 184M 0 184M 0% /run/user/0
umount
格式: umount [设备文件/挂载目录]

简介:卸载设备或文件系统

lsblk
简介: 用于已挂载的磁盘空间使用情况

[root@zhao56 dev]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /

posted @ 2021-07-16 14:35  zhao56  阅读(158)  评论(0编辑  收藏  举报