linux 网络块存储,网络存储集群
網絡存儲分類:
按網絡拓撲分類:
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):一個具備冗余容錯功能的分布式網絡文件系統。
特性:
缺點:
MFS組件說明:
1、master(managin server):分發用戶請求和存儲元數據
2、metalogger(metadata backup servers):備份master變化的metadata信息日志文件
3、data(chunk server):存儲數據文件實體
4、client(client server):掛載并使用mfs文件系統的客戶端;需要系統支持fuse
master主配置文件:mfsmaster.cfg
示例: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/? ? ? ? #查看元數據信息是否已同步
附錄: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"? ? ? ? ? ? ? ?#前提是知道誤刪文件的名稱,此處定位該文件
~]# 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/* root@172.20.120.187:/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
總結
以上是生活随笔為你收集整理的linux 网络块存储,网络存储集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中对字符串进行编码_Pyth
- 下一篇: 惩罚、补偿、正则化、约束的联系和区别