当前位置: 首页 > article >正文

linux的挂卸载

挂卸载操作

在 Linux 系统中,挂载(mount)和卸载(umount)是管理文件系统和存储设备的核心操作。通过这两个操作,我们可以将设备(如硬盘、光盘、U盘等)或网络文件系统的内容集成到系统的目录树中,或者在不再需要访问时断开它们的连接。

1. 挂载(Mount)操作详解

**挂载(mount)**是将外部设备或文件系统与 Linux 系统中的一个目录关联起来,使得该设备或文件系统中的文件能够在 Linux 系统中进行访问。

挂载基本命令:
mount <设备或文件系统> <挂载点>
  • 设备或文件系统:可以是物理设备(如硬盘、U盘等),也可以是网络共享(如 NFS 或 CIFS)或其他挂载的文件系统。
  • 挂载点:是文件系统在 Linux 系统中访问的路径。通常是一个空的目录,挂载后,该目录就代表了设备中的文件系统。
1.1 常见挂载方式
  • 挂载本地硬盘

    mount /dev/sda1 /mnt
    

    这里 /dev/sda1 是硬盘的第一个分区,/mnt 是挂载点。挂载后,可以在 /mnt 目录下访问 /dev/sda1 中的文件。

  • 挂载 CD-ROM 或光盘

    mount /dev/cdrom /mnt/cdrom
    

    将光盘或虚拟光驱(如 ISO 文件)挂载到 /mnt/cdrom 目录。

  • 挂载 NFS 文件系统(网络文件系统)

    mount -t nfs 192.168.1.100:/exported/dir /mnt/nfs
    

    将远程 NFS 服务器 192.168.1.100 上的 /exported/dir 目录挂载到本地的 /mnt/nfs 目录。

1.2 常用挂载选项
  • -t:指定文件系统类型,如 ext4ntfsnfs 等。

    mount -t ext4 /dev/sda1 /mnt
    
  • -o:指定挂载的选项,如读写权限、只读、自动挂载等。常见选项包括:

    • ro:只读挂载。
    • rw:读写挂载。
    • noexec:禁止执行挂载目录下的程序。
    • user:允许普通用户挂载。
    • auto:系统启动时自动挂载。
    • defaults:使用默认选项。

    例如,使用 rw 选项将硬盘挂载为可读写:

    mount -o rw /dev/sda1 /mnt
    
  • 挂载的目标位置:挂载点必须是一个空的目录。例如,如果要挂载 /dev/sda1,首先需要确保 /mnt 目录为空。

1.3 查看已挂载的文件系统
  • mount:不带参数时,列出当前系统中所有已挂载的文件系统。
    mount
    
  • df:显示所有挂载的文件系统及其磁盘空间使用情况。
    df -h
    
1.4 自动挂载(/etc/fstab)

通过编辑 /etc/fstab 文件,可以让系统在启动时自动挂载某些文件系统。该文件定义了系统启动时如何挂载设备和文件系统。

格式:

<设备> <挂载点> <文件系统类型> <挂载选项> <转储> <检查>

示例:

/dev/sda1  /mnt  ext4  defaults  0  2

这表示系统启动时会自动将 /dev/sda1 挂载到 /mnt,使用 ext4 文件系统,挂载选项为 defaults

2. 卸载(Umount)操作详解

**卸载(umount)**是将已经挂载的文件系统从目录树中移除,断开该文件系统与系统的连接。卸载操作会使得文件系统不可访问。

卸载基本命令:
umount <挂载点或设备>
  • 你可以通过指定设备或挂载点来卸载文件系统。比如:

    umount /mnt
    

    这会卸载 /mnt 目录挂载的文件系统。

  • 如果要卸载特定设备,也可以使用设备路径:

    umount /dev/sda1
    
2.1 常见卸载问题
  • 设备忙(device is busy):当试图卸载一个正在使用的设备时,可能会出现“设备忙”的错误。常见原因包括:

    • 当前目录或子目录中有文件正在被使用。
    • 当前目录或子目录有进程正在访问。

    解决办法:

    • 使用 lsoffuser 命令查看哪个进程在使用该设备:
      lsof /mnt
      
    • 或者使用:
      fuser -m /mnt
      
  • 强制卸载:如果设备正在被使用且无法正常卸载,可以使用 -l(延迟卸载)或 -f(强制卸载)选项:

    umount -f /mnt
    
2.2 查看卸载情况

