网络存储分类:

按网络拓扑分类:

1、DAS:直接附加存储;优点:技术简单、传输速率高;缺点:存储设备与磁盘相互绑定。

2、NAS:网络附加存储;优点:技术相对简单、不要求存储设备直连本机,只需网络访问即可;缺点:存储速率较慢。

3、SAN:存储区域网络;优点:存储安全性较高、存储速率较高;缺点:造价昂贵、技术难度相对较高。

按存储技术分类:

1、块存储(硬盘、U盘等);优点:可以通过raid/lvm等技术提供保护、可独立使用;缺点:不利于共享。

2、文件存储/网络存储(samba、nfs、ftp);优点:构建资金较低、可在不同主机之前共享存储;缺点:读写速率低,传输速率慢。

3、对象存储/分布式存储/存储桶(重点是:将元数据和真实数据分别存储多台服务器上);优点:读写效率高、可在不同主机之间共享存储;缺点:造价昂贵、技术实现难度较高。


常用模式:

1、块存储+DAS:底层技术

2、块存储+NAS

3、块存储+SAN

4、文件存储+NAS:NFS、Samba、ftp

5、对象存储+SAN:MFS、RHCS、ceph等


文件存储之NFS:依赖RPC协议传输

nfs-utils:NFS服务主程序包

rpcbind:centos6和7的RPC主程序包(centos5为portmap)


server端NFS配置:

/etc/exports:nfs配置文件;格式:

NFS共享目录       NFS客户端地址1(参数1,参数2...)            NFS客户端地址2(参数1,参数2...)              #可以多行表示多个共享


常用参数:

rw:可读写。需要目录权限共同参与

ro:只读

sync:文件同时写入硬盘和内存

async:文件暂存于内存,而不是直接写入内存

no_root_squash:允许root权限   

root_squash:将root用户的权限映射为匿名用户权限(nobody或者nfsnobody)

all_squash:所有用户都映射为匿名用户权限(nobody或者nfsnobody)

anonuid:匿名用户的uid

anongid:匿名用户的gid


示例:

server端

~]# yum -y install rpcbind nfs-utils

~]# mkdir -pv /nfs1 /nfs2

~]# chown -R nobody:nobody /nfs1 /nfs2   

~]# vim /etc/exports

/nfs1   192.168.0.0/24(rw,no_root_squash,async)         172.20.120.0/24(rw,no_root_squash,async)

/nfs2   172.20.120.0/24(ro,no_root_squash,async)

~]# systemctl restart rpcbind

~]# systemctl restart nfs

clinet端

~]# yum -y install nfs-utils

~]# showmount -e 172.20.120.182

~]# mkdir -pv /tmp/nfs[1,2]

~]# mount -t nfs 172.20.120.182:/nfs1 /tmp/nfs1

~]# mount -t nfs 172.20.120.182:/nfs2 /tmp/nfs2


分布式存储之MFS(MooseFS):一个具备冗余容错功能的分布式网络文件系统。

特性:

网络存储集群_第1张图片

缺点:

网络存储集群_第2张图片

网络存储集群_第3张图片

MFS组件说明:

1、master(managin server):分发用户请求和存储元数据

2、metalogger(metadata backup servers):备份master变化的metadata信息日志文件

3、data(chunk server):存储数据文件实体

4、client(client server):挂载并使用mfs文件系统的客户端;需要系统支持fuse

网络存储集群_第4张图片

网络存储集群_第5张图片

master主配置文件:mfsmaster.cfg

网络存储集群_第6张图片

    网络存储集群_第7张图片




示例:1台master,1台metalogger,2台data,1台client

此处示例为moosefs-3.0.84;下载地址:https://github.com/moosefs/moosefs/releases/tag/v3.0.84

master设置:

~]# tar xvf moosefs-3.0.84.tar.gz -C /usr/local/

~]# cd /usr/local/moosefs-3.0.84/

moosefs-3.0.84]# useradd -s /sbin/nologin -M mfs

