感谢支持
我们一直在努力

在Linux系统下mount各种FS(及samba问题解决)

最近在家用虚拟机搭了Windows和Linux两套系统。通过远程桌面连接图形界面的代价太高,因此更喜欢ssh,自然就把Windows上的数据共享出来mount到Linux上。整个过程还是比较简单,但是接触到两篇文章觉得写的很有用。就暂时把这里当作是KB保存一下吧。


============================================================


在Linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享。 


现在许多企业的计算机系统都是由UNIX系统、Linux系统和Windows系统组成的混合系统,不同系统之间经常需要进行数据交换。下面我根据自己的实际工作经验介绍一下如何在Linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享。


挂接命令(mount)


首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。


命令格式:


mount [-t vfstype] [-o options] device dir


其中:


1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:


光盘或光盘镜像:iso9660


DOS fat16文件系统:msdos


Windows 9x fat32文件系统:vfat


Windows NT ntfs文件系统:ntfs


Mount Windows文件网络共享:smbfs


UNIX(Linux) 文件网络共享:nfs


2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:


loop:用来把一个文件当成硬盘分区挂接上系统


ro:采用只读方式挂接设备


rw:采用读写方式挂接设备


iocharset:指定访问文件系统所用字符集


3.device 要挂接(mount)的设备。


4.dir设备在系统上的挂接点(mount point)。


挂接光盘镜像文件


由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;三、硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实Linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。


1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。


#cp /dev/cdrom /home/sunky/mydisk.iso 或


#dd if=/dev/cdrom of=/home/sunky/mydisk.iso


注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso


2、将文件和目录制作成光盘镜像文件,执行下面的命令。


#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir


注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk


3、光盘镜像文件的挂接(mount)


#mkdir /mnt/vcdrom


注:建立一个目录用来作挂接点(mount point)


#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom


注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。


挂接移动硬盘


对Linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。


[root at pldyrouter /]# fdisk -l


Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes


255 heads, 63 sectors/track, 8924 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


/dev/sda1 1 4 32098+ de Dell Utility


/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS


/dev/sda3 2555 7904 42973875 83 Linux


/dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)


/dev/sda5 7905 8924 8193118+ 82 Linux swap


在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1 — /dev/sda4, /dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况


[root at pldyrouter /]# fdisk -l


Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes


255 heads, 63 sectors/track, 8924 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


/dev/sda1 1 4 32098+ de Dell Utility


/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS


/dev/sda3 2555 7904 42973875 83 Linux


/dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)


/dev/sda5 7905 8924 8193118+ 82 Linux swap


Disk /dev/sdc: 40.0 GB, 40007761920 bytes


255 heads, 63 sectors/track, 4864 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


/dev/sdc1 1 510 4096543+ 7 HPFS/NTFS


/dev/sdc2 511 4864 34973505 f Win95 Ext’d (LBA)


/dev/sdc5 511 4864 34973473+ b Win95 FAT32


大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。


#mkdir -p /mnt/usbhd1


#mkdir -p /mnt/usbhd2


注:建立目录用来作挂接点(mount point)


#mount -t ntfs /dev/sdc1 /mnt/usbhd1


#mount -t vfat /dev/sdc5 /mnt/usbhd2


注:对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。


#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1


#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2


Linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成Linux系统所特有的ext2、ext3格式。这样,在Linux下使用就更方便了。使用下面的命令直接挂接即可。


#mount /dev/sdc1 /mnt/usbhd1

挂接U盘


和USB接口的移动硬盘一样对Linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。


[root at pldyrouter root]# fdisk -l


Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes


255 heads, 63 sectors/track, 8924 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


/dev/sda1 1 4 32098+ de Dell Utility


/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS


/dev/sda3 2555 7904 42973875 83 Linux


/dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)


/dev/sda5 7905 8924 8193118+ 82 Linux swap


插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。


[root at pldyrouter root]# fdisk -l


Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes


255 heads, 63 sectors/track, 8924 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


/dev/sda1 1 4 32098+ de Dell Utility


/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS


/dev/sda3 2555 7904 42973875 83 Linux


/dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)


/dev/sda5 7905 8924 8193118+ 82 Linux swap


Disk /dev/sdd: 131 MB, 131072000 bytes


