容器和宿主机之间的存储问题

简介

作用:方便备份恢复数据,实现数据共享

一、单台机器中

用数据卷挂载

容器和宿主机之间的存储问题_第1张图片

二、多台机器中

ssh  

建立免密通道将数据scp过去,然后再用卷挂载到容器内

nfs  网络文件系统

搭建nfs服务器+客户端挂载

过程如下

一.安装软件包

yum install -y nfs-utils
二、启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs-server ~]#
三、查看rpcbind的端口和进程
[root@nfs-server ~]# ps aux|grep nfs
root       1919  0.0  0.0      0     0 ?        S<   17:24   0:00 [nfsd4_callbacks]
root       1925  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1926  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1927  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1928  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1929  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1930  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1931  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1932  0.0  0.0      0     0 ?        S    17:24   0:00 [nfsd]
root       1964  0.0  0.0 112824   972 pts/0    S+   17:25   0:00 grep --color=auto nfs
[root@nfs-server ~]# ss -anplut|grep rpcbind
udp    UNCONN     0      0         *:797                   *:*                   users:(("rpcbind",pid=1894,fd=7))
udp    UNCONN     0      0         *:111                   *:*                   users:(("rpcbind",pid=1894,fd=6))
udp    UNCONN     0      0      [::]:797                [::]:*                   users:(("rpcbind",pid=1894,fd=10))
udp    UNCONN     0      0      [::]:111                [::]:*                   users:(("rpcbind",pid=1894,fd=9))
tcp    LISTEN     0      128       *:111                   *:*                   users:(("rpcbind",pid=1894,fd=8))
tcp    LISTEN     0      128    [::]:111                [::]:*                   users:(("rpcbind",pid=1894,fd=11))
[root@nfs-server ~]#
	nfsd进程将监听端口的活外包给了rpcbind进程
四、创建nfs共享目录
[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]# echo "welcome to sanchuang changsha nongda" >index.html
[root@nfs-server web]# ls
index.html
[root@nfs-server web]#
5、编辑/etc/exports文件   **修改配置文件需要重新加载配置文件( exportfs -arv)
/web  192.168.1.0/24(rw,sync,all_squash)

/web 共享的目录的路径
192.168.1.0/24 允许能访问的机器的网段
(rw,sync,all_squash) 拥有的权限  rw 可以读写  sync 在host上修改了数据,里面同步到nfs服务器

all_squash 任何机器上的任何用户连接过来都看成一个普通的用户nobody对待

[root@nfs-server web]# exportfs -av  让共享目录生效
exporting 192.168.1.0/24:/web
[root@nfs-server web]#
6.设置共享目录的权限
[root@localhost web]# cat /etc/passwd|grep nfs
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@localhost web]# 
[root@nfs-server web]# chown  nobody:nobody /web
[root@nfs-server web]# ll -d /web
drwxr-xr-x 2 nobody nobody 24 8月  26 17:28 /web
[root@nfs-server web]#

共享权限
linux系统里的权限

[root@nfs-server web]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server web]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@nfs-server web]# getenforce
Disabled
[root@nfs-server web]#
===========
所有的客户端
1.安装软件
[root@sc-docker _data]# yum install nfs-utils -y
[root@sc-docker2 /]#yum install nfs-utils -y
2.新建挂载目录,然后挂载
[root@sc-docker ~]# mkdir /nfs-web
[root@sc-docker2 ~]# mkdir /nfs-web

[root@sc-docker2 ~]# mount 192.168.1.133:/web /nfs-web/
[root@sc-docker ~]# df -Th|grep nfs
192.168.1.133:/web      nfs4       17G  1.5G   16G    9% /nfs-web
[root@sc-docker ~]#
[root@sc-docker ~]# cd /nfs-web/
[root@sc-docker nfs-web]# ls
index.html
[root@sc-docker nfs-web]# cat index.html
welcome to sanchuang changsha nongda
[root@sc-docker nfs-web]#
[root@sc-docker2 ~]# cd /nfs-web/
[root@sc-docker2 nfs-web]# ls
index.html
[root@sc-docker2 nfs-web]# cat index.html
welcome to sanchuang changsha nongda
[root@sc-docker2 nfs-web]#


[root@sc-docker2 nfs-web]# mount|grep nfs
192.168.1.133:/web on /nfs-web type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.124,local_lock=none,addr=192.168.1.133)
[root@sc-docker2 nfs-web]#

nfs客户端创建卷+容器挂载

docker volume create --driver local \
--opt type=nfs \
--opt o=addr=,nolock,soft,rw,sync \
--opt device=:<共享目录全路径> \
<卷名>

创建一个卷底层挂载到nfs服务器192.168.1.133上的共享目录/web里
[root@sc-docker nfs-web]# docker volume create --driver local --opt type=nfs --opt  o=addr=192.168.1.133,nolock,soft,rw,sync  --opt  device=:/web nfs-web-6
nfs-web-6
[root@sc-docker nfs-web]# docker volume ls
DRIVER    VOLUME NAME
local     2f1f1ac5ccdde7a9d80e277a974eeb3c2b6ff98b7126349f52caaef0042bbf9f
local     5103a4c07fe6745fba25c88320cc42a385c1e44b9cd461ed6b7be894e77bf357
local     b9eeeb4fc5d95a184919ad9dbdb6a329771950a85a98e3729ad911107eb681d4
local     nfs-web
local     nfs-web-2
local     nfs-web-6
local     nginx-web
[root@sc-docker nfs-web]# docker volume inspect nfs-web-6
[
    {
        "CreatedAt": "2022-08-26T18:24:33+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nfs-web-6/_data",
        "Name": "nfs-web-6",
        "Options": {
            "device": ":/web",
            "o": "addr=192.168.1.133,nolock,soft,rw,sync",
            "type": "nfs"
        },
        "Scope": "local"
    }
]
[root@sc-docker nfs-web]#
创建一个容器使用nfs-web-6卷
docker run -d -p 8818:80 -v nfs-web-6:/usr/share/nginx/html --name siyx-nginx-8 nginx