可以通过 mountdf 命令确认文件系统是否已成功卸载。

  • mount:没有挂载的文件系统不会列出。
    mount
    
  • df:卸载后该文件系统不会出现在输出中。
    df -h
    

3. 挂载和卸载的注意事项

  • 挂载点必须为空:挂载点(目录)必须是空的,否则挂载操作会失败。
  • 卸载前确保没有进程占用:卸载之前必须确保没有任何进程在使用该设备。如果有,可以通过 lsoffuser 查看并终止相关进程。
  • 卸载顺序:对于挂载在其他挂载点下的文件系统(例如嵌套的文件系统),需要按相反的顺序卸载。
    • 先卸载子文件系统,后卸载父文件系统。

4. 总结

  • 挂载(mount):将一个文件系统或存储设备连接到 Linux 系统的某个目录下,使得该文件系统的内容可以访问。
  • 卸载(umount):断开文件系统与 Linux 系统的连接,使得该文件系统不可访问。
  • 使用 mountumount 命令时,要注意文件系统的类型、挂载点的状态以及设备是否被占用。

新建文件系统并挂载

在 Linux 系统中,创建新文件系统并将其挂载到指定目录,涉及以下几个步骤:创建分区、格式化分区、创建挂载点、挂载文件系统、以及修改 fstab 文件以便系统启动时自动挂载。

步骤 1: 创建分区

首先,你需要一个磁盘或一个未分配的存储设备来创建新文件系统。如果你的磁盘没有分区,或者你想重新分区,可以使用 fdisk(对于 MBR 分区表)或 parted(对于 GPT 分区表)等工具来创建分区。

使用 fdisk 创建分区(MBR 分区表)
sudo fdisk /dev/sdX

/dev/sdX 是你要分区的磁盘(如 /dev/sda)。命令执行后进入交互式界面,使用以下命令:

  1. 输入 n 创建新分区。
  2. 输入 p 选择主分区(或 e 选择扩展分区)。
  3. 输入分区的起始和结束位置(默认设置一般可以直接按回车)。
  4. 输入 w 保存更改并退出。
使用 parted 创建分区(GPT 分区表)
sudo parted /dev/sdX

进入交互模式后,使用以下命令:

  1. 输入 mklabel gpt 创建一个 GPT 分区表。
  2. 输入 mkpart primary ext4 0% 100% 创建一个 ext4 格式的分区,大小为磁盘的 100%。
  3. 输入 quit 退出。

步骤 2: 格式化分区

创建分区后,下一步是将该分区格式化成一个文件系统。常用的文件系统格式有 ext4xfsbtrfs 等,这里以 ext4 为例。

sudo mkfs.ext4 /dev/sdX1
  • /dev/sdX1 是新创建的分区,例如 /dev/sda1
  • 如果你选择其他文件系统类型(如 xfs),可以将 mkfs.ext4 替换为 mkfs.xfs 或其他命令。

步骤 3: 创建挂载点

挂载点是你用来访问该文件系统的目录。通常,挂载点会在 /mnt/media 目录下创建,但你也可以选择任何路径。

sudo mkdir /mnt/mydata
  • 这里我们在 /mnt 目录下创建了一个名为 mydata 的挂载点。

步骤 4: 挂载文件系统

使用 mount 命令将新格式化的分区挂载到刚刚创建的挂载点。

sudo mount /dev/sdX1 /mnt/mydata
  • /dev/sdX1 是新创建并格式化的分区。
  • /mnt/mydata 是挂载点。

此时,你可以通过访问 /mnt/mydata 来操作该文件系统中的文件。

步骤 5: 配置开机自动挂载

为了确保每次系统启动时自动挂载该文件系统,需要将其添加到 /etc/fstab 文件中。

首先,获取分区的 UUID:

sudo blkid /dev/sdX1

这将输出类似以下的信息:

/dev/sda1: UUID="xxxx-xxxx" TYPE="ext4" PARTUUID="yyyyyyyy"

然后编辑 /etc/fstab 文件:

sudo nano /etc/fstab

在文件的最后添加一行,格式如下:

UUID=xxxx-xxxx /mnt/mydata ext4 defaults 0 2
  • UUID=xxxx-xxxx 是你从 blkid 命令中获得的 UUID。
  • /mnt/mydata 是挂载点。
  • ext4 是文件系统类型。
  • defaults 是挂载选项,表示使用默认选项。
  • 0 表示不需要备份。
  • 2 表示文件系统检查的顺序,根文件系统通常设置为 1,其他文件系统通常设置为 2

