Linux NFS挂载,实现异地文件备份

Linux NFS挂载,实现异地文件备份,第1张

最近做了一个文件的异地备份,采用网络挂载的方式,效果比之前用sync拷贝要方便的多。

也比之前简单的多,其实也就是几件事情。

首先是,需要备份的服务器和备份的服务器都装上nfs。

yum install nfs-utils

有的可能还需要单独安装一下rpcbind

那就

yum install rpcbind

接着在被挂载服务器编写配置文件

vim  /etc/exports

/root/work 19216803(rw,no_root_squash,no_all_squash,async)

/root/work 192168016(rw,no_root_squash,no_all_squash,async)

如像这样,授权了本地的/root/work 目录可以被两个服务器访问,权限是读写(rw)

这一部分就完成了。

接下来是需要备份的服务器:

安装玩nfs以后,在/mnt目录下建一个目录(通常都是在这个目录下,别问为什么?问就是通用习惯。)

cd  /mnt

mkdir backserver

这就完成了目录创建

接着也是最重要的一步

mount -t nfs 192168018:root/work/backup /mnt/backserver/

这条命令的意思是挂载192168018:root/work/backup目录到本机的/mnt/backserver/

-t 是指定挂载类型,nfs,就是网络文件系统的简称。

这样之后,本机的/mnt/backserver/存的文件实际上是存在192168018:root/work/backup目录下的。

接下来就是一个见的文件拷贝命令。

rsync -avz /usr/local/nginx /usr/local/tomcat  /mnt/backserver/09back

就把文件备份到192168018:root/work/backup目录下了。

实现自动备份就更简单了,直接把刚才的命令写入shell脚本

保存为backupsh

然后加入系统定时计划

crontab -e

30 3 sh /root/work/work/backupsh

意思是每天三点执行一次脚本,就完成了自动异地备份。

整个过程还是很简答的,其中涉及一个cs的模式。

需要知道:

1,是客户端挂载到服务端。

2,服务端需要授予客户端访问权限。

 NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。配置NFS服务

LINUX NFS安装和使用,具体步骤如下:

1 安装

需要安装 portmap和nfs-utils这两个包,下载rpm包后用rpm安装或者直接用yum安装都可以。

rpm -ivh portmap-40-65221i386rpm

rpm -ivh nfs-utils-109-50el5i386rpm

2 配置

配置文件是/etc/exports,如果不存在需要自己创建。

/etc/exports文件内容格式:

<输出目录> [客户端1域名/IP(选项(访问权限,用户映射,其他))] [客户端2域名/IP 选项(访问权限,用户映射,其他)]

NFS主要的选项有3类:

A 访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

B 用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash相反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash相反;

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

C 其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

例如,我们在namenode1机器上配置做如下配置

/home/dfs/nfs_share_edits/ namenode2(rw)

这个配置是把namenode1上的/home/dfs/nfs_share_edits目录设置成共享,可以给namenode2来访问,访问权限是可读写。

3 启动

sudo service portmap start

sudo service nfs start

查询状态

service portmap status

service nfs status

停止服务

service nfs stop

service portmap stop

4 客户端挂载

命令格式

mount NFS服务器IP/域名:共享目录本地挂载目录

例如,在namenode2机器上运行mount命令挂载namenode1的NFS共享目录

mkdir /home/dfs/nfs_share_edits

sudo mountnamenode1:/home/dfs/nfs_share_edits /home/dfs/nfs_share_edits

这是把namenode2把namenode1的NFS共享目录挂载到本地,这样就可以访问远程的共享目录了,挂载前需要先创建本地的挂载目录。

挂载之后,可以用mount命令查看挂载状态

sudo mount | grep -i nfs

卸载命令

sudo umount namenode1:/home/dfs/nfs_share_edits

5 相关的守护进程

nfsd

它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

mountd

它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

portmap

主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

6 相关的命令

#查看配置

exportfs

#默认查看共享的服务

showmount -e

#查看已经与客户端连接上的目录信息

showmount -a

服务器端

1检查所需要的包

[root@app71 ~]# rpm -qa | grep nfs

nfs-utils-123-36el6x86_64

nfs4-acl-tools-033-6el6x86_64

nfs-utils-lib-115-6el6x86_64

2 配置输出选项

[root@app71 ~]# vi /etc/exports 

/mnt/iso 19216811(rw,sync,no_root_squash)

3 启动NFS服务

[root@app71 ~]# service nfs start

4 查看共享

[root@app71 ~]# showmount -e

Export list for app71:

/mnt/iso 3232990/24

5 开机启动

[root@app71 ~]# chkconfig --level 35 nfs on

客户端

创建挂载点mkdir -p /mnt/bk

mount -t nfs 192168110:/mnt/iso /mnt/bk

使用df -h查看/mnt/bk是否挂载成功。

将/etc/mtab中关于nfs的行增加到/etc/fstab中,实现自动挂载,注意先启动服务器。使用mount -av来查看自动挂载是否正常,正常情况文件系统挂载点无任何变化。

如果是oracle备份需要指定参数,包括读写缓冲,版本,超时等。更多信息可查看man 手册

仔细检查一下你的portmap,

先看看portmap是否真的启动了

ps -ef | grep portmap

rpc 738 1 0 Oct16 00:00:00 portmap

如果确实启动了,再看看rpc是否工作

/usr/sbin/rpcinfo -p localhost

program vers proto port

100000 2 tcp 111 rpcbind

100000 2 udp 111 rpcbind

100024 1 udp 32768 status

100024 1 tcp 32768 status

100007 2 udp 657 ypbind

100007 1 udp 657 ypbind

100007 2 tcp 660 ypbind

100007 1 tcp 660 ypbind

391002 2 tcp 32769 sgi_fam

300019 1 tcp 764 amd

300019 1 udp 765 amd

100021 1 udp 32770 nlockmgr

100021 3 udp 32770 nlockmgr

100021 4 udp 32770 nlockmgr

如果这两样都没问题,NFS就应该能起来。

man portmap 可以看更详细的信息。

另外用 -v 参数启动可以看到更详细的输出信息。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux NFS挂载,实现异地文件备份

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情