磁盘及文件系统管理

摘要:
企业当中不同的文件系统设计是各不相同的。预留空间,在数据区域有一块数据区预留,防止磁盘空间用满后,供超级管理员来进行操作处理。超级块,里面包含了文件系统分为了多少个块组,每个块组的起止位置,因为超级快本身也是块,因此它也是存在某些的块组当中。
磁盘及文件系统管理
ext2ext3ext4xfsblkide2labelmkfsmke2fsdumpe2fstune2fsfsck硬链接软链接journal

欢迎来到 来到大浪涛天的博客

一、磁盘及文件系统管理

1. 计算体系简介:

  1. 在计算机系统里,最重要的三大组件是计算器,存储器,IO交互。
  2. 计算器主要是指cpu,目前cpu的主频很高,运行速度很快,而普通的IO设备读取又很慢,瓶颈非常严重。
  3. 内存的出现,在cpu和内存通过总线,cpu需要处理的数据提前从硬盘提前到内存,然后再转入cpu处理,cpu处理完成后再返回内存,内存再写入硬盘。
  4. 在一些比较高端的cpu上,如i5或者i7甚至i9,因为cpu内含多核心多线程,处理速度急速上升,内存也不能完全满足,因此在cpu上自带缓存器,1级缓存,2级缓存,3级缓存等等。
  5. 所以说目前的计算领域中硬件的瓶颈都是体现在IO设备上。
  6. IO主要是硬盘(块设备)和显示器键盘(字符设备)类的设备,其中硬盘因为是作为主存储器,在数据为王的时代里,显得尤为重要。

2. 设备类型

  1. 块设备(block):随机访问,数据交换单位是“块”。
  2. 字符设备(character):线性访问,数据交换单位是“字符”。

3. 磁盘分类

  1. IDE接口:并口,133M/S
  2. SCSI:并口,320M/S-640M/S
  3. SATA:串口,6gbps
  4. SAS:串口,6gbps
  5. USB:串口,480M/S
  6. SSD:特别是PCI-E接口的固态硬盘速度达到32gbps,每秒读写速度3000M,和机械硬盘不是一个时代的产品,会成为机械硬盘的替代品。好一点的SAS机械硬盘IOPS只有100多一点,而好一点的企业级固态硬盘
    可以达到数十万的IOPS。

4. 机械硬盘结构:

机械硬盘的磁盘结构
机械硬盘的磁盘结构

机械硬盘到目前都是采用最原始的技术,慢慢的肯定会沦落到磁带设备的类型,再过几年肯定会被固态硬盘替代。
  1. 磁道(track)
  2. 机械臂
  3. 扇区(sector),一个扇区512个字节
  4. 柱面(cylinder),不同盘面的同一个编号的磁道就叫柱面,真正的分区划分存储是基于柱面实现的,最靠外的柱面的性能最好,因此最外层磁道较长,单位时间内存储的数据也就越多。

5. 磁盘分区:MBR GPT

MBR(Master boot record)位于0扇区,MBR分为三部分:

  1. 446byters:bootoader,程序,引导启动操作系统的程序。
  2. 64byters:分区表,每16byters表识一个分区,所以一共只能标识4个分区。
  3. 2byters:MBR区域的有效标识,55AA为有效。

6. fdisk命令

6-1. fdisk 命令用法:

 fdisk [选项] <磁盘>    更改分区表
 fdisk [选项] -l <磁盘> 列出分区表
 fdisk -s <分区>        给出分区大小(块数)

fdisk 提供了一个交互式的接口来管理分区,包含一些子命令,分别用于不同的管理功能;所有操作均在内存中完成,没有直接同步到磁盘,直到使用w命令保存到磁盘上。
常用命令:

  n                    创建新分区
  d                    删除已有分区
  t                    修改分区类型
  w                    保存并退出
  q                    不保存并退出
  m                    查看帮助信息
  p                    打印分区信息

注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建新分区,内核可能在创建完成后无法直接识别;需要通知内核强制重读磁盘分区表:

查看内核是否识别分区
[root@test01 ~]# cat /proc/partitions
通知内核强制重读磁盘分区表
centos5:partprobe [device]
centos6,7:partx -a [device]; kpartx -af [device]
[root@test01 ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-2

7. 磁盘格式化

磁盘格式化分为:

  • 低级格式化:分区之前完成,磁盘硬件厂商在出厂时完成,用于划分磁道
  • 高级格式化:分区之后完成,创建文件系统

7-1. 文件系统

  1. 文件系统分为元数据区,数据区;
  2. 元数据区包含文件元数据inode(index node),大小、权限、属主属组、时间戳、数据块指针.....值得注意的是不包含文件名
  3. 因为inode的格式都是一样的,只是内容不一样,因此创建文件系统的时候会提前把inode都划分好,只是不包含数据,没有使用的inode就是空的,inode的大小都是一样的,大小单位是字节。
  4. 数据存在block中,block可以在分区的时候决定大小,文件存储按文件的大小一次提供多少block,如果block的使用是连续的表示磁盘良好,如果不连续代表存在碎片。
  5. 因为block是最小的存储单元,如果需要存储的数据都是小文件,那block设置小一点比较好,如果是大文件,则block可以相对设置大一些,这样性能比较好
  6. 单个文件的大小是有上限的,原因是inode里包含的数据块的指针存储空间是有限的,当单个文件越大,数据块的指针就越多,这样当大到数据块的指针空间存不下指针后,这样就是大文件的存储上限。
  7. 企业当中不同的文件系统设计是各不相同的。
  8. 符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径,都是不占用block的数据块空间的
  9. 设备文件:存储数据指针的空间当中存储的是设备的主设备号和次设备号,都是不占用block的数据块空间的
  10. 任何数据块均必须要元数据来指向,因此inode必须要大于block的3-4倍(具体要根据历史经验来分析),不然inode占用完了,但是block却只用了1/3,剩余的block因为缺少inode指向而无法使用。
  11. 预留空间,在数据区域有一块数据区预留,防止磁盘空间用满后,供超级管理员来进行操作处理。
  12. 位图索引,在数据区有一段位置存放位图索引,位置对应每一个数据块,而且只标志0(未使用)-1(已使用)
  13. 文件系统创建的时候一般会平均分成多个逻辑块组,每个块组包含自己的元数据区和数据区,当一个块组无法存下文件,可以延伸到下一个块组来取block。
  14. 超级块,里面包含了文件系统分为了多少个块组,每个块组的起止位置,因为超级快本身也是块,因此它也是存在某些的块组当中。
  15. 每个块组里都包含了一个数据块描述符,数据块描述符包含了块组内含的所有块以及元数据。块组不一定有超级快,但是一定有数据块描述符。
  16. 每个元数据都包含了一个编号,ls -i可以看到每个元数据的编号,需要查看元数据内容则需要stat 文件名。
  17. 目录其实是路径的映射,比方/var/log/messages的查找过程:
    1. 首先定位/的inode,这是固定的,通过/的inode可以在数据区中找到/的数据块
    2. /的数据块里面包含了所有和/相连接的目录及对应的inode,在/的数据块中定位到/var对应的inode
    3. 通过/var的inode在元数据区中定位到了/var的数据块,/var的数据块中包含了所有和/var对应的下一级目录以及相应的inode,进而找到/var/log/的inode
    4. 通过/var/log的inode在元数据区中定位到了/var/log的数据块,/var/log的数据块中包含了所有和/var/log对应的下一级目录以及相应的inode,进而找到/var/log/messages的inode.
    5. 通过/var/log/messages的inode在元数据区中定位到了/var/log/messages的数据块,此时messages是一个文件,因此inode里包含了所有存储messge这个文件的block的数据块指针,通过这些指针定位到具体数量及位置的block。

7-2. VFS:virtual file system

Linux为了支持各种文件系统,在真实的文件系统上面抽象了一层虚拟层,也就是VFS层,这样用户存储文件因为有VFS做转化不需要关心下层的文件系统。

  • Linux支持的文件系统有:ext2、ext3、ext4、xfs、reiserfs、brrfs
  • 光盘文件系统:iso9660
  • 网络文件系统:nfs、cifs
  • 集群文件系统: gfs2、ocfs2
  • 内核级分布式文件系统:ceph
  • Windows文件系统:vfat、ntfs
  • 伪文件系统:proc、sysfs、tmpfs、hugepagefs
  • unix文件系统: ufs、ffs、jfs
  • 交换文件系统: swap
  • 用户空间的分布式文件系统:mogilefs、moosefs、glusterfs

7-3. 文件系统管理工具:

7-3-1. 创建文件系统的工具:mkfs

mkfs.ext2、mkfs.ext3、mkfs.ext4、mkfs.xfs、mkfs.vfat

7-3-2. ext系列文件系统专用管理工具:mke2fs

mke2fs语法:

mke2fs [options] device

mke2fs选项如下:

-t {ext2|ext3|ext4};指明要创建文件系统的类型
    mkefs.ext4=mkfs -t ext4=mke2fs -t ext4
-b {1024|2048|4096}:指定文件系统的块大小
-L LABLE:指明卷标
-j:创建具有日志功能的文件系统ext3
    mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3
-i#:指明inode与字节的比率,即多少字节创建一个inode
-N#:直接指明要给此文件系统创建的inode的数量
-m#:指定预留的空间,百分比
-O :以指定的特性创建目标文件系统

7-3-3. ext系列文件系统专用管理工具:e2label

卷标的查看与设定
查看:e2label device
更改:e2label device LABLE
确认: blkid device

7-3-4. ext系列文件系统专用管理工具:tune2fs

查看或修改ext系列文件系统的某些属性,注意块的大小一旦创建文件系统后便无法再次修改
语法:

tune2fs [option] device

修改指定文件系统的属性:

-j:ext2-ext3
-L LABLE:修改卷标
-m# :更改预留的空间,百分比
-O:开启或关闭某种特性

7-3-5. ext系列文件系统专用管理工具:dumpe2fs

文件系统的具体查看:

查看:dumpe2fs  -h /dev/sdb (-h 查看粗略信息)
dumpe2fs   /dev/sdb (不带h是显示详细信息)

7-3-6. 检测及修复文件系统的工具:fsck

fsck.ext2、fsck.ext3、fsck.ext4、fsck.xfs、fsck.vfat

因进程意外中止或系统奔溃等原因导致既定操作非正常终止时可能导致文件损坏,此时应该检测并修复文件系统,建议离线进行。
ext系列文件系统的专用修复工具:e2fsck - check a Linux ext2/ext3/ext4 file system
语法:

e2fsck [option] device

选项:

-y:对所有问题自动回复为yes
-f:即使文件系统处于clean状态,也强制进行检测

LINUX的通用修复工具:fsck - 检查并修复Linux文件系统
语法:

fsck [option] device

选项:

-t fstype:指定文件系统,不指定也可以
-a:自动修复所有的错误,不建议使用,fsck修复就是删除日志区所有未完成写入的文件,可能会丢数据导致欲哭无泪
-r:交互式修复错误

7-3-7. blkid

blkid - locate/print block device attributes
用法:

blkid device

定位设备

blkid -L LABLE:通过卷标来定位设备
blkid -U UUID:通过UUID来定位设备

7-3-8. 查看文件系统属性的工具

dump2fs、tune2fs

7-4. 链接文件

链接文件是:指向一个文件的不同路径,分为硬链接和软链接

7-4-1. 硬链接:指向同一个inode的多个文件路径

  1. 目录不支持硬链接(防止死循环)
  2. 硬链接不能跨文件系统,因为硬链接和原文件具有相同的inode,而不同的文件系统inode分配不同
  3. 创建硬链接会增加inode的引用计数。
7-4-1-1. 创建方法
ln src link_file

7-4-2. 软链接:符号链接,指向一个文件路径的另一个文件

  1. 符号链接与原文件是两个相互独立的文件,各有各自的inode,对原文件创建符号链接不会增加引用计数。
  2. 支持对目录创建符号链接,可以跨文件系统
  3. 删除符号链接文件不影响原文件,但是删除原文件,符号指定的路径不存在,此时会变成无效链接
  4. 因为符号链接只是提供一个指向另一个文件的路径,因此对另一个文件内容不识别,只要另外一个文件的路径存在就可以了
[root@test01 ~]# cp /etc/fstab /tmp/fstab
[root@test01 ~]# ln -s /tmp/fstab fstab.slink
[root@test01 ~]# ls -l fstab.slink 
lrwxrwxrwx 1 root root 10 6月   3 21:54 fstab.slink -> /tmp/fstab
[root@test01 ~]# rm -f /tmp/fstab 
[root@test01 ~]# ls -l fstab.slink 
lrwxrwxrwx 1 root root 10 6月   3 21:54 fstab.slink -> /tmp/fstab(红而且闪,代表符号链接无效)
[root@test01 ~]# cp /etc/issue /tmp/fstab
[root@test01 ~]# ls -l fstab.slink 
lrwxrwxrwx 1 root root 10 6月   3 21:54 fstab.slink -> /tmp/fstab(正常状态)

7-5. 文件系统的journal日志功能

Linux文件系统中除了ext2不具备日志功能,其他的文件系统都有日志功能,支持日志功能的文件系统在创建文件系统的时候会在存储空间划分一块区域作为日志区域,文件写入的过程如下:

  1. 文件写入,先在日志区域写入一个inode
  2. 数据块区域先8个块,8个块的分配存储,当存储完成后,日志区域写入的inode移动到元数据区
  3. 当还没存储完成,由于断电或其他问题导致无法存储的时候,日志区域的inode会持续保存
  4. 待重新开机后文件系统会自动扫描日志区域的inode,看能否续存,如果不能则会自动删除无效数据
  5. 带有journal日志功能的文件系统相对来说更安全,但是因为inode要写入两次,性能相对来说较差一些

免责声明:文章转载自《磁盘及文件系统管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jfinal拦截器301跳转ios 编译openssl支持arm64(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

PbootCMS后台增加轮播图自定义分组名称

我们知道,在PbootCMS后台的旋转木马图形模块中,当添加新的旋转木马图时,您不能自己选择组。相反,您可以自动创建组,例如组1、组2和组3。这显然对客户的体验不友好,而且您无法直观地知道在网页的哪个位置使用了旋转木马图。让我们分享一下如何启用PbootCMS后台来添加、删除和修改旋转木马图形组。...

.NET5 ABP框架(一)

授权-ABP可以以声明的方式检查权限。如果发生异常,ABP将自动记录并向客户机返回适当的结果。默认情况下,ABP使用Log4Net写入日志。当然,我们也可以通过修改配置来使用其他日志框架。除了本示例中显示的ABP的优点之外,ABP还提供了一个健壮的基础架构和应用程序模型。...

macOS添加/移除安全证书

1.添加证书在finder中搜索钥匙串,点击钥匙串进入到钥匙串访问页面点击左侧默认钥匙串的登录菜单,将要安装的证书拖入到右侧证书列表的空白区域刚拖入的证书logo右下角会有个,右键点击进入显示简介弹窗设置信任折叠列表中的使用此证书时为“始终信任”关闭显示简介弹窗时会要求输入电脑登录密码至此,如果证书logo右下角出现,则表示证书安装成功2.删除证书选中要删除...

rabbitmq 命令行与控制台

命令行和控制台rabbitmqctlstop_应用程序关闭应用程序rabbitsqctlstart_应用程序打开应用程序rabbitmqctlstatus节点状态rabbitcqctlad_用户用户名密码:添加用户rabbittqctllist_Users列出所有用户rabbit...

Jenkins运行shell脚本权限解决办法

在执行脚本加上如下命令打印就可以看echo"当前操作人"whoamiecho"当前目录"pwd解决办法在Jenkins中运行shell脚本经常遇到权限问题,解决起来非常麻烦,我们索性来个终极解决办法,就是给jenkins一个root权限,这样就不会再遇到权限问题了。...

利用 druid 解析器解析SQL

最近参与一个开源项目,一个功能的实现,用到了druid解析器来解析SQL,记录下如果使用druid来解析SQL,实现对SQL的拦截改写。onduplicate部分可以使用下面的语句获取:Listdku=insert.getDuplicateKeyUpdate();获得了这些,就而已重组得到原始SQL语句,并且对其进行各种改写。...