保存并退出编辑器。

步骤 6: 验证挂载

最后,检查挂载是否成功:

sudo mount -a

该命令会根据 /etc/fstab 中的配置尝试挂载所有未挂载的文件系统。

你还可以使用 dfmount 命令确认挂载:

df -h
mount | grep /mnt/mydata

如果显示挂载信息,说明新文件系统已经成功挂载。

总结

  1. 使用 fdiskparted 创建分区。
  2. 使用 mkfs 格式化新分区。
  3. 创建挂载点并使用 mount 命令挂载分区。
  4. 修改 /etc/fstab 以便开机自动挂载。

按照这些步骤,你就可以创建并挂载新的文件系统了。

在 Linux 系统中,df 命令用于显示文件系统的磁盘空间使用情况,通常用于检查挂载的文件系统、可用空间、已用空间等。df -hdf -ah 都是 df 命令的变种,它们的区别在于输出的内容和单位的不同。

查询挂载点详情

1. df -h 命令

df -h 显示文件系统的磁盘空间使用情况,并使用 人类可读 的格式(即自动选择适当的单位,例如 KB、MB、GB),使得输出结果更容易理解。

  • -h 选项表示 “human-readable”,即以易于理解的单位(KB、MB、GB 等)显示空间。
示例
df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   28G  43% /
/dev/sdb1       100G   10G   85G  11% /mnt/data

解释:

  • Filesystem: 文件系统的名称或设备。
  • Size: 文件系统的总大小。
  • Used: 已用空间。
  • Avail: 可用空间。
  • Use%: 已用空间的百分比。
  • Mounted on: 文件系统的挂载点。

2. df -ah 命令

df -ah 也是 df 命令的变种,其中:

  • -a 选项表示显示所有文件系统,包括系统文件、虚拟文件系统和挂载的 tmpfs 等。
  • -h 选项表示以人类可读的格式显示磁盘空间。

因此,df -ah 会显示更多的挂载点信息,包括虚拟文件系统(如 tmpfs),而不仅仅是常规的磁盘分区。

示例
df -ah

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   28G  43% /
tmpfs            1.9G  1.3M  1.9G   1% /dev/shm
/dev/sdb1       100G   10G   85G  11% /mnt/data

解释:

  • tmpfs 是一个虚拟文件系统,通常用来在内存中创建临时文件系统。
  • /dev/shm 是 Linux 系统中的一个临时内存挂载点。
  • /dev/sda1/dev/sdb1 仍然是实际的磁盘分区。

总结

  • df -h:显示常规磁盘分区的使用情况,并以人类可读的格式(KB、MB、GB)显示大小。
  • df -ah:除了显示常规磁盘分区外,还会显示所有文件系统的使用情况,包括虚拟文件系统(如 tmpfsdevtmpfs),并以人类可读的格式显示。

如果你希望查看系统中的所有挂载点(包括虚拟文件系统等),使用 df -ah;如果只关心实际磁盘分区的使用情况,则使用 df -h


http://www.kler.cn/a/420456.html

相关文章:

  • 12月2日星期一今日早报简报微语报早读
  • 洛谷二刷P4715 【深基16.例1】淘汰赛(c嘎嘎)
  • 44 基于32单片机的博物馆安全监控系统设计
  • 宏海科技募资额有所缩减,最大销售和采购都重度依赖美的集团
  • 纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
  • webGL入门教程_06变换矩阵与绕轴旋转总结
  • 【docker】多阶段构建与单阶段构建
  • leetcode每日一题(20241202)
  • BERT的中文问答系统36-2
  • Java GET请求 请求参数在Body中使用Json格式传参
  • 简单介绍下 VitePress 中的 vp-doc 和 vp-raw
  • Git:分支管理
  • 面试小札:JVM虚拟机
  • LeetCode Hot100 21~30
  • 数仓3.0与大模型(如大型语言模型和其他深度学习模型)之间的关系
  • 机器学习(3)朴素贝叶斯算法
  • 数据库日志
  • HTML前端开发-- Flex布局详解及实战
  • 4k4d 学习安装笔记
  • CS144(七)
  • Linux - selinux
  • 屏幕触控支持指纹
  • 小程序 - 比较数字大小
  • Git 快速入门:全面了解与安装步骤
  • Leetcode:3195
  • RabbitMQ的工作模式