9 heads, 32 sectors/track, 888 cylinders


Units = cylinders of 288 * 512 = 147456 bytes


Device Boot Start End Blocks Id System


/dev/sdd1 * 1 889 127983+ b Win95 FAT32


Partition 1 has different physical/logical endings:


phys=(1000, 8, 32) logical=(888, 7, 31)


系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。


#mkdir -p /mnt/usb


注:建立一个目录用来作挂接点(mount point)


#mount -t vfat /dev/sdd1 /mnt/usb


注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。


#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

挂接Windows文件共享


Windows网络共享的核心是SMB/CIFS,在Linux下要挂接(mount)Windows的磁盘共享,就必须安装和使用samba软件包。现在流行的Linux发行版绝大多数已经包含了samba软件包,如果安装Linux系统时未安装samba请首先安装samba。当然也可以到


www.samba.org网站下载……新的版本是3.0.10版。


当Windows系统共享设置好以后,就可以在Linux客户端挂接(mount)了,具体操作如下:


# mkdir –p /mnt/samba


注:建立一个目录用来作挂接点(mount point)


# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba


注:administrator 和 pldy123 是ip地址为10.140.133.23 Windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享


如此就可以在Linux系统上通过/mnt/samba来访问Windows系统磁盘上的文件了。以上操作在RedHat as server 3、redflag server 4.1、SUSE server 9以及Windows NT 4.0、Windows 2000、Windows xp、Windows 2003环境下测试通过。


挂接UNIX系统NFS文件共享


类似于Windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在Linux下如何mount nfs网络共享。


在Linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。


1、Solaris系统NFS服务端配置方法如下:


(1)修改 /etc/dfs/dfstab, 增加共享目录


share -F nfs -o rw /export/home/sunky


(2)启动nfs服务


# /etc/init.d/nfs.server start


(3)NFS服务启动以后,也可以使用下面的命令增加新的共享


# share /export/home/sunky1


# share /export/home/sunky2


注:/export/home/sunky和/export/home/sunky1是准备共享的目录


2、Linux系统NFS服务端配置方法如下:


(1)修改 /etc/exports,增加共享目录


/export/home/sunky 10.140.133.23(rw)


/export/home/sunky1 *(rw)


/export/home/sunky2 Linux-client(rw)


注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、Linux- client是被允许挂接此共享Linux客户机的IP地址或主机名。如果要使用主机名Linux-client必须在服务端主机/etc/hosts文件里增加Linux-client主机ip定义。格式如下:


10.140.133.23 Linux-client


(2)启动与停止NFS服务


/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)


/etc/rc.d/init.d/nfs start 启动NFS服务


/etc/rc.d/init.d/nfs stop 停止NFS服务


注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs -rv也可以达到同样的效果。


3、Linux客户端挂接(mount)其他Linux系统或UNIX系统的NFS共享


# mkdir –p /mnt/nfs


注:建立一个目录用来作挂接点(mount point)


#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs


注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。


如此就可以在Linux客户端通过/mnt/nfs来访问其它Linux系统或UNIX系统以NFS方式共享出来的文件了。以上操作在redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过。


========================================================================================


如何在Windows和Linux中共享文件?samba也许是个不错的选择。但是我用的CentOS5中若用smbfs就是一个“Wrong fs type”。仔细查找了相关资料,找出几个解决方法:


1 mount -o username=your_name,password=your_password //server/share_folder /mount_point


2 mount -t cifs username=your_name,password=your_password //server/share_folder /mount_point


这两种方法本质都一样,但要注意your_name用户必须对share_folder拥有完全操作的权限,当然若要只读甚至随便乱写个用户名密码都可以。


3 写到/etc/fstab文件中,在该文件最后添加一行:


//server/share_folder /mount_point  cifs username,password,rw


这样还是有个缺点,即用户名和密码都以明文的方式暴露了,还可以这样:


4 编辑/etc/fstab,按如下格式添加:


//server/share_folder /mount_point  cifs credential=/root/credential


而/root/credential中内容如下:


useername=your_name


password=your_password


但是还有个问题,普通用户是无权使用mount的,


5 使用sudo


6 对mount.cifs添加suid。

赞(0) 打赏
转载请注明出处:服务器评测 » 在Linux系统下mount各种FS(及samba问题解决)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