NFS 文件系统搭建+对接openstack

NFS 文件系统搭建

NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器共享的数据目录挂载到NFS客户端本地系统中(就是某一个关在点下),从客户端本地看,NFS服务器端共享目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和linux的samba服务类似,只不过一般情况下,Windows网络共享服务或samba服务用户办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,若是大型网站,那么有可能还会用到更复杂的分布式文件系统Moosefs(mfs)、GlusterFS。

在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享中,例如BBS产品的图片、附件、头像(网站BBS的程序不要放在NFS共享中),然后前端所有节点在访问这些静态资源时都会读取NFS存储上的资源。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型网站应用频率更高。

实验环境:

CentOS7.2NFS server 服务器(IP: 10.0.0.30)
CentOS7.2NFS 客户端1(IP: 192.168.200.4)
windows 10NFS 客户端2(IP:192.168.10.56)

1、安装NFS 服务器

nfs-utils:nfs服务的主程序,包括rpc.nfsd、rpc.mountd两个daemons和相关的文档说明及执行命令文件等
rpcbind:centos6下面的rpc主程序(centos5下的是portmap)

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

[root@nfs-server ~]# systemctl start rpcbind

[root@nfs-server ~]# systemctl start nfs


[root@nfs-server ~]# vi /etc/exports

/data 192.168.100.10(rw,sync,all_squash)
/data 192.168.10.0/24(rw,sync,all_squash)

[root@nfs-server ~]# systemctl restart rpcbind
[root@nfs-server ~]# systemctl restart nfs
[root@nfs-server ~]# 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.
[root@xiandian mnt]# systemctl enable rpcbind
到此 NFS  搭建完成

2、nfs配置文件的格式
NFS共享的目录 NFS客户端地址(参1,参2,……) NFS客户端地址2(参1,参2,……)

/data 10.0.0.30(rw,sync)   /data  192.168.10.0/24(rw,sync)

常用格式说明实例
配置案例1/data 172.16.1.0/24(rw,sync) 允许客户端读写,并且数据同步写到服务器的磁盘里
配置案例2/data 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888) 允许客户端读写,并且数据同步写到服务器的磁盘里,并且指定客户端的uid和gid,早期生产环境中的一种配置,适合多客户端共享一个NFS单目录,如果所有服务器的nfsnodoby账户的UID相同,则本案例就没什么意义了
配置案例3/data 172.16.1.0/24(ro) 只读共享,用途:例如在生产环境中开发人员有查看服务器日志的需求,但是又不希望给开发服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端上查看某个生产服务器日志目录(NFS共享目录)的权限,但是,这不是唯一的方法.
客户端地址具体地址说明
授权单一客户端访问NFS172.16.1.41一般情况下,生产环境中此配置不多
授权整个网段访问NFS172.16.1.0/24指定网段为生产环境中最常见的配置,配置简单、维护方便
授权整个网段可访问NFS172.0.0.*指定网段的另外写法(不推荐使用)
授权某个域名客户端访问nfs.lzhnb.com生产环境中一般不使用
授权整个域名客户端访问*.lzhnb.com生产环境中一般不使用

NFS配置参数权限,具体如下表

参数名称参数用途
rw(熟记)表示可读写权限
sync(熟记)请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回,优点:数据安全不会丢,缺点:性能比不启用该参数要差
async(熟记)写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)
all_squash(熟记)不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用,在生产环境中配置NFS的重要技巧:1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)
anonuid(熟记)参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好
anongid(熟记)同anonuid,区别是把uid(用户id)换成gid(组id)

 

ro表示只读权限

 2、分别使用centos 7.2,windows10对NFS进行测试。

centos7.2:

[root@test ~]# mount -t nfs 192.168.200.4:/mnt /opt/
    
[root@test ~]# mount -t nfs 192.168.200.4:/mnt /mnt/

[root@test ~]# cd /mnt/
[root@test mnt]# ls
volume-8487f7db-f628-42ab-b9c4-2ebf2693166b

