Linux 文件系统 | mount & umount

发布时间 2023-06-25 17:32:06作者: 菜乌

Linux 中一切皆文件

并且所有文件都统一在 / 根目录下面

类比 windows 系统,插入 U 盘,或者硬盘等存储设备,可以直接看到并访问里面的内容。而在 Linux 系统中,需要进行挂载,将外来设备加入到系统管理中,才可以正常访问。

上面的挂载就需要用到 mount 命令


查看

  • /etc/fstab 配置文件,定义了系统启动时需要挂载的文件系统和对应的挂载方式

  • mount 不加任何参数,可以查看所有挂载的详细信息。下面列出一部分

    命令输出的内容是 /proc/mounts 文件内容

    image

  • findmnt 可以输出树形结构,方便查看

  • df -h 查看各文件系统硬盘使用情况,顺便就可以看到所有文件系统信息

    image


挂载

/dev/dsa1 挂载到 /usr/code

mount /dev/dsa1 /usr/code
  • /dev/dsa1 是文件系统所在的磁盘分区

  • /usr/code 是挂载点,进入挂载点目录即可看到 /dev/dsa1 下的内容

    • 挂载点必须提前创建好,并且为空

    • 不为空时,之前的内容会被隐藏

  • -t 可以指定挂载的系统文件类型,默认会自动选择

    • 光盘或光盘镜像:iso9660

    • DOS fat16文件系统:msdos

    • Windows 9x fat32文件系统:vfat

    • Windows NT ntfs文件系统:ntfs

    • Mount Windows文件网络共享:smbfs

    • UNIX(LINUX) 文件网络共享:nfs

移动挂载点

# 挂载点从 /usr/code 移动到 /usr/project
mount --move /usr/code /usr/project

修改挂在属性

# 挂载分区‘只读’改为‘可读写’
mount -o remount,rw

同一文件系统挂载到多个挂载点

# 将同一文件系统挂载到 /usr/code 和 /usr/project
mount --bind /usr/code /usr/project

多个文件系统使用同一挂载点

# sda 和 sdb 都挂载到 /usr/code
# sda 的内容会被全部覆盖
# 当 sdb 卸载后,sda 的内容又会显示出来
mount /dev/sda /usr/code
mount /dev/sdb /usr/code

# 加了 union 参数,sda 中相同目录会被覆盖,不同则会保留
mount --union /dev/sdb /usr/code

卸载

# 通过文件系统卸载
umount /dev/sda

# 通过挂载点卸载
umount /usr/code
  • 当文件系统被用到是,卸载不成功,所有首先确保自己没有进入挂载点目录

  • 查看哪个进程占用了哪个文件,lsof /use/code。lsof 即 List Open Files



当一个项目有多个服务器时,为了服务器间内容同步,可以通过挂载共享盘来实现