Ceph学习 - 1.存储知识

1.存储基础

学习目标:这一节,我们从基础知识、文件系统、小节三个方面来学习。

1.1 基础知识

1.1.1 存储基础

我们知道,对于一个计算机设备来说,其存储功能是非常重要的,也就是说,任何一台电脑上,必须包含一个设备 ---- 磁盘
这个磁盘就是用于数据存储的目的的。

常见的存储设备接口:
DAS设备:IDE、SATA、SCSI、SAS、USB
	无论是哪种接口,它都是存储设备驱动下的磁盘设备,而磁盘设备其实就是一种存储,这种存储是直接接入到主板总线上去的。
	- 基于数据块来进行访问。
	- 基于服务器方式实现互联网访问,操作简单、成本低。
NAS设备:NFS、CIFS、FTP
	几乎所有的网络存储设备基本上都是以文件系统样式进行使用,无法进一步格式化操作。
	- 基于文件系统方式访问。
	- 没有网络区域限制,支持多种协议操作文件。
SAN:scsi协议、FC SAN、iSCSI
	基于SAN方式提供给客户端操作系统的一种块设备接口,所以这些设备间主要是通过scsi协议来完成正常的通信。
	scsi的结构类似于TCP/IP协议,也有很多层,但是scsi协议主要是用来进行存储数据操作的。既然是分层方式实现的,那就是说,有部分分层可以被替代。比如将物理层基于FC方式来实现,就形成了FCSAN,如果基于以太网方式来传递数据,就形成了iSCSI模式。
	- 基于数据块来实现访问。
	- 不受服务器约束,通过存储池实现资源的高效利用,扩展性好。

在这里插入图片描述

1.1.2 存储使用

对于存储的使用,我们需要借助于文件系统的方式来实现,而存储在使用前往往需要进行格式化。

1.2 文件系统

1.2.1 简介

文件系统的基本数据单位是文件,它的目的是对磁盘上的文件进行管理,那组织的方式不同,就会形成不同的文件系统。Linux文件系统会为每个文件分配两个数据结构:索引节点(index node)和目录项(directory entry),它们主要用来记录文件的元信息和目录层次结构。

索引节点
1. 用来记录文件的元信息,比如 inode 编号、文件大小、访问权限、创建时间等信息。
2. 索引节点是文件的唯一标识,它们之间一一对应,也同样都会被存储在硬盘中,所以索引节点同样占用磁盘空间。
3. 用户查找的时候,会根据 inode 的信息, 找到对应的数据块,我们可以将 inode 理解为数据块的路由信息。

目录项
1. 用来记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。多个目录项关联起来,形成目录结构。
2. 它与索引节点不同,目录项是由内核维护的一个数据结构,不存放于磁盘,而是缓存在内存。
3. 目录项和索引节点的关系是多对一。

1.2.2 数据存储

数据块
1. 磁盘读写的最小单位是扇区,扇区的大小只有 512B 大小,文件系统把多个扇区组成了一个逻辑块,每次读写的最小单位就是逻辑块(数据块),Linux中的逻辑块大小为 4KB,也就是一次性读写 8 个扇区,这将大大提高了磁盘的读写的效率。
2. 磁盘想要被文件系统使用,需要进行格式化,此时磁盘会被分成三个存储区域
	2.1 超级块,用来存储文件系统的详细信息,比如块个数、块大小、空闲块等等。
	2.2 索引节点区,用来存储索引节点。
	2.3 数据块区,用来存储文件或目录数据。

1.2.3 存储应用的基本方式

在这里插入图片描述

为了加速文件的访问,通常会把相关信息加载到内存中,但是考虑到内存的容量限制,它们加载进内存的时机是不同的:
1. 超级块:当文件系统挂载时进入内存。
2. 索引节点区:当文件被访问时进入内存。
3. 数据块:文件数据使用的时候进入内存。

1.2.4 文件存储

文件的数据是要存储在硬盘上面的,数据在磁盘上的存放方式,有两种方式:

连续空间存放方式
1. 同一个文件存放到一个连续的存储空间
2. 一旦文件删除可能导致磁盘空间碎片
3. 文件内容长度扩展不方便,综合效率是非常低的。

非连续空间存放方式
1. 同一个文件存放到一个不连续的存储空间,每个空间会关联到下一个空间
2. 可以消除磁盘碎片,可大大提高磁盘空间的利用率,同时文件的长度可以动态扩展。
3. 查找效率低,需要额外的资源消耗。

在这里插入图片描述

1.3 小结

参考学习:kubernetes存储解决方案Ceph

相关推荐

  1. Ceph存储体系架构?

    2024-04-07 14:26:03       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 14:26:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 14:26:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 14:26:03       87 阅读
  4. Python语言-面向对象

    2024-04-07 14:26:03       96 阅读

热门阅读

  1. Openstack(T)部署ceph集群 ceph-14.2.22-nautilus

    2024-04-07 14:26:03       35 阅读
  2. WPF中嵌入3D模型通用结构

    2024-04-07 14:26:03       35 阅读
  3. 【2023年软考架构师】案例真题回忆版

    2024-04-07 14:26:03       35 阅读
  4. vite配置postcss

    2024-04-07 14:26:03       35 阅读
  5. AI创业蓝海:十大领域解锁未来商机

    2024-04-07 14:26:03       30 阅读
  6. docker用来解决什么问题

    2024-04-07 14:26:03       41 阅读
  7. vue3项目中使用getCurrentInstance获取实例和dom的问题

    2024-04-07 14:26:03       30 阅读
  8. Linux 系统调用

    2024-04-07 14:26:03       36 阅读
  9. 前2个月湖南外贸进出口总值810.6亿元

    2024-04-07 14:26:03       35 阅读
  10. MyBatis实战:如何将拼接的SQL打印到日志

    2024-04-07 14:26:03       37 阅读
  11. 24双非考研哈尔滨工程大学计算机(@程程笔记)

    2024-04-07 14:26:03       71 阅读
  12. [Pytorch][缘来如此]:PyTorch中的广播机制

    2024-04-07 14:26:03       31 阅读
  13. 【软设】知识点速记3

    2024-04-07 14:26:03       30 阅读