使用NFS作为Glance存储后端

1. NFS服务介绍

(1)NFS简介

NFS网络文件系统提供了一种在类UNIX系统上共享文件的方法。目前NFS有3个版本:NFSv2、NFSv3、NFSv4。CentOS7默认使用NFSv4提供服务,优点是提供了有状态的连接,更容易追踪连接状态,增强安全性。NFS监听在TCP 2049端口上。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。在客户端看来,使用NFS的远端文件就像是在使用本地文件一样,只要具有相应的权限就可以使用各种文件操作命令(如cp、cd、mv和rm等),对共享的文件进行相应的操作。Linux操作系统既可以作为NFS服务器也可以作为NFS客户,这就意味着它可以把文件系统共享给其他系统,也可以挂载从其他系统上共享的文件系统。

为什么需要安装NFS服务?当服务器访问流量过大时,需要多台服务器进行分流,而这多台服务器可以使用NFS服务进行共享。NFS除了可以实现基本的文件系统共享之外,还可以结合远程网络启动,实现无盘工作站(PXE启动系统,所有数据均在服务器的磁盘阵列上)或瘦客户工作站(本地自动系统)。NFS应用场景多为高可用文件共享,多台服务器共享同样的数据,但是它的可扩展性比较差,本身高可用方案不完善。取而代之,数据量比较大的可以采用MFS、TFS、HDFS等分布式文件系统。

(2)NFS组成

两台计算机需要通过网络建立连接时,双方主机就一定需要提供一些基本信息,如IP地址、服务端口号等。当有100台客户端需要访问某台服务器时,服务器就需要记住这些客户端的IP地址以及相应的端口号等信息,而这些信息是需要程序来管理的。在Linux中,这样的信息可以由某个特定服务自己来管理,也可以委托给RPC来帮助自己管理。RPC是远程过程调用协议,RPC协议为远程通信程序管理通信双方所需的基本信息,这祥,NFS服务就可以专注于如何共享数据。至于通信的连接以及连接的基本信息,则全权委托给RPC管理。因此,NFS组件由与NFS相关的内核模块、NFS用户空间工具和RPC相关服务组成。主要由如下2个RPM包提供。

① nfs-utils:包含NFS服务器端守护进程和NFS客户端相关工具。

② rpcbind:提供RPC的端口映射守护进程及其相关文档、执行文件等。

若系统上还没有安装NFS的相关组件,可以使用如下命令安装。

[root@nfs ~]# yum install nfs-utils rpcbind

使用如下命令启动NFS的相关服务,并配置开机启动。

[root@nfs ~]# systemctl start rpcbind && systemctl enable rpcbind
[root@nfs ~]# systemctl start nfs && systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

与NFS服务相关的文件有:守护进程、systemd的服务配置单元、服务器端配置文件、客户端配置文件、服务器端工具、客户端工具、NFS信息文件等。

2. NFS服务安装与配置

(1)修改主机名

修改主机名,修改主机名后,使用CRT软件断开重新连接节点,以生效新主机名。

[root@localhost ~]# hostnamectl set-hostname nfs
[root@localhost ~]# hostname
nfs

(2)NFS服务安装

此处nfs-server节点使用的基础镜像为CentOS7.9,该基础镜像中已经安装了NFS服务,查看当前安装的NFS服务,命令如下:

[root@nfs ~]# rpm -qa |grep nfs-utils
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@nfs ~]# rpm -qa |grep rpcbind
rpcbind-0.2.0-49.el7.x86_64

可以看到nfs-utils和rpcbind服务已经安装完毕了。

(3)NFS服务配置

创建一个目录作为NFS的共享目录,命令如下:

[root@nfs ~]# mkdir /mnt/test
[root@nfs ~]# ll /mnt/
total 0
drwxr-xr-x. 2 root root 6 Jun 26 18:29 test

创建完共享目录后,编辑NFS服务的配置文件/etc/exports,在配置文件中加入一行代码,命令如下:

[root@nfs ~]# echo "/mnt/test 192.168.61.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)" >> /etc/exports
[root@nfs ~]# cat /etc/exports
/mnt/test 192.168.61.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)

生效配置,命令如下:

[root@nfs ~]# exportfs -r

配置文件说明:

● /mnt/test:为共享目录(若没有这个目录,请新建一个)。

● 192.168.61.0/24:可以为一个网段,一个IP,也可以是域名。域名支持通配符,例如,*.qq.com。

● rw:read-write,可读写。

● ro:read-only,只读。

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

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

● wdelay:延迟写操作。

● no_root_squash:NFS客户端连接服务端时,如果使用的是root,那么对服务端共享的目录来说,也拥有root权限。显然开启这项是不安全的。

● root_squash:NFS客户端连接服务端时,如果使用的是root,那么对服务端共享的目录来说,拥有匿名用户权限,通常它将使用nobody或nfsnobody身份。

