一、Linux 磁盘挂载和mount共享


针对Linux服务器的磁盘挂载mount和共享做简单操作说明:

1、  查看已使用的磁盘情况

df –h



2、  查看所有磁盘

fdisk –l


3、  查看指定磁盘“/dev/xvde”的分区情况

fdisk -l /dev/xvde


如图可以看到,改磁盘并未分区

4、  我们现在需要将/dev/xvde磁盘挂载mount到文件系统的/opt/huiyy目录上,

首先对磁盘“/dev/xvde”分区​(这里我们采用1个分区)

命令fdisk /dev/xvde回车,按如下操作进行:


输入w写入


使用fdisk –l查看刚刚分配的磁盘号


5、 格式化磁盘

命令mkfs -t ext3 /dev/xvde1

-t 指定格式化磁盘的文件系统类型为ext3,默认不指定为ext2(linux老文件系统类型)

后面跟刚刚创建的分区号“/dev/xvde1”



6、  挂载磁盘

a)        创建磁盘挂载目标文件夹

命令mkdir /opt/huiyy

b)        挂载磁盘

命令mount /dev/xvde1/opt/huiyy

c)        记录到/ext/fstab文件中(防止重启后挂载丢失)

命令vi /etc/fstab


至此磁盘挂载完成,现在我们可以向/opt/huiyy中写文件了,文件将会被写入到我们挂载的磁盘中。


7、  配置共享

共享目录“/opt/huiyy/resource”和“/opt/huiyy/log”权限“rw,sync,no_root_squash”

命令vi /etc/exports编辑内容后:wq保存退出


共享查看命令为 more/etc/exports


8、  客户端mount此目录

我们把以上配置共享目录的服务器作为服务器A,把我们现在准备mount共享目录的服务器作为服务器B

a)        登录服务器B

b)        mount目录 “/opt/huiyy/log”(其中61.132.254.160为服务器A)

mount  -t nfs -orw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=061.132.254.160:/opt/huiyy/log /opt/huiyy/log

/opt/huiyy/log 是挂载到本机的目录,可以自己定义。

c)        保存mount挂载配置到/etc/fstab(防止服务器重启后挂载丢失)

命令vi /etc/fstab编辑

命令cat /etc/fstab查看配置


现在服务器B和文件源服务器A上都可以对目录“/opt/huiyy/log”下创建文件、目录了。



二、mount常用命令


1、启动NFS服务器

为了使NFS服务器能正常工作,需要启动portmap和nfs两个服务,并且portmap一定要先于nfs启动。

#service portmap start         

#service nfs start

RHEL4和5是portmap 和 nfs,RHEL6以后改名叫作rpcbind 和 nfs-server 了

另外RHEL 7以后对服务的操作命令建议使用:systemctl [status|stop|start|restart] [serviceName] 

如:systemctl status rpcbind   、  systemctl restart nfs-server


2、查询NFS服务器状态

#service portmap status

#service nfs status


3、停止NFS服务器

要停止NFS运行时,需要先停止nfs服务再停止portmap服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止portmap服务

#service nfs stop

#service portmap stop


4、重启portmap 和nfs 服务

#service portmap restart

#service nfs restart

#exportfs


5、设置NFS服务器的自动启动状态

对于实际的应用系统,每次启动LINUX系统后都手工启动nfs服务器是不现实的,需要设置系统在指定的运行级别自动启动portmap和nfs服务。

#chkconfig --list portmap

#chkconfig --list nfs

设置portmap和nfs服务在系统运行级别3和5自动启动。

#chkconfig --level 35 portmap on

#chkconfig --level 35 nfs on


6、服务器端使用showmount命令查询NFS的共享状态

#showmount –e       //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错

#showmount –a IP    显示指定NFS服务器的客户端以及服务器端在客户端的挂载点

#showmount –d IP    显示指定NFS服务器在客户端的挂载点 #showmount –e IP    显示指定NFS服务器上的共享目录列表(或者叫输出列表)


7、显示已经与客户端连接上的目录信息

#showmount -a


8、客户端使用showmount命令查询NFS的共享状态

#showmount -e NFS服务器IP



三、mount与防火墙配置


如果服务器端的防火墙有开着的话,在我们执行mount的时候将会提示错误,如下:

mount:mount to NFS server '192.168.0.10' failed: System Error: No route to host.

这个主要是因为防火墙的问题导致的防火墙上开放对应端口即可

     由于nfs服务需要开启 mountd,nfs,nlockmgr,portmapper,rquotad这5个服务,需要将这5个服务的端口加到iptables里面

     而nfs 和portmapper两个服务是固定端口的,nfs为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要先把这3个服务的端口设置成固定的。

    用命令 rpcinfo -p 查看当前这5个服务的端口,并记录下来。

    其中nfs 2049、portmapper111,以及剩下3个服务的端口各记录一个,这样我们就得到了5个端口,如下:

    nfs 2049

    portmapper 111

    mountd 976

    rquotad 966

    nlockmgr 33993

    下面将mountd、rquotad、nlockmgr这3个端口设置为固定端口,修改/etc/service,添加以下内容:

    vi/etc/services

     在文件的最后一行添加:

    mountd  976/tcp

    mountd  976/udp

    rquotad  966/tcp

    rquotad  966/udp

    nlockmgr 33993/tcp

    nlockmgr 33993/udp

    保存并退出。


    然后设置nfs配置文件,配置端口使 rquotad、nlockmgr、mountd的端口固定,如下:

    vi/etc/sysconfig/nfs

RQUOTAD_PORT=966

LOCKD_TCPPORT=33993

LOCKD_UDPPORT=33993

MOUNTD_PORT=976

其中 portmapper和nfs 服务端口是固定的分别是 111和2049

    重启下nfs服务。 service nfs restart

    在防火墙中开放这5个端口

编辑iptables配置文件   

     vim /etc/sysconfig/iptables

     添加如下行:


-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 976 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 966 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 33993 -j ACCEPT


-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 976 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 2049 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 966 -j ACCEPT

-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 33993 -j ACCEPT


保存退出并重启iptables

service iptables restart

然后重新挂载即可。


补充资料:


ro                      只读访问

rw                      读写访问

sync                    所有数据在请求时写入共享

async                   NFS在写入数据前可以相应请求

secure                  NFS通过1024以下的安全TCP/IP端口发送

insecure                NFS通过1024以上的端口发送

wdelay                  如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

hide                    在NFS共享目录中不共享其子目录

no_hide                 共享NFS目录的子目录

subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check        和上面相对,不检查父目录权限

all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash           保留共享文件的UID和GID(默认)

root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squash            root用户具有根目录的完全管理访问权限

anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID




---------------------------

(完)