总结Linux中mount挂载问题
vfat文件编码方式
fat32文件名分为两种,短文件名和长文件名,两种文件名在磁盘上的存储方式是不同的,长文件名在目录项中特殊的标记,短文件名也就是8.3格式,对于包含中文的任何文件来说都不可能是短文件名。mount挂载时默认将其变成小写,你可以加-o shortname=winnt来使其和win2k/xp一致,长文件名都是unicode的,以utf16格式存储。
codepage与iocharset
对于挂载fat32磁盘来说,codepage不需要设置,因为它只对短文件名编码方式起作用。系统默认cp437就足够了。unix世界里很多程序都不处理utf16,iocharset将16位unicode字符转成其他字符集,系统默认为iso8859-1,一般把它设置成linux系统使用的字符集,如cp936(GBK),utf8(注:不过linux系统推荐不要使用iocharset选项,推荐直接使用-o utf8 或者utf8=true,具体可参见linux-2.6.19/Documentation/filesystems/vfat.txt原文)。
一般手工挂载/卸载步驟
-
找到需要挂载的设备名,通过查看所有块设备: cat /proc/partitions 或 fdisk -l
-
如果还是不清楚,可以对比查看已挂载设备: mount 或 mount -l (-l选项会多输出卷标)
-
找到设备后,选择一个空目录作为挂载点, 如挂载u盘/dev/sda1到/mnt下,系统字符设定为utf8:
mount -t vfat /dev/hda /mnt -o utf8
不加-t vfat在很多情况下也是可以的,但手册上建议最好指定,因为不加-t的话,mount会先去读根据/etc/filesystems,/proc/filesystems中的文件系统类型进行猜测,只是一种启发式的猜测(与幻数magic有关),可能会出现问题。
-
卸载设备
确保当前目录不在挂载目录中,并关闭所有使用挂载目录中文件的程序:umount 。输出是device busy,可以使用fuser查看哪个进程号正在使用该设备,结合ps aux应该能解决问题(注:-f虽然是强制卸载的含义,但只是针对nfs设计的)。
固定设备最好设定在/etc/fstab中
对于最后一项,如果/根分区要检查设为1,ext2/3最好设成1,其它文件系统要检查的话需设成2,对于fat32,ntfs文件系统个人觉得没有必要。例如:
#
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda7 swap swap defaults 0 0
/dev/hda8 / ext3 defaults 0 1
/dev/hda1 /media/winc vfat ro,uid=1000,utf8 0 0
/dev/hda5 /media/wind vfat rw,uid=1000,utf8 0 0
/dev/hda6 /media/wine vfat rw,uid=1000,utf8 0 0
/dev/sda1 /media/sda1 vfat rw,user,utf8,noauto 0 0
系统在init加载完驱动模块后,会用一个类似mount -a的命令对/etc/fstab中的设备进行加载,因此,有些人觉得没有必要每次都挂载那些fat32盘,只要在/etc/fstab选项中加上noautoid就可以了,cdrom(/dev/hdc或/dev/cdrom)也可以加上noauto放在这里。登录进去之后如果想要挂载,mount设备名或挂载点就好了。
注:user选项的意思可以让任何人都mount该设备,不过如果其他人或系统已经将其mount上了,其余非root用户就不能umount; 要想让任何人都可以umount该设备,将user选项改成users。
mount nfs文件系统提示Operation not supported错误问题的排查
- 检查是否安装nfs server:
apt install nfs-kernel-server
- 检查是否启动nfs server:
systemctl start nfs-kernel-server
- 检查是否配置exports目录:
cat /etc/exports
,添加需要导出的目录,例如/home *(rw,sync,no_root_squash,insecure)
- 检查nfs server支持的协议版本:
sudo cat /proc/fs/nfsd/versions
,嵌入式设备大部分可能只支持2的版本 - 配置nfs server支持nfs 2.0协议:
cat /etc/default/nfs-kernel-server
,添加配置RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
- 重新启动nfs service:
sudo systemctl restart nfs-kernel-server
- 再次确认支持的版本:
sudo cat /proc/fs/nfsd/versions
,输出应为+2 +3 +4 +4.1 +4.2
推荐阅读
-
深入探索Linux学习笔记(二):挂载的概念及mount命令的功能
-
Linux中挂载的概念及mount命令的用途是什么?
-
Linux命令之挂载文件系统mount-使用
-
【Linux】深入剖析Linux挂载原理:MOUNT指令 Nas自动挂载方法解析
-
磁盘分区和创建文件系统在Linux(十三)中的挂载
-
在Linux中重新分配磁盘,迁移数据并更改文件路径分区挂载点
-
深入解析Linux mount命令及其挂载功能
-
如何在Linux系统中挂载Windows共享文件夹
-
【Linux】Linux的挂载原理 |MOUNTlinux 挂载_图解Linux中的挂载原理 linux 挂载_图解Linux中的挂载原理
-
Linux常用命令——挂载 mount