参考:https://www.ibm.com/cn-zh/topics/storage-area-network 

NAS  网络附加存储

NAS(Network Attached Storage)网络附加存储  网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。

 NAS是一台可以放在家中或办公室的个人储存设备

使用传统的网络,实现文件存储和共享 

将存储设备直接连在网上,提供数据和文件服务。

如果在企业中办公使用的话,NAS网络存储是特别方便的,在局域网内装一台NAS存储设备,同一局域网内的用户都可以连接上,连接上以后如下图会增加一个类似本地盘的大的阵列盘,可以在里面放公共的文件,这样大家之间不需要拷贝,直接可以在存储里面的查找修改,极大程度的提高了工作效率。

容器和宿主机之间的存储问题_第2张图片

NAS提供了很多的安全机制,为每个用户设置权限,可以分级、分部门等。还有很多安全机制可以保护数据安全。 

特点:

1.需要专业的存储设备 --》NAS--->NFS
2.使用传统的tcp/ip网络
3.其他的电脑/手机/pad等设备都可以使用 

SAN  存储区域网络

存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构,要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。如今,采用全闪存存储的 SAN 部署数量增速迅猛。与旋转磁盘相比,全闪存存储可提供更出色的性能、稳定一致的低延迟以及更低的总成本。SAN 将数据存储在集中式共享存储中,使企业能够运用一致的方法和工具来实施安全防护、数据保护和灾难恢复。 

 容器和宿主机之间的存储问题_第3张图片

SAN (Storage Area Network的简称)直译过来就是存储区域网络,它采用光纤通道 (Fibre Channel)技术,通过光纤通道交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。 SAN网络存储是一种高速网络或子网络,SAN存储系统提供在计算机与存储系统之间的数据传输。

计算机内存和本地存储资源可能无法为企业应用程序提供足够的存储、存储保护、多用户访问或速度和性能。 因此,除了网络附加存储 (NAS) 之外,大多数组织还采用某种形式的 SAN,以提高效率,更好地进行数据管理。

传统上,可以连接到服务器的储存设备数量有限,从而限制了网络的存储容量。 但是 SAN 引入了网络灵活性,让一台服务器或许多跨多个数据中心的异构服务器能够共享一个公共存储实用程序。 SAN 消除了网络文件服务器和存储之间的传统专用连接,以及服务器有效拥有和管理存储设备的概念,这让带宽瓶颈不复存在。 SAN 消除了单点故障,以提高存储可靠性和可用性。

SAN 也是灾难恢复 (DR) 的最佳选择,因为网络可能包含许多存储设备,其中有磁盘、磁带和光存储。 存储实用程序的位置也可能离它所使用的服务器很远。

优点:

  1. 提高应用程序可用性    存储独立于应用程序而存在,可通过多种路径访问以提高可靠性、可用性和可服务性。
  2. 更好的应用程序性能   SAN 将存储处理从服务器卸载并转移到单独的网络上。
  3. 中央和综合   SAN 让更简单的管理、可扩展性、灵活性和高可用性成为可能。
  4. 远程站点数据传输和存储   SAN 通过远程复制保护数据免受灾难和恶意攻击。
  5. 简单的集中管理    SAN 通过创建存储介质的单个映像来简化管理。

NAS 和 SAN

与直连存储 (DAS) 不同,基于网络的存储允许多台计算机通过网络访问它,从而更好地进行数据共享和协作。 它的异地存储能力也使其更适合备份和数据保护。 网络附加存储 (NAS) 和存储区域网络 (SAN) 是两种典型的基于网络的存储设置。

NAS 通常是由冗余存储容器或独立磁盘冗余阵列 (RAID) 组成的单个设备。 SAN 存储可以是多个设备的网络,包括 SSD 和闪存存储、混合存储、混合云存储、备份软件和设备以及云存储。 选择适合于您用例的存储很重要。 以下是 NAS 和 SAN 的不同之处

SAN

  • 多设备网络
  • 块存储系统
  • 光纤通道网络
  • 针对多位用户进行了优化
  • 性能更快
  • 高度可扩展
  • 成本更高且设置复杂

NAS

  • 单个存储设备或 RAID
  • 文件存储系统
  • TCP/IP 以太网
  • 受限用户
  • 限速
  • 扩展选项有限
  • 成本更低且易于设置

云存储

云存储是一种网上在线存储(英语:Cloud storage)的模式,即把数据存放在通常由第三方托管的多台虚拟服务器,而非专属的服务器上。托管(hosting)公司运营大型的数据中心,需要数据存储托管的人,则通过向其购买或租赁存储空间的方式,来满足数据存储的需求。数据中心营运商根据客户的需求,在后端准备存储虚拟化的资源,并将其以存储资源池(storage pool)的方式提供,客户便可自行使用此存储资源池来存放文件或对象。实际上,这些资源可能被分布在众多的服务器主机上。 

你可能感兴趣的:(缓存,云计算,云原生)