您的位置:首页 > 运维架构 > Linux

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

2017-01-18 17:38 417 查看
很久不见了,年关已近。今天想记录的是有关于共享文件夹和挂载的一些事。
平常的开发中,涉及到文件上传的,基本都是在一台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使用的用法还有很多,其他使用方法请自行搜索。要过年了,祝大家快乐,幸福。新的一年,钱多,事少,离家近

鸣谢这篇博文
也鸣谢这篇博文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 挂载