Linux和Windows之间的各种挂载方式

很久不见了,年关已近。今天想记录的是有关于共享文件夹和挂载的一些事。

平常的开发中,涉及到文件上传的,基本都是在一台windows的电脑上,配置个目录,程序写到指定的位置就是了。上了生产就不是了,也许不只有你一个程序,其他应用也要读取你上传的文件。所以就需要一个公共的存储目录,放在单独的机器上。

分3种情况

1、同windows

如果所有的服务器系统都是win的,server A的D:\chat做为公共存储,首先把chat设置为共享,当然可以设置该共享文件夹的读写权限。



server B中,“映射网络驱动器”,选一个盘符,文件夹格式别写错,\\10.199.101.253\chat的chat就是我们设置了共享的文件夹。


这样,在server B中,就可以通过X:\chat的目录,把文件远程地写入到server A的chat中


2、同Linux

同Linux的也好搞,要使用mount命令

如果server A 是共享服务器,ip是100.0.0.1,目录是/usr/data/chat,server B是应用服务器,ip是100.0.0.2,B要使用A的chat,在B上用root用户,终端中使用以下命令

mount  -t  nfs  100.0.0.1:/usr/data/chat  /usr/data/chat
卸载挂载也很简单,root用户执行

umount /usr/data/chat
遇到设备忙无法卸载时(umount: /dsg: device is busy),使用$ fuser -m –k /usr/data/chat 解除进程对目录的占用再卸载。具体fuser的用法请自行查找


3、Linux和Windows

这也是我前两天刚遇到的,客户生产环境一些是linux一些是win,方法如下:

mount -t  cifs  -o  username=administrator,password=admin  //200.0.0.1/chat/  /usr/data/chat
其中username和password是windows的用户名和密码,把linux上的usr/data/chat 连接到 win上的共享目录chat上。使用df,发现挂成功。

不过后来发现一个问题,linux上的应用往Chat写文件时,提示说can`t not save,估计是没权限。用"ls-l"查看挂载文件的权限设置是drwxr-xr-x,很明显没有写权限。想用chmod给chat赋权,居然提示没有权限。 莫非是要在挂之前给/usr/data赋权,所以卸了,赋权了再挂,还是不行。找资料看看是怎么回事。

终于在一篇文章中找到答案,可以添加两个参数即可达到我们所要的效果:

mount -t smbfs -o username=**,password=**,uid=***,gid=** //200.0.0.1/chat  /usr/data/chat  

mount -t cifs -o username=**,password=**,uid=**,gid=** //200.0.0.1/chat  /usr/data/chat  

属性中的gid、uid,是你想要让挂载属于哪个用户的gid和uid。至于这个gid和uid,可以使用id username来获得,比如weblogic用户

[root@localhost online]# id weblogic
uid=500(weblogic) gid=0(root) 组=0(root)
试了一下,成功了。

机器重启自动挂载,vi /etc/fstab最后加入:

//200.0.0.1:chat   /usr/data/chat   cifs   defaults,  username=**,password=**,gid=**,uid=**  0  2


有时候在卸载的时候,会遇到无法卸载的情况,这是因为有进程在使用设备。这时可以用 fuser 来解除。

[root@localhost ~]# df
Filesystem                 1K-blocks     Used Available Use% Mounted on
/dev/mapper/datavg-lv_root  39015044 37016824     16372 100% /
tmpfs                        2996452      144   2996308   1% /dev/shm
/dev/sda1                     198337    34922    153175  19% /boot
//172.16.41.36/chat        104854524 54909952  49944572  53% /usr/data/online/chat
用df可以看到  /usr/data/online/chat挂到41.36/chat去了。

执行umount /usr/data/online/chat提示Device is busy。

[root@localhost chat]# fuser -m -v /usr/data/online/chat/
                     用户     进程号 权限   命令
/usr/data/online/chat/:
                     root      20420 ..c.. bash

参数说明:    
    -m 显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备
    -v 给出详细的输出,可以看出,是哪个程序还在霸占着移动设备,fuser 还给出了程序的进程号,知道了进程号,你就可以随便怎么处置这个程序了。
    -k 可以自动把霸占着 /media/USB/ 的程序杀死。
    -i 如果你不是很明确是否要杀死所有霸占设备的程序,这样每杀死一个程序之前都会询问
所以,再加个-k ,就可以kill掉了。


mount使用的用法还有很多,其他使用方法请自行搜索。要过年了,祝大家快乐,幸福。新的一年,钱多,事少,离家近

鸣谢这篇博文

也鸣谢这篇博文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值