实验系统:ubuntu18.04(桌面版)内核4.15.0-29-generic
可挂载设备类型:
- 实体设备(实体块文件系统):分区、磁盘、软盘、网络设备等硬件
- 文件(虚拟块文件系统):.ISO镜像等文件,虚拟硬件与终端等。
查看当前挂载
一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料(可取消写入)
# 查看当前挂载
mount
# 查看指定类型的挂载,例:tmpfs
mount -t tmpfs
# 查看当前支持的文件系统类型(不支持的使用modprobr ... 加载对应模块)
cat /proc/filesystems
# 列出所有使用的回环设备
losetup -a
# 列出可用块设备(其中包括loop*)
lsblk
# 查看路径是否为挂载点
mountpoint /mnt
创建文件系统
创建1G大小的文件
# 按块(块大小为1G)从“/dev/zero”中读取1个块到“loopfile.img”文件
dd if=/dev/zero of=loopfile.img bs=1G count=1
将文件格式化为 ext4 格式
# 格式化为ext4
mkfs.ext4 loopfile.img
# 查看文件类型
file loopfile.img
创建iso光盘映像文件
# 将/tmp/文件夹只作为ISO文件
mkisofs -r -o empty.iso /tmp/
# 挂载也用loop,但是为只读模式,即使指定--rw也无用,
# 因为 Linux内核的iso9660文件系统实现就是只读的,可以使用`isomaster`软件来修改或重新制作
临时挂载(重启后失效)
查看:
# 查看所有的loop设备
losetup -a
方法1:直接挂载
# 1.创建文件夹:mount挂载时指定目录需已存在,挂载后其中内容将无法被访问,可卸载挂载点后恢复访问
mkdir /mnt/test_mount_loop30
# 2.mount命令:使用loop模式将一个档案当成硬盘分割挂上系统
mount -o loop loopfile.img /mnt/test_mount_loop30
方法2:分步挂载
# 1.查找第一个未使用的循环设备(便于下一步使用)
losetup -f
# 2.使用 losetup将磁盘镜像文件关联到(虚拟成)块设备
# 注:一般已存在的loop*是已经在用的,修要改成不存在的数字编号loop文件
losetup /dev/loop30 loopfile.img
# 3.创建文件夹:mount挂载时指定目录需已存在,挂载后其中内容将无法被访问,可卸载挂载点后恢复访问
mkdir /mnt/test_mount_loop30
# 4.将虚拟块文件挂载到指定目录
mount /dev/loop30 /mnt/test_mount_loop30
方法3:分区后挂载(方法2的一种运用)
# 将文件虚拟成块设备
losetup /dev/loop1 loopfile.img
# 查看待分区磁盘
fdisk -l
# 开始对设备分区
fdisk /dev/loop30
...后续根据提示操作
临时移除loop设备创建与挂载
# 移除挂载
umount /mnt/vfs
# 将回环设备移除。
losetup -d /dev/loop30
卸载设备忙问题
# 查看挂载点被占用情况(返回例:/images: 5863c)
fuser -m /images/
# 查看进程id对应的进程
ps -P 5488 5863
# 杀死指定id进程
kill 5863
# 占用进程全被杀死后,卸载
umount /images/
永久挂载(重启后仍生效)
相关文件:/etc/fstab 开机自动加载的FS,/etc/mtab 当前已经加载的FS。
- 查看文件格式
- 方法一:直接查看文件格式
root@xiaoqiang:/home/xiaoqiang# file /home/xiaoqiang/loop_img/test2.iso
/home/xiaoqiang/loop_img/test2.iso: Linux rev 1.0 ext4 filesystem data, UUID=46710fa9-9c04-4a93-a811-ba064114abb9 (needs journal recovery) (extents) (64bit) (large files) (huge files)
- 方法二:挂载后查看文件格式
root@xiaoqiang:/home/xiaoqiang# mount -o loop /home/xiaoqiang/loop_img/test2.iso /mnt/test2_iso/
root@xiaoqiang:/home/xiaoqiang# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
......
/dev/loop19 ext4 999320 2568 927940 1% /mnt/test2_iso
- 编辑/etc/fstab文件
在其中添加挂载设置(注意顺序,如根目录“/”)
# /etc/fstab: static file system information.
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# <file system> <mount point> <type> <options> <dump> <pass>
# /
UUID=efdef8fc-1491-4773-9df6-c24a15f3e408 / ext4 noatime,errors=remount-ro 0 1
# /boot/efi
UUID=93D6-2F3F /boot/efi vfat noatime,umask=0077 0 1
/home/xiaoqiang/loop_img/test2.iso /mnt/test2_iso ext4 loop,defaults 0 0
- 测试是否正常(警告)
警告:错误时重启将无法正常开机,但可输入root密码登录文件系统后修复。
# 测试:将 /etc/fstab 中定义的所有档案系统挂上(无报错则正常)
mount -a
内存文件系统
# 挂在一个tmpfs文件系统
mount -t tmpfs tmpfs /mount_dir
# 挂在一个共享内存文件系统:/dev/shm
mount -t tmpfs /dev/shm /mount_dir
参考链接:
内含创建示例:Linux losetup 命令mount命令用法:(linux下mnt目录作用)linux之loop设备详解linux增加loop设备上限