Glusterfs|ceph实现分布式存储

分布式存储

存储概述

存储介绍

  • 存储:就是存放数据的介质

  • 在这里插入图片描述

  • 如果web服务器家目录空间不够,可以通过添加硬盘使用LVM进行扩容,但硬盘数量存在上限;也可以使用远程存储共享进行扩容

存储分层

  • 一个新的硬盘在linux系统里使用一般来说就三步:(分区)-格式化-挂载,才能使用

linux上如何挂载ntfs格式的移动硬盘?

linux内核支持ntfs,但centos7系统没有编译该功能,解决方法:

  • 重新编译内核,在内核中加上ntfs支持。但该方法不推荐,因为编译内核会造成内核运行不稳定,没有过硬的实力不要尝试)

  • 参考内核模块
    [root@server1 ~]# lsmod
    Module                  Size  Used by
    snd_seq_midi           13565  0 
    snd_seq_midi_event     14597  1 snd_seq_midi
    ppdev                  17671  0 
    crc32_pclmul           13133  0 
    ghash_clmulni_intel    13273  0 
    vmw_balloon            18094  0 
    aesni_intel           189456  0 
    btusb                  41520  0 
    lrw                    13286  1 aesni_intel
    gf128mul               15139  1 lrw
    btrtl                  12945  1 btusb
    btbcm                  14040  1 btusb
    glue_helper            13990  1 aesni_intel
    btintel                15709  1 btusb
    ablk_helper            13597  1 aesni_intel
    cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
    bluetooth             548787  5 btbcm,btrtl,btusb,btintel
    snd_ens1371            25076  0 
    snd_rawmidi            31553  2 snd_ens1371,snd_seq_midi
    snd_ac97_codec        130479  1 snd_ens1371
    ac97_bus               12730  1 snd_ac97_codec
    snd_seq                62774  2 snd_seq_midi_event,snd_seq_midi
    joydev                 17389  0 
    pcspkr                 12718  0 
    snd_seq_device         14356  3 snd_seq,snd_rawmidi,snd_seq_midi
    rfkill                 22391  1 bluetooth
    snd_pcm               101339  2 snd_ac97_codec,snd_ens1371
    sg                     40719  0 
    snd_timer              30014  2 snd_pcm,snd_seq
    snd                    83987  7 snd_ac97_codec,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_ens1371,snd_seq_device
    vmw_vmci               67168  0 
    soundcore              15047  1 snd
    i2c_piix4              22401  0 
    parport_pc             28205  0 
    parport                46395  2 ppdev,parport_pc
    ip_tables              27126  0 
    xfs                   997727  2 
    libcrc32c              12644  1 xfs
    sd_mod                 46281  3 
    crc_t10dif             12912  1 sd_mod
    crct10dif_generic      12647  0 
    sr_mod                 22416  0 
    cdrom                  42600  1 sr_mod
    ata_generic            12923  0 
    pata_acpi              13053  0 
    vmwgfx                291993  1 
    crct10dif_pclmul       14307  1 
    crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
    crc32c_intel           22094  1 
    drm_kms_helper        186531  1 vmwgfx
    serio_raw              13434  0 
    syscopyarea            12529  1 drm_kms_helper
    mptspi                 22673  2 
    sysfillrect            12701  1 drm_kms_helper
    sysimgblt              12640  1 drm_kms_helper
    fb_sys_fops            12703  1 drm_kms_helper
    e1000                 137624  0 
    ttm                    96673  1 vmwgfx
    drm                   456166  4 ttm,drm_kms_helper,vmwgfx
    scsi_transport_spi     30732  1 mptspi
    mptscsih               40150  1 mptspi
    mptbase               106036  2 mptspi,mptscsih
    ata_piix               35052  0 
    drm_panel_orientation_quirks    17180  1 drm
    libata                243094  3 pata_acpi,ata_generic,ata_piix
    nfit                   55639  0 
    libnvdimm             159524  1 nfit
    dm_mirror              22326  0 
    dm_region_hash         20813  1 dm_mirror
    dm_log                 18411  2 dm_region_hash,dm_mirror
    dm_mod                124501  8 dm_log,dm_mirror
              
    
  • 安装软件,为内核加上支持ntfs的模块

  • 安装
    # yum install epel-release  -y
    # yum install ntfs-3g        
              
    挂载
    # mount.ntfs-3g /dev/sdb1 /mnt
    
  • liunx存储分层