moosefs-3.0.84]# yum -y groupinstall "Development Tools"

moosefs-3.0.84]# yum -y install zlib-devel

moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

moosefs-3.0.84]# make && make install

moosefs-3.0.84]# chown -R mfs:mfs /usr/local/mfs/

moosefs-3.0.84]# ln -sv /usr/local/mfs/bin/mfscli /usr/local/bin/

moosefs-3.0.84]# ln -sv /usr/local/mfs/sbin/* /usr/local/sbin/

~]# cp -a /usr/local/mfs/etc/mfs/mfsmaster.cfg.sample /usr/local/mfs/etc/mfs/mfsmaster.cfg          

~]# cp -a /usr/local/mfs/etc/mfs/mfsexports.cfg.sample /usr/local/mfs/etc/mfs/mfsexports.cfg

~]# vim /usr/local/mfs/etc/mfs/mfsexports.cfg

172.20.120.0/24 . rw,alldirs,maproot=0                            #设置MFS挂载权限

~]# cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs              #初始化MFS元数据信息文件

可选服务(mfscgiserv):在端口9425开启web监控页面;可用zabbix调用

设置开机自启:

~]# systemctl start moosefs-master moosefs-cgiserv                       #启动MFS-master服务和mfscgiserv服务

~]# systemctl enable moosefs-master moosefs-cgiserv


附录:centos7 system脚本制作:moosefs-master.service

~]# vim /usr/lib/systemd/system/moosefs-master.service

[Unit]

Description=MooseFS Master server

Wants=network-online.target

After=network.target network-online.target

[Service]

Type=forking

ExecStart=/usr/local/mfs/sbin/mfsmaster -a

ExecStop=/usr/local/mfs/sbin/mfsmaster stop

ExecReload=/usr/local/mfs/sbin/mfsmaster reload

PIDFile=/usr/local/mfs/var/mfs/.mfsmaster.lock

TimeoutStopSec=1800

TimeoutStartSec=1800

Restart=no

[Install]

WantedBy=multi-user.target


附录:centos7 system脚本制作:moosefs-cgiserv.service

~]# vim /usr/lib/systemd/system/moosefs-cgiserv.service

[Unit]

Description=MooseFS CGI server

Wants=network-online.target

After=network.target network-online.target

[Service]

Type=forking

ExecStart=/usr/local/mfs/sbin/mfscgiserv start

ExecStop=/usr/local/mfs/sbin/mfscgiserv stop

PIDFile=/usr/local/mfs/var/mfs/.mfscgiserv.lock

Restart=on-abnormal

[Install]

WantedBy=multi-user.target



metalogger设置:

~]# tar xvf moosefs-3.0.84.tar.gz -C /usr/local/

~]# cd /usr/local/moosefs-3.0.84/

moosefs-3.0.84]# useradd -s /sbin/nologin -M mfs

moosefs-3.0.84]# yum -y groupinstall "Development Tools"

moosefs-3.0.84]# yum -y install zlib-devel

moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

moosefs-3.0.84]# make && make install 

moosefs-3.0.84]# chown -R mfs:mfs /usr/local/mfs/

moosefs-3.0.84]# ln -sv /usr/local/mfs/bin/mfscli /usr/local/bin/

moosefs-3.0.84]# ln -sv /usr/local/mfs/sbin/* /usr/local/sbin/

moosefs-3.0.84]# cp -a /usr/local/mfs/etc/mfs/mfsmetalogger.cfg.sample /usr/local/mfs/etc/mfs/mfsmetalogger.cfg

moosefs-3.0.84]# vim /usr/local/mfs/etc/mfs/mfsmetalogger.cfg

META_DOWNLOAD_FREQ = 2                           #设置完整同步间隔为2小时

MASTER_HOST = 172.20.120.187                      #设置master服务器ip地址  

moosefs-3.0.84]# systemctl start moosefs-metalogger             #启动服务并开机自启

