存储相关概念

阅读更多

Cinder

提供块存储(Block Storage),类似于Amazon的EBS块存储服务,目前仅给虚机挂载使用。

它通过整合后端多种存储,用API接口为外界提供块存储服务,主要核心是对卷的管理,允许对卷,卷的类型,卷的快照进行处理。

Cinder通过添加不同厂商的指定drivers来为了支持不同类型和型号的存储。目前能支持的商业存储设备有EMC 和IBM的几款,也能通过LVM支持本地存储和NFS协议支持NAS存储(例如把远程机器上export出来的目录mount到你的机器上mount 9.114.*.*:/root/Images/QCOW2 /root/Images),所以Netapp的NAS应该也没问题,好像华为也在努力中。我前段时间还在 Cinder的blueprints看到IBM的GPFS分布式文件系统,在以后的版本应该会添加进来。

缺点: 不支持FC SAN,另外单点故障隐患没解决。

SWIFT

提供对象存储 (Object Storage),在概念上类似于Amazon S3服务,不过swift具有很强的扩展性、冗余和持久性,也兼容S3 API. Swift作为对象存储已经很成熟,连CloudStack也支持它。

 

Swift出现的领域有4个:

1.网盘。Swift的对称分布式架构和多proxy多节点的设计导致它从基因里就适合于多用户大并发的应用模式,最典型的应用莫过于类似Dropbox的网盘应用。

2.IaaS公有云。公有云规模较大,更多的遇到大量虚机并发启动这种情况,所以对于虚机镜像的后台存储具体来说,实际上的挑战在于大数据(超过G)的并发读性能,Swift 在OpenStack中一开始就是作为镜像库的后台存储,经过RACKSpace上千台机器的部署规模下的数年实践,Swift已经被证明是一个成熟的选 择。
3.备份归档。热归档能够保证应用归档数据能够在分钟级别重新获取,和传统磁带机归档方案中的数小时而言,是一个很大的进步。

4. 移动互联网和CDN。如果使用Swift,云存储就可以直接响应移动设备,不需要专门的服务器去响应这个HTTP的请求,也不需要在数据传输中再经过移动设备上的文件系统,直接是用HTTP 协议上传云端。


Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack 开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift 构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和 对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

Swift 采用层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象),每层节点数均没有限制,可以任意扩展。 这里的账户和个人账户不是一个概念,可理解为租户,用来做顶层的隔离机制,可以被多个个人账户所共同使用;容器代表封装一组对象,类似文件夹或目录;叶子 节点代表对象,由元数据和内容两部分组成.

 

存储相关命令
fdisk -l  查看系统的硬盘和硬盘分区情况。

df 命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。-a 全部文件系统列表 -l 只显示本地文件系统
LVM
LVM是logical volume manager 的缩写,叫逻辑卷管理,是一种用来管理LV的工具,它是Linux环境下对磁盘分区进行管理的一种机制。我们所用到的RAID是不提供存储数据空间的动态增长和收缩的,假如磁盘的空间已经满了而你又想写入一些数据那只能再去手动添加一块物理硬盘了,而LV是一种可以动态增长和收缩的逻辑卷,它是以块设备作为基础的,当然也可以以raid作为基础的。LV的构建架构是:PD-->PV-->VG--->LV,PD是最底层的物理设备,PV是物理卷,VG是逻辑卷组,LV就是逻辑卷。PV有一些常用的命令:pvcreate,pvscan,pvdisplay,pvmove,pvremove。VG有一些常用的命令:vgcreate,vgdisplay,vgscan,vgremove。LV有一些常用的命令:lvcreate,lvdisplay,lvextend,lvreduce。

存储相关概念_第1张图片
http://img.linux.net.cn/data/attachment/album/201406/18/134408sa12dauefffyszfg.jpg


mount

mount是Linux下的一个命令,它可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。

 

网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage)、网络连接式存储(NAS:Network Attached Storage)和存储网络(SAN:Storage Area Network)。

 

DAS: 将存储设备通过SCSI 接口或光纤通道直接连接到一台计算机上。

 

NAS: 通过网线连接的磁盘阵列,具备磁盘阵列的所有主要特征:高容量、高效能、高可靠。NAS设备在数据必须长距离传送的环境中可以很好地发挥作用。NAS能够满足那些希望降低存储成本但又无法承受SAN昂贵价格的中小企业的需求,具有相当好的性能价格比。

