Linux U盘或硬盘的挂载及卸载


Catalogue
  1. 1. 目录解释
  2. 2. 确定磁盘名称
  3. 3. 挂载(mount)/卸载(umount)磁盘
  4. 4. Troubleshooting
    1. 4.1. NTFS磁盘挂载失败
    2. 4.2. 取消挂载失败
    3. 4.3. 文件访问失败
  5. 5. mount命令基本用法
  6. 6. 自动挂载
  7. 7. 参考资料

Linux 系统下外界存储设备(U盘/移动硬盘等)在有些发行版下会默认自动挂载,并可以操作其中的文件,但部分系统默认并不挂载,则需要进行如下操作。


目录解释

/media 存放自动挂载的硬件(载点都是由系统自动建立和删除的)
/mnt 存放手动挂载的硬件
/dev 存放访问外部设备文件的接口

确定磁盘名称

使用 fdisk 命令查看已存在的磁盘信息,获取设备名称(路径):

1
fdisk -l		# 列出所有存储设备

得到类似如下结果。一般 /dev/sda 为系统盘,外接存储为 /dev/sdb,或是通过从磁盘大小参数判断是否为自己的U盘。此处以 /dev/sdb1 为例:

1
2
Device		Boot	Start		End		Sectors		Size	Id	Type
/dev/sdb1 * 2048 60549119 60547072 28.9G c W95 FAT32 (LBA)

硬盘的分区简介:
/dev/ 这个字串是所有设备文件所在的目录名。因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区。
分区名的前两个字母标明分区所在设备的类型。通常是 hd* (IDE 磁盘)或 sd* (SCSI 磁盘)。第三个字母标明分区所在的设备。
例如,/dev/hda(第一个 IDE 磁盘)或 /dev/sdb(第二个 SCSI 磁盘),最后的数字代表分区。前四个分区(主分区或扩展分区)是用数字从 1 排列到 4。逻辑分区从 5 开始。例如,/dev/hda3 是在第一个 IDE 硬盘上的第三个主分区或扩展分区;/dev/sdb6 是在第二个 SCSI 硬盘上的第二个逻辑分区。


挂载(mount)/卸载(umount)磁盘

  1. 挂载点必须是一个目录;
  2. 挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount 以后会恢复正常;
  3. 光盘、软盘、其他操作系统使用的文件系统的格式与 Linux 使用的文件系统格式是不一样的。光盘是 ISO9660;软盘是 fat16 或 ext2;Windows NT 是 fat16、NTFS;Windows98 是 fat16、fat32;Windows2000 和 WindowsXP 是 fat16、fat32、 NTFS。挂载前要了解 Linux 是否支持所要挂载的文件系统格式。

为U盘挂载创建一个文件夹(挂载点):

1
mkdir /mnt/usbmedia				# 创建挂载点

执行以下命令挂载磁盘,成功后 /mnt/usbmedia 目录即为U盘内容:

1
2
3
mount /dev/sdb1 /mnt/usbmedia	# 将/dev/sdb1挂载至/mnt/usbmedia
df -h # 查看设备挂载情况,或:
lsblk -f

取消挂载(卸载/弹出)磁盘:

1
2
3
umount /dev/sdb1				# 或:
umount /mnt/usbmedia
rmdir –p /mnt/usbmedia # 删除挂载目录(选做)
  • 注意:确保取消挂载磁盘后再拔出磁盘。

Troubleshooting

NTFS磁盘挂载失败

  • 报错提示:Error mounting: mount: unknown filesystem type ‘ntfs’。

若你的U盘文件系统是 Windows 下常用的比如 NTFS,但当前的 Linux 系统又无法读取你 NTFS 文件系统,此时可安装 ntfs-3g 软件:

1
2
apt-get install ntfs-3g					# 安装NTFS驱动
mount -t ntfs /dev/sdb1 /mnt/usbmedia # 执行挂载

取消挂载失败

  • 报错提示:target is busy

若取消挂载时显示还有进程在访问挂载点,此时可尝试强制关闭该进程:

1
2
sudo lsof /mnt/usbmedia	# 查看有哪些进程正在使用这个设备
kill [PID] # 强制关闭进程(指定PID)

文件访问失败

  • 报错提示:permission denied

若想把 Linux 系统内文件拷贝到U盘中去,但显示权限问题(指令已经用sudo修饰),此时可用如下指令修改文件权限:

1
2
chmod 777 /mnt/usbmedia		# 根目录,或:
chmod 777 -R /mnt/usbmedia # 包含所有子文件夹
  • 注意:上述指令指的是将指定文件(夹)的权限提升到最大。

mount命令基本用法

1
mount [-fnrsvw]  [-t vfstype] [-o options] device dir
参数
device 要挂载的设备
dir 表示挂载点
-t 指定设备的文件系统类型
文件系统类型选项
minix Linux最早使用的文件系统
ext2 Linux目前的常用文件系统
msdos MS-DOS 的 FAT
vfat Win85/98 的 VFAT
nfs 网络文件系统
iso9660 CD-ROM光盘的标准文件系统
ntfs Windows NT的文件系统
hpfs OS/2文件系统,Windows NT 3.51之前版本的文件系统
auto 自动检测文件系统

自动挂载

配置 /etc/fstab 文件,可以实现每次开机时,Linux 自动将需要挂载的 Linux 分区挂载上。

1
2
3
4
5
6
7
# /etc/fstab: static file system information.
# ...
# <file system> <mount point> <type> <options> <dump> <pass>
# 要挂载的分区 挂载位置 文件系统类型 挂载参数 备份标志 文件系统检查标志
/dev/sdb1 /mnt/usbmedia vfat defaults,codepage=936,iocharset=cp936 0 0
/image.iso /mnt/isoimage iso9660 defaults,ro,loop 0 0
/dev/cdrom1 /mnt/cdrom1 udf,iso9660 noauto,owner,kudzu,ro 0 0
default包含参数
rw 以可读写模式挂载
suid 开启用户ID和群组ID设置位
dev 可解读文件系统上的字符或区块设备
exec 可执行二进制文件
auto 自动挂载
nouser 使一般用户无法挂载
async 以非同步方式执行文件系统的输入输出操作
  • 注意codepage=936iocharset=cp936 参数以支持中文文件名。

参考资料