● all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端共享的目录来说,都拥有匿名用户权限。

● anonuid:匿名用户的UID(User Identification,用户身份证明)值,可以在此处自行设定。

● anongid:匿名用户的GID(Group Identification,共享资源系统使用者的群体身份)值。

(4)NFS服务启动

nfs-server端启动NFS服务,命令如下:

[root@nfs ~]# systemctl start rpcbind && systemctl start nfs

nfs-server端查看可挂载目录,命令如下:

[root@nfs ~]# showmount -e 192.168.61.30
Export list for 192.168.61.30:
/mnt/test 192.168.61.0/24

至此,NFS服务的Server端配置完毕,接下来要让Controller节点作为NFS的Client端,配置Glance服务的后端存储使用NFS服务。

3. 配置NFS作为Glance后端存储

(1)配置Controller节点作为Client端

使用远程工具连接到Controller节点,查看是否安装了NFS服务的客户端,命令如下:

[root@controller ~]# rpm -qa |grep nfs-utils
nfs-utils-1.3.0-0.68.el7.2.x86_64

查看到Controller节点已经安装了nfs-utils工具,该节点可以作为NFS的Client端使用。

(2)挂载目录

在挂载目录之前,必须要弄清楚一件事情,就是Glance服务的后端存储在哪里,或者说,使用glance image-create命令上传的镜像会被存放到哪里。镜像会被存放到/var/lib/glance/images目录下,关于这个路径,感兴趣的读者可以自行上传镜像测试。

知道了Glance的存储路径,就可以挂载该目录到NFS服务了,命令如下:

[root@controller ~]# mount -t nfs 192.168.61.30:/mnt/test /var/lib/glance/images/

使用df命令查看挂载情况。

[root@controller ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   12M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   91G  3.4G   88G   4% /
/dev/mapper/centos-home  497M   26M  472M   6% /home
/dev/sda1                197M  146M   51M  75% /boot
tmpfs                    797M     0  797M   0% /run/user/0
192.168.61.30:/mnt/test   91G  1.5G   90G   2% /var/lib/glance/images

可以发现挂载成功。

(3)修改配置

在做完挂载操作后,此时Glance服务还不能正常使用,若使用glance image-create命令上传镜像的话,会报错,因为此时images目录的用户与用户组不是glance,而是root,需要把images目录的用户与用户组进行修改,命令如下:

[root@controller ~]# cd /var/lib/glance/
[root@controller glance]# chown glance:glance images/
[root@controller glance]# ll
total 0
drwxr-xr-x 2 glance glance 6 Jun 26 18:29 images

这个时候,Glance服务就可以正常使用了,使用cirros镜像进行测试,将

cirros-0.6.2-x86_64-disk.img上传至Controller节点,并上传,命令如下:

[root@controller ~]# glance image-create --name cirros --disk-format qcow2 --container-format bare --progress --file cirros-0.6.2-x86_64-disk.img
[=============================>] 100%
+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                                            |
+------------------+----------------------------------------------------------------------------------+
| checksum         | c8fc807773e5354afe61636071771906                                                 |
| container_format | bare                                                                             |
| created_at       | 2024-06-26T10:40:25Z                                                             |
| disk_format      | qcow2                                                                            |
| id               | eb91ab10-62f7-4141-9aad-ba90de7d8ab6                                             |
| min_disk         | 0                                                                                |
| min_ram          | 0                                                                                |
| name             | cirros                                                                           |
| os_hash_algo     | sha512                                                                           |
| os_hash_value    | 1103b92ce8ad966e41235a4de260deb791ff571670c0342666c8582fbb9caefe6af07ebb11d34f44 |
|                  | f8414b609b29c1bdf1d72ffa6faa39c88e8721d09847952b                                 |
| os_hidden        | False                                                                            |
| owner            | b0895efd70784108b94740a6bdfee44c                                                 |
| protected        | False                                                                            |
| size             | 21430272                                                                         |
| status           | active                                                                           |
| tags             | []                                                                               |
| updated_at       | 2024-06-26T10:40:27Z                                                             |
| virtual_size     | Not available                                                                    |
| visibility       | shared                                                                           |
+------------------+----------------------------------------------------------------------------------+

可以看到上传镜像成功。查看images目录下的文件,命令如下:

[root@controller ~]# ll /var/lib/glance/images/
total 20928
-rw-r----- 1 glance glance 21430272 Jun 26 18:40 eb91ab10-62f7-4141-9aad-ba90de7d8ab6

然后回到nfs节点,查看/mnt/test下的文件,命令如下:

[root@nfs ~]# ll /mnt/test/
total 20928
-rw-r-----. 1 161 161 21430272 Jun 26 18:40 eb91ab10-62f7-4141-9aad-ba90de7d8ab6

文件的ID相同,验证NFS作为Glance镜像服务的后端存储成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新宽网络

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值