[root@ceph-1 mnt]# df -Th
Filesystem         Type      Size  Used Avail Use% Mounted on
/dev/vda1          xfs        20G  1.2G   19G   6% /
devtmpfs           devtmpfs  984M     0  984M   0% /dev
tmpfs              tmpfs    1001M     0 1001M   0% /dev/shm
tmpfs              tmpfs    1001M   17M  985M   2% /run
tmpfs              tmpfs    1001M     0 1001M   0% /sys/fs/cgroup
/dev/vdb1          xfs        50G  7.2G   43G  15% /opt/osd1
192.168.200.4:/mnt nfs4       50G   33M   50G   1% /mnt

windows 10:

 

 

 

然后等待安装完成,安装完成后打开cmd:

 

 

1、对接 openstack   cinder-volumes

[root@xiandian ~]# vi /etc/cinder/nfs_shares 
192.168.200.4:/mnt

[root@xiandian ~]# chmod +755 /etc/cinder/nfs_shares 

[root@xiandian ~]# vi /etc/cinder/cinder.conf 
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 127.0.0.1
enabled_backends = nfs
glance_api_servers = http://xiandian:9292
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares

[lvm]    //启用多后端的话就不要注释
#volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
#volume_group = cinder-volumes
#iscsi_protocol = iscsi
#iscsi_helper = lioadm

[root@xiandian ~]# cinder service-list
+------------------+--------------+------+---------+-------+----------------------------+-----------------+
|      Binary      |     Host     | Zone |  Status | State |         Updated_at         | Disabled Reason |
+------------------+--------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler |   xiandian   | nova | enabled |  down | 2019-05-14T21:23:17.000000 |        -        |
|  cinder-volume   | xiandian@lvm | nova | enabled |  down | 2019-05-14T21:23:04.000000 |        -        |
|  cinder-volume   | xiandian@nfs | nova | enabled |   up  | 2019-05-14T21:24:43.000000 |        -        |
+------------------+--------------+------+---------+-------+----------------------------+-----------------+
[root@xiandian ~]# cinder create --name a 1
+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                  []                  |
|       availability_zone        |                 nova                 |
|            bootable            |                false                 |
|      consistencygroup_id       |                 None                 |
|           created_at           |      2019-05-14T21:25:00.000000      |
|          description           |                 None                 |
|           encrypted            |                False                 |
|               id               | 97b712dc-a82f-4f7f-ae1b-fbe0597d5889 |
|            metadata            |                  {}                  |
|        migration_status        |                 None                 |
|          multiattach           |                False                 |
|              name              |                  a                   |
|     os-vol-host-attr:host      |                 None                 |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id |                 None                 |
|  os-vol-tenant-attr:tenant_id  |   0ab2dbde4f754b699e22461426cd0774   |
|       replication_status       |               disabled               |
|              size              |                  1                   |
|          snapshot_id           |                 None                 |
|          source_volid          |                 None                 |
|             status             |               creating               |
|           updated_at           |                 None                 |
|            user_id             |   53a1cf0ad2924532aa4b7b0750dec282   |
|          volume_type           |                 None                 |
+--------------------------------+--------------------------------------+

 

2 、对接nova.

[root@xiandian  ]# mount 10.0.0.30:/mnt/ /var/lib/nova/instances/

[root@xiandian ~]# nova boot --flavor 1 --image a  --nic net-id=bd923693-d9b1-4094-bd5b-22a038c44827 test

[root@xiandian instances]# nova list
+--------------------------------------+------+--------+------------+-------------+----------------------+
| ID                                   | Name | Status | Task State | Power State | Networks             |
+--------------------------------------+------+--------+------------+-------------+----------------------+
| 6c6c6ba8-f3b0-46c1-b0d7-d2e5223119ca | ll   | ACTIVE | -          | Running     | sharednet1=10.0.0.32 |
+--------------------------------------+------+--------+------------+-------------+----------------------+

[root@xiandian instances]# pwd
/var/lib/nova/instances
[root@xiandian instances]# ls
6c6c6ba8-f3b0-46c1-b0d7-d2e5223119ca  _base  locks

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值