常见存储类型

常见存储类型

  • 存储
    • 常见的存储方式
  • 常见的存储平台
    • samba
    • OSS
    • Ceph
    • 利用oss实现文件的上传和下载

存储

存储就是将数据保存在计算机或者是其他的存储介质(磁盘和磁带)上。存储分类如下如所示:
常见存储类型_第1张图片

常见的存储方式

常见的存储方式如下:
DAS:直接连接存储 (DAS:Direct Attached Storage),是指将存储设备通过SCSI接口或FC接口直接连接到一台计算机上。DAS不算是网络存储,因为只有它所挂载的主机才可访问它。也就是说,服务器发生故障时,连接在服务器上的DAS存储设备中的数据暂时不能被存取。
NAS:网络连接存储 (NAS:Network Attached Storage),是指将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS有文件系统和IP地址,可以类似的理解为网上邻居的共享磁盘。常用来文档共享、图片共享、电影共享等等
SAN:存储区域网络(SAN:Storage Area Network),目前的SAN存储有2种:一是基于光纤通道的FC SAN;二是基于以太网的IP SAN(也就常说的iSCSI)。
FC SAN通过光纤交换机连接到主机(HBA卡),即连接到光纤交换机的主机都可以访问该存储;iSCSI则依靠以太网上,更类似于NAS
三者区别如下:
常见存储类型_第2张图片
常见的存储类型
常见的存储类型有块存储、文件存储、对象存储等。其中块存储的存储对象是磁盘阵列、硬盘等块设备,文件存储的存储对象是文件系统,如ftp、nfs服务器等,对象存储的存储对象是服务器(内置大容量的硬盘),基于对象存储的设备就是对象存储设备,简称OSD

块存储、文件存储、对象存储,其本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景

这里简单介绍一下三种存储类型的区别:
常见存储类型_第3张图片

常见的存储平台

samba

samba可以实现不同操作系统之间主机上文件的共享,默认开放TCP协议的445端口,其工作流程可分为四个阶段:

1.协议协商:客户端向samba服务器发送请求报文,并将可用的smb协议版本一起发送,服务器收到请求后列出希望使用的协议版本,选择最优的smb类型,若没有可使用的smb类型,则通信结束

2.建立连接:确定smb版本之后,客户端向samba服务器发起一个用户或者是共享的认证,即发送一对用户名密码或者是一个密码到samba服务器,服务器发送应答报文来接受或者是拒绝本次连接

3.访问共享资源:客户端和服务器建立连接之后,客户端会发送请求报文并列出请求的资源名称,服务器收到请求后返回一个应答报文来接受或者是拒绝连接

4.断开连接:当建立了资源共享的连接之后,smb客户端就可以访问共享的资源了,默认是长连接,可以通过close SMB断开连接
samba协议相关原理

OSS

采用对象存储的类型来提供存储服务,是阿里云提供的海量、安全、低成本、高持久的云存储服务。具有高可用、稳定、异地容灾、安全防护、数据冗余等功能

因为对象存储的对象是对象,没有层级结构的概念,为了方便查看,会根据文件名虚拟出相应的文件夹。因此不能够做到某个文件夹下的文件的权限管理,若想要实现权限的管理,则要通过不同的bucketname去创建不同的bucket对象,然后用该bucket对象去创建不同权限的存储空间,从而实现该存储空间的权限控制

Ceph

Ceph是一个分布式存储系统,支持块存储、文件存储、对象存储的方式。具有高可用、高扩展性、高性能等特点,其在存储的同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。同时,由于采用了CRUSH、HASH等算法,使得它不存在传统的单点故障,且随着规模的扩大,性能并不会受到影响。

Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下:
1.Client客户端:负责存储协议的接入,节点负载均衡。
2.MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map。
3.MDS元数据服务:负责保存文件系统的元数据,管理目录结构。
4.OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。

利用oss实现文件的上传和下载

环境准备:

pip install oss2

上传下载功能的实现:

import oss2  #导入oss库
auth = oss2.Auth('LTAI4FngNLDXu1rsqcUV2W6H', 'cJ8pcwG9r9WKPqKHqYQuEtdlMzULc4')   ##实例化一个身份认证的AUTH对象
bucket = oss2.Bucket(auth, 'http://oss-cn-shenzhen1-internal.aliyuncs.com', 'test-3vj-devops')   ##基于AUTH对象和域名以及bucket用户实例化一个bucket对象
###创建存储空间,并设置存储空间为私有读写权限,权限可通过参数设置
bucket.create_bucket(oss2.models.BUCKET_ACL_PRIVATE)
# 上传文件,参数一为存储空间的路径,参数二为本地路径
bucket.put_object_from_file('abc/efg/test1.txt', r'C:\Users\huangxinyi\Desktop\oss\test.txt')
# 下载文件,参数一为存储空间的路径,参数二为本地路径,必须要确保本地有该文件
bucket.put_object_from_file('abc/efg/test1.txt', r'C:\Users\huangxinyi\Desktop\oss\test.txt')
# 删除文件
bucket.delete_object('abc/efg/test.txt')

你可能感兴趣的:(学习笔记,操作系统,大数据)