在这里插入图片描述

  • 物理卷:指的是物理设备,如硬盘(/dev/sda),分区(/dev/sda1),dd命令创建的文件,软raid(/dev/md0),逻辑卷(/dev/vg01/lv01)等
  • 模块驱动:安装相应的模块,即可实现相应的功能
  • 文件系统:格式化成相应的文件系统:如ext4,xfs
  • 虚拟文件系统: 又名VFS (Virtual File System),作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口

存储分类

在这里插入图片描述

  • 三种存储方式:DAS、SAN、NAS
  • 三种存储类型:块存储、文件存储、对象存储
按存储方式分:
分类 名称 描述
DAS 直连式存储
(direct access/attach storage)
如:机箱里的disk,或通过接口直连到系统总线上的disk(如U盘,移动硬盘)
NAS 网络附加存储
(network attched storage)
通过交换机,路由器连接起来,共享的是目录如:nfs,samba,ftp
SAN 存储区域网络
(storage area network)
通过交换机,路由器连接起来的高速存储网络,共享的是块设备

三者区别与联系

  • DAS: 直接连接系统,不受网速限制,速度快; 扩展容量有上限。

  • NAS与SAN: 通过网络设备连接的远程存储,速度受网络影响; 但扩展方便,几乎无上限。

  • NAS和SAN都是通过网络(通过了网络设备,如路由器,交换机等)的,但NAS共享的是应用层的目录,而SAN共享的是/dev/sdb1或/dev/sdb这种块设备

按储存类型分:
分类 描述
文件存储 NAS都属于这一类。
简单来说就是mount后直接使用的
块存储 SAN都属于这一类。
简单来说就是类似/dev/sdb这种,要分区,格式化后才能mount使用
对象存储 对象存储采用扁平化的形式管理数据,没有目录的层次结构,并且对象的操作主要以put、get、delete为主。

三者比较

比较项 块存储 文件存储 对象存储
概念 用高速网络连接专业主机服务器的一种存储方式 使用文件系统,具有目录树 将数据和元数据当做一个对象
速度 低延迟(10ms),热数据 不同技术各有不同 100ms-1s,冷数据
可分布性 异地不现实 可分布式 分布并发能力高
文件大小 大小都可以 适合大文件 大小都可以
接口 Driver,kernel module POSIX Restful API
典型技术 SAN HDFS、GFS Swift、Amazon S3
适合场景 数据中心,虚拟化平台 办公网络 网络媒体文件存储

文件存储: 类似一个大的目录,多个客户端都可以挂载过来使用。

  • 优点: 利于数据共享
  • 缺点: 速度较慢

块存储: 类似一个block设备,客户端可以格式化,挂载并使用,和用一个硬盘一样。

  • 优点: 和本地硬盘一样,直接使用,速度较快
  • 缺点: 数据不共享,建议一个块设备仅供一人使用

对象存储: 一个对象我们可以看成一个文件, 综合了文件存储和块存储的优点。

  • 优点: 速度快,数据共享
  • 缺点: 成本高, 不兼容现有的模式

SAN

分类

  • FC-SAN: 早期的SAN, 服务器与交换机的数据传输是通过光纤进行的, 服务器把SCSI指令传输到存储设备上,不能走普通LAN网的IP协议。速度快,成本高
  • IP-SAN: 用IP协议封装的SAN, 可以完全走普通网络,因此叫做IP-SAN, 最典型的就是ISCSI。速度较慢(已经有W兆以太网标准), 成本低

IP-SAN之iscsi实现

虚拟机 IP地址 作用
server1 192.168.139.10 储存服务器(导出)
server2 192.168.139.20 业务服务器(导入)
  • 环境准备
systemctl stop NetworkManager
systemctl disable NetworkManager

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

cat >> /etc/hosts <<EOF
	192.168.139.10 server10
	192.168.139.20 server20
	EOF

ntpdate cn.ntp.org.cn
date
  • 导出端配置
安装iscsi-target-utils软件包
[root@server1 ~]# yum install -y epel-release.noarch 
[root@server1 ~]# yum install -y scsi-target-utils

模拟需要导出的物理卷
[root@server1 ~]# dd if=/dev/zero of=/tmp/big_file bs=1M count=1000

修改配置文件
[root@server1 ~]# cd /etc/tgt/
[root@server1 tgt]# vim targets.conf 
[root@server1 tgt]# cat targets.conf |grep -Ev '^#|^$'
default-driver iscsi
 #共享名,也就是存储导入端发现后看到的名称
<target iscsi:data>
	#backing-store定义实际要共享出去的设备
	backing-store /tmp/big_file
</target>

启动服务
[root@server1 tgt]# systemctl start tgtd
[root@server1 tgt]# systemctl enable tgtd
  • 导入端配置
安装iscsi-initiator-utils软件包
[root@server2 ~]# yum install -y epel-release.noarch 
[root@server2 ~]# yum install -y iscsi-initiator-utils

寻找资源
[root@server2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.139.10
192.168.139.10:3260,1 iscsi:data

登录
[root@server2 ~]# iscsiadm -m node -l
[root@server2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
sdc               8:32   0 1000M  0 disk 
sr0              11:0    1  973M  0 rom  
#发现多出来了一块sdc

断开连接:
[root@server2 ~]# iscsiadm -m node -u
[root@server2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
sr0              11:0    1  973M  0 rom  
#删除登录过的信息
[root@server2 ~]# iscsiadm -m node --op delete
  • 扩展:添加用户名和密码验证功能
导出端配置验证功能
[root@server1 tgt]# vim targets.conf 
[root@server1 tgt]# cat targets.conf |grep -Ev '^#|^$'
default-driver iscsi
 #共享名,也就是存储导入端发现后看到的名称
<target iscsi:data>
	#backing-store定义实际要共享出去的设备
	backing-store /tmp/big_file
	incominguser tgt-user tgt-pass
</target>

导入端添加用户及密码
[root@server2 ~]# vim /etc/iscsi/iscsid.conf
 57 node.session.auth.authmethod = CHAP

 68 node.session.auth.username = tgt-user
 69 node.session.auth.password = tgt-pass
 
 78 discovery.sendtargets.auth.authmethod = CHAP
 
 82 discovery.sendtargets.auth.username = tgt-user
 83 discovery.sendtargets.auth.password = tgt-pass

验证
[root@server2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.139.10
192.168.139.10:3260,1 iscsi:data
[root@server2 ~]# iscsiadm -m node -l
[root@server2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
sdc               8:32   0 1000M  0 disk 
sr0              11:0    1  973M  0 rom  

分布式储存

介绍

  • NAS是远程通过网络共享目录, SAN是远程通过网络共享块设备

  • 分布式存储你可以看作**拥有多台存储服务器连接起来的存储导出端**。把这多台存储服务器的存储合起来做成一个整体再通过网络进行远程共享,共享的方式有目录(文件存储),块设备(块存储),对象网关或者说一个程序接口(对象存储)。

  • 常见的分布式存储开源软件有:GlusterFS,Ceph,HDFS,MooseFS,FastDFS等

  • 分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。

  • 分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用定位服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

  • 分布式存储系统需要解决的两个问题:

    问题一:我应该把数据写到什么地方?对于一个存储系统而言,当用户提交需要写入的数据时,系统必须迅速决策,为数据分配一个存储空间。这个决策的速度影响到数据如延迟,而更为重要的是,其决策的合理性也影响着数据分布的均匀性。

    问题二:我之前把数据写到什么地方?对于一个存储系统而言,高效、准确地处理数据寻址空间也是基本功能之一。

特性

可扩展

  • 分布式系统可以扩展到几百台到几千台的集群规模,轻松达到PB级别或以上。而且,随着集群规模的增长,系统整体性能表现为线性增长。 分布式存储的水平扩展有以下几个特性:
    • 节点扩展后,旧数据会自动迁移到新节点,实现负载均衡,避免单点过热的情况出现
    • 水平扩展只需要将新节点和原有集群连接到同一网络,整个过程不会对业务造成影响
    • 当节点被添加到集群,集群系统的整体容量和性能也随之线性扩展,此后新节点的资源就会被管理平台接管,被用于分配或者回收

低成本

  • 分布式存储系统的自动容错、自动负载均衡机制使其可以构建在普通PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以使用较低的成本实现自动运维

高性能

  • 无论是整个集群还是单机服务,都要求分布式系统具备高性能。提升读写性能(LB)或数据高可用(HA)

易用

  • 分布式存储系统需要提供易用的对外接口,另外也要求具备完善的监控、运维工具,并能够方便地与其它系统集成。如 Hadoop云计算系统导入数据。

开源软件比较

存储系统 Ceph GlusterFS HDFS MooseFS FastDFS
开发语言 C++ C Java C C
开源协议 LGPL GPL V3 Apache GPL V3 GPL V3
数据存储方式 对象/文件/块 文件/块 文件 文件/块
集群节点通信协议 私有协议(TCP) TCP/RDAM TCP TCP TCP
专用元数据存储点 占用MDS 占用MDS 占用MFS
在线扩容 支持 支持 支持 支持 支持
冗余备份 支持 支持 支持 支持 支持
单点故障 不存在 不存在 存在 存在 不存在
跨集群同步 不支持 支持 不支持 不支持 部分支持
适用场景 单集群的大中小文件 跨集群云存储 Mapreduce使用的文件存储 单集群的大中文件 单集群的中小文件
FUSE挂载 支持 支持 支持 支持 不支持
访问接口 POSIX POSIX 不支持POSIX POSIX 不支持POSIX

在这里插入图片描述

Glusterfs

介绍

  • glusterfs是一个免费,开源的分布式文件系统(它属于文件存储类型
  • 官网:https://www.gluster.org/

常见raid级别(扩展)

  • raid0 读写性能佳,坏了其中一块,数据挂掉,可靠性低(stripe条带化),磁盘利用率100%
    在这里插入图片描述

  • raid1 镜像备份(mirror),同一份数据完整的保存在多个磁盘上,写的性能不佳,可靠性高,读的性能还行,磁盘利用率50%

    在这里插入图片描述

  • raid10 先做raid 1 再做raid 0 (生产环境中常用)

在这里插入图片描述

  • raid5 由多块磁盘做raid 5,磁盘利用率为n-1/n, 其中一块放校验数据,允许坏一块盘,数据可以利用校验值来恢复 (生产环境中常用)

在这里插入图片描述

  • raid6 在raid5的基础上再加一块校验盘,进一步提高数据可靠性

在这里插入图片描述

常见卷的模式

卷模式 描述
Replicated 复制卷,类似raid1
Striped 条带卷,类似raid0
Distributed 分布卷
Distribute Replicated 分布与复制组合
Dispersed 纠删卷,类似raid5,raid6

复制卷(Replica volume)

  • 将文件同步到多个Brick上,使其具备多个文件副本,属于文件级RAID1,具有容错能力。因为数据分散 到多个Brick中,所以读性能得到了很大提升,但写性能下降

在这里插入图片描述

条带卷(Stripe volume)

  • 类似于RAID0,文件被分为数据块并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单 位,支持大文件存储,文件越大,读取效率越高

在这里插入图片描述

分布式卷(Distribute volume)

  • 文件通过HASH算法分布到所有Brick Server上,这种卷是Glusterf的基础;以文件为单位根据HASH算法 散列到不同的Brick,其实只是扩大了磁盘空间,如果有一个磁盘损坏,数据也将丢失,属于文件级的 RAID0,不具备容错能力

在这里插入图片描述

分布式复制卷(Distribute Replica volume)

  • Brick Server数量是镜像数(数据副本数量)的倍数,具有分布式卷和复制卷的特点

在这里插入图片描述

其他:详见官网

集群搭建

虚拟机 担当 IP地址
server1 storage1 192.168.139.10
server2 storage2 192.168.139.20
server3 storage3 192.168.139.30
server4 storage4 192.168.139.40
server5 client 192.168.139.50
  • 基于server02克隆server03,server04,server05
  • 环境准备(所有节点)
修改主机名
hostnamectl set-hostname server3/4/5
su

配置静态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值