moosefs-3.0.84]# systemctl enable moosefs-metalogger

moosefs-3.0.84]# lsof -i :9419                            #验证是否跟master联系

moosefs-3.0.84]# ls /usr/local/mfs/var/mfs/        #查看元数据信息是否已同步

image.png


附录:centos7 system脚本制作:moosefs-metalogger.service

~]# vim /usr/lib/systemd/system/moosefs-metalogger.service

[Unit]

Description=MooseFS Metalogger server

Wants=network-online.target

After=network.target network-online.target

[Service]

Type=forking

ExecStart=/usr/local/mfs/sbin/mfsmetalogger start

ExecStop=/usr/local/mfs/sbin/mfsmetalogger stop

ExecReload=/usr/local/mfs/sbin/mfsmetalogger reload

PIDFile=/usr/local/mfs/var/mfs/.mfsmetalogger.lock

Restart=on-abnormal

[Install]

WantedBy=multi-user.target


chunk server设置:

准备共享的设备,此处为独立的硬盘

~]# mkfs.xfs /dev/vdb1

~]# mkdir -pv /mfs

~]# mount /dev/vdb1 /mfs

~]# chown -R mfs:mfs /mfs

~]# vim /etc/fstab                        #设置开机挂载

/dev/vdb1       /mfs    xfs     defaults        0 0

安装配置

~]# tar xvf moosefs-3.0.84.tar.gz -C /usr/local/

~]# cd /usr/local/moosefs-3.0.84/

moosefs-3.0.84]# useradd -s /sbin/nologin -M mfs

moosefs-3.0.84]# yum -y groupinstall "Development Tools"

moosefs-3.0.84]# yum -y install zlib-devel

moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

moosefs-3.0.84]# make && make install 

moosefs-3.0.84]# chown -R mfs:mfs /usr/local/mfs/

moosefs-3.0.84]# ln -sv /usr/local/mfs/bin/mfscli /usr/local/bin/

moosefs-3.0.84]# ln -sv /usr/local/mfs/sbin/* /usr/local/sbin/

moosefs-3.0.84]# cp -a /usr/local/mfs/etc/mfs/mfschunkserver.cfg.sample /usr/local/mfs/etc/mfs/mfschunkserver.cfg

moosefs-3.0.84]# vim /usr/local/mfs/etc/mfs/mfschunkserver.cfg

MASTER_HOST = 172.20.120.187                                                    #指定master服务器ip

HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg

moosefs-3.0.84]# cp -a /usr/local/mfs/etc/mfs/mfshdd.cfg.sample /usr/local/mfs/etc/mfs/mfshdd.cfg

moosefs-3.0.84]# vim /usr/local/mfs/etc/mfs/mfshdd.cfg 

/mfs                        #指定共享设备

~]# systemctl start moosefs-chunkserver                    #启动服务并开机自启

~]# systemctl enable moosefs-chunkserver 


附录:centos7 system脚本制作:moosefs-chunkserver.service

~]# vim /usr/lib/systemd/system/moosefs-chunkserver.service

[Unit]

Description=MooseFS Chunkserver

Wants=network-online.target

After=network.target network-online.target

[Service]

Type=forking

ExecStart=/usr/local/mfs/sbin/mfschunkserver start

ExecStop=/usr/local/mfs/sbin/mfschunkserver stop

ExecReload=/usr/local/mfs/sbin/mfschunkserver reload

PIDFile=/usr/local/mfs/var/mfs/.mfschunkserver.lock

Restart=on-abnormal

[Install]

WantedBy=multi-user.target


clinet端设置

~]# yum -y install fuse fuse-libs fuse-devel                #安装fuse

~]# tar xvf moosefs-3.0.84.tar.gz -C /usr/local/

~]# cd /usr/local/moosefs-3.0.84/

moosefs-3.0.84]# useradd -s /sbin/nologin -M mfs

moosefs-3.0.84]# yum -y groupinstall "Development Tools"

moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver

moosefs-3.0.84]# make && make install 

moosefs-3.0.84]# chown -R mfs:mfs /usr/local/mfs/

moosefs-3.0.84]# ln -sv /usr/local/mfs/bin/* /usr/local/bin/

moosefs-3.0.84]# ln -sv /usr/local/mfs/sbin/* /usr/local/sbin/

创建并挂载

~]# mkdir -pv /mfs    

~]# mfsmount /mfs/ -H 172.20.120.187

~]# chown -R mfs:mfs /mfs

~]# vim /mfs/1.txt

~]# mfsfileinfo /mfs/1.txt               #查看文件信息

开机自动挂载

~]# vim /etc/rc.d/rc.local

/usr/local/bin/mfsmount /mfs -H 172.20.120.187

~]# chmod a+x /etc/rc.d/rc.local


MFS维护操作:

1、在trashtime时间内恢复误删除的文件:(默认误删可恢复时长为1天)

~]# mkdir -pv /mfsback

~]# chown -R mfs:mfs /mfsback

~]# mfsmount -m /mfsback/ -H 172.20.120.187

~]# find /mfsback/ -name "*2.txt"               #前提是知道误删文件的名称,此处定位该文件

image.png

~]# mv /mfsback/trash/009/00000009\|2.txt /mfsback/trash/undel/                


2、快照功能:

~]# mkdir -pv /mfs/mfssnap          #要求跟源文件在同一设备上

~]# chown -R mfs:mfs /mfs/mfssnap/

~]# mfsmakesnapshot /mfs/2.txt /mfs/mfssnap/


3、冗余goal设置(默认为2)

~]# mfssetgoal 1 /mfs/1.txt         #设置1.txt副本数为1

~]# mfsgetgoal /mfs/1.txt            #查看验证

~]# mfsfileinfo /mfs/1.txt


4、还原master

重构master环境(省略)

metalogger端将数据传输到master:

~]# scp /usr/local/mfs/var/mfs/* [email protected]:/usr/local/mfs/var/mfs/

master端恢复和启动:(恢复数据需一定时长)

~]# mfsmaster -a


5、高可用master服务器




块存储之ISCSI:

跟文件文件系统的区别:1、提供块存储;2、传输iscsi指令,效率更高

iSCSI技术在工作形式上分为服务端(target)与客户端(initiator)。

1、iSCSI服务端即用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘阵列的存储端,能够为用户提供可用的存储资。 

2、iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。


服务端设置:

1、准备共享用的块设备(可以使磁盘、分区、逻辑卷);此处示例为/dev/vdc1分区

2、安装配置target端

~]# yum -y install scsi-target-utils

~]# vim /etc/tgt/conf.d/test.conf                  通过配置文件持久化配置

                                    #配置共享磁盘

        vendor_id hbzh                                               #配置发行商(任意)

        lun 1                                                                #配置LUN号

   

    incominguser iscsiuser iscsiuser                        #配置认证的用户名和密码

    initiator-address 172.20.120.0/24                     #配置允许的网段

~]# systemctl start tgtd

~]# systemctl enable tgtd

~]# tgtadm -L iscsi -o show -m target                     #查验配置


客户端设置:

~]# yum -y install iscsi-initiator-utils

~]# vim /etc/iscsi/iscsid.conf

node.session.auth.username = iscsiuser                 #输入服务器端设置的用户密码

node.session.auth.password = iscsiuser

~]# iscsiadm -m discovery -t st -p 172.20.120.184           #执行发现操作

~]# iscsiadm -m node -T iqn.2020-01.com.nice.www:iscsi.sda --login                #登录操作

~]# fdisk -l                 #查看新增的硬盘信息

后续按操作实体硬盘操作即可(格式化、挂载、使用)

开机自动挂载

~]# vim /etc/fstab

/dev/sda1       /tmp/iscsi      xfs     _netdev 0 0

~]# systemctl start iscsi

~]# systemctl enable iscsi