什么时候需要NAS?    首先,看这个单位的核心业务是否建立在某种信息系统上,对数据的安全性要求很高;其次,看该信息系统是否已经有或者将会有海量的数据需要保存,并且对数据 管理程度要求较高;最后,还可以判断一下网络中是否有异构平台,或者以后会不会用到。如果上述有一个问题的答案是肯定的,那么就有必要重点考虑使用NAS 设备来实现集中存储与备份。

 

SAN:指存储设备相互连接且与一台服务器或一个服务器群相连的网络。其中的服务器用作 SAN 的接入点。它依托光纤通道(Fibre Channel)为服务器和存储设备之间的连接提供更高的吞吐能力、支持更远的距离和更可靠的连通。SAN的组成通常包括服务器(主机)、存储设备(磁带或者磁盘阵列)以及桥接器和多路复用器,并且所有这些设备都连接在光纤通道的交换机上。SAN主要是高速信息存储,NAS偏重文件共享。NAS有文件操作和管理系统,而SAN却没有,SAN和NAS相比不具有资源共享的特征。

 

网络存储通信中使用到的相关技术和协议包括 SCSI 、RAID 、iSCSI 以及光纤信道。

SCSI(Small Computer System Interface): 一直以来 SCSI 支持高速、可靠的数据存储。现在的硬盘从接口方面分,可分为IDE硬盘与SCSI硬盘。SCSI硬盘主要用于中高端服务器与工作站上。IDE硬盘主要用于个人电脑。

 

RAID(独立磁盘冗余阵列): 指的是一组标准,提供改进的性能和/或磁盘容错能力。具有两个硬盘位的NAS可以组建RAID 0和RAID 1系统,其中RAID 0系统具有较好的磁盘性能,RAID 1系统具有较好的安全性。具有4个硬盘位的NAS则可以组建更高级的RAID 5系统,在保障数据安全的同时还能提高磁盘性能。

 

光纤信道:是一种提供存储设备相互连接的技术,支持高速通信(将来可以达到 10Gbps )。与传统存储技术,如 SCSI 相比,光纤信道也支持较远距离的设备相互连接。

 

iSCSI :技术支持通过 IP 网络实现存储设备间双向的数据传输。其实质是使 SCSI 连接中的数据连续化。通过 iSCSI,网络存储器可以应用于包含 IP 的任何位置。而作为 Internet 的主要元素,IP 几乎无所不在。

 

SSD的存储成本大约是20¥每GB左右,SAS硬盘的存储成本约在5-6¥每GB,SATA盘的每GB成本不到1¥。

SSD: 固态硬盘,目前的硬盘(ATA 或 SATA)都是磁碟型的,数据就储存在磁碟扇区里,固态硬盘数据就储存在芯片里。

SAS: 串行连接SCSI (Serial Attached SCSI,缩写为SAS) SAS是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。

SATA: 全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口)

IDE: 把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。

 

 

案例1:

创建LV(类windows分区) --> 创建文件系统(类windows格式化) --> mount

lvm vgcreate  ibmpkvm_vg_vol /dev/sdb6

lvm lvcreate -L 200G ibmpkvm_vg_vol

mkfs.ext4 -L /var/lib/nova/instances/ /dev/ibmpkvm_vg_vol/lvol0

mount /dev/ibmpkvm_vg_vol/lvol0  /var/lib/nova/instances/

 

案例2: vm的/home空间用完,attach 一个volume 给home文件夹使用。

步骤1. 创建Linux LVM:

fdisk -l

fdisk /dev/sdc

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-2610, default 1): "enter"

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): "enter"

Using default value 2610

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

步骤2.  create pv -->  extend vg -> extend lv -> resize2fs 

    1  /sbin/pvcreate /dev/sdc1

    2  vgdisplay

    3  /sbin/vgextend vg0 /dev/sdc1

    4  pvscan

    5  lvdisplay

    6  lvextend /dev/vg0/home /dev/sdc1

    7  vgdisplay

    8  lvdisplay

    9  resize2fs /dev/vg0/home

   10  df -hl

 

案例3:  vm的硬盘空间不足, 增加硬盘空间后,

1. df -hl

      /dev/sdc1 99% /data

2. umount /data

     如果无法umount 用lsof | grep /data 找出对应的ps 并kill -9

3. umount /dev/sdc1

4. parted /dev/sdc

    resize  ->  1

5. mount /dev/sdc1

6. resize2fs /dev/sdc1

 

查看各个目录所占的磁盘大小:

du -h --max-depth=1

 

参考:
OpenStack里的三种存储http://www.csdn.net/article/2013-03-29/2814703

百度百科:NAS网络存储

https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-adding-a-new-disk/

你可能感兴趣的:(存储相关概念)