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

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

相关文章:

linux的挂卸载

挂卸载操作 在 Linux 系统中&#xff0c;挂载&#xff08;mount&#xff09;和卸载&#xff08;umount&#xff09;是管理文件系统和存储设备的核心操作。通过这两个操作&#xff0c;我们可以将设备&#xff08;如硬盘、光盘、U盘等&#xff09;或网络文件系统的内容集成到系统…...

【和春笋一起学C++】OpenCV中数组和指针运用实例

前言&#xff1a;前面学习了数组和指针在C中的处理原理&#xff0c;本文通过自己编写一个图像处理的函数实例来加深对数组和指针的理解。为什么是图像处理呢&#xff0c;因为图像数据是一个二维矩阵&#xff0c;相当于一个二维数组&#xff0c;前面学习了一维数组&#xff0c;现…...

Maya 中创建游戏角色的头发,并将其导出到 Unreal Engine 5

这段视频教程讲解了如何在 Maya 中创建游戏角色的头发&#xff0c;并将其导出到 Unreal Engine 5 中&#xff0c;重点是如何处理头发的物理模拟和材质。 作者 Andrew Giovannini 首先展示了一个已完成的带物理模拟的头发模型&#xff0c;并介绍了他自己的游戏行业背景。然后&a…...

React 路由(React Router):在 React 应用中管理路由

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

SAP-CPI组件Transformation介绍之Converter

1.配置CSV to XML Converter Field Description XML Schema 选择Select按钮,选择合适 XSD 文件. 或者可以选择 Upload from File System 系统中查找合适的XML文件....

Laravel 代理收益排行榜

创建了一个收入表 CREATE TABLE income_logs (id int(11) unsigned NOT NULL AUTO_INCREMENT,order_id int(11) NOT NULL COMMENT 订单ID,type int(11) NOT NULL DEFAULT 0 COMMENT 类型 0 支出 1收入,user_id int(11) NOT NULL COMMENT 消费者用户,price decimal(10,2) NOT…...

LeetCode hot100面试背诵版(自用)

点击题目可以跳转到LeetCode 哈希 两数之和 public int[] twoSum(int[] nums, int target) {int lengthnums.length;int[] ans new int[2];for (int i 0; i <length-1 ; i) {for (int j i1; j < length; j) {if(nums[i]nums[j]target){ans[0]i;ans[1]j;}}}return an…...

常见的Web安全漏洞——XSS

概念 跨站脚本攻击(XSS&#xff09;&#xff0c;指攻击者通过篡改网页&#xff0c;嵌入恶意脚本程序&#xff0c;在用户浏览网页时&#xff0c;控制用户浏览器进行恶意操作。 XXS的分类 反射型XSS存储型XSSDOM型XSS 原理 反射型XSS 接收用户提交的访问者的姓名&#xff0…...

liteflow 架构详解

LiteFlow 是一个轻量级的、高性能的流程编排框架&#xff0c;主要用于解决复杂业务流程的编排问题。它提供了一种简单而强大的方式来定义和执行复杂的业务流程。下面是 LiteFlow 的架构详解&#xff1a; 核心概念 组件&#xff08;Component&#xff09;&#xff1a;是流程中…...

国产麒麟操作系统上运行LabVIEW

LabVIEW 目前并没有官方支持直接在国产麒麟操作系统&#xff08;Kylin OS&#xff09;上运行。LabVIEW 是由美国国家仪器公司&#xff08;NI&#xff09;开发的软件&#xff0c;主要面向 Windows 和 Linux 操作系统。麒麟操作系统虽然基于 Linux&#xff0c;但其内核和一些软件…...

【C语言】结构体(一)

一&#xff0c;是什么 结构体就是一些值的集合&#xff0c;这些值称为成员变量。 结构体的每个成员可以是不同类型的变量。说到集合&#xff0c;数组也是集合&#xff0c;但是不同的是数组只能是相同类型元素的集合。 二&#xff0c;结构体的声明 struct tag {   member1;…...

C++《set与map》

在之前我们已经学习了解了CSTL当中的string和vector等容器&#xff0c;现在我们已经懂得了这些容器提供的接口该如何使用&#xff0c;并且了解了这些容器的底层结构。接下来我们在本篇当中将继续学习STL内的容器set与map&#xff0c;在此这两个容器与我们之前学习的容器提供的成…...

深度学习-52-AI应用实战之基于Yolo8的目标检测自动标注

文章目录 1 YOLOv81.1 YOLOV8的不同版本1.2 可检测类别1.3 数据说明1.4 网络结构1.5 算法核心步骤2 目标检测的基本原理2.1 安装yolov8(cpu版本)2.2 图片检测2.3 视频检测2.4 自动标注2.5 保存标注结果3 参考附录1 YOLOv8 YOLOv8是一种前沿的计算机视觉技术,它基于先前YOLO版…...

【Elasticsearch】05-DSL查询

1. 查询所有 es最多只支持查询1万条数据。 # 查询所有 GET /items/_search {"query": {"match_all": {}} }2. 叶子查询 全文检索 会对结果进行相关度打分。 # 检索单个字段 GET /items/_search {"query": {"match": {"name&…...

qml项目创建的区别

在Qt框架中&#xff0c;你可以使用不同的模板来创建应用程序。你提到的这几个项目类型主要针对的是Qt的不同模块和用户界面技术。下面我将分别解释这些项目类型的区别&#xff1a; 根据你提供的信息&#xff0c;以下是每个项目模板的详细描述和适用场景&#xff1a; Qt Widgets…...

.NET8/.NETCore 依赖注入:自动注入项目中所有接口和自定义类

.NET8/.NETCore 依赖接口注入&#xff1a;自动注入项目中所有接口和自定义类 目录 自定义依赖接口扩展类&#xff1a;HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试 自定义依赖接口 需要依赖注入的类必须实现以下接口。 C# /// <summary>…...

Flutter:city_pickers省市区三级联动

pubspec.yaml city_pickers插件地址 自己用的GetBuilder页面模板 cupertino_icons: ^1.0.8 # 省市区城市选择 city_pickers: ^1.3.0编辑地址页面&#xff1a;controller class AddressEditController extends GetxController {AddressEditController();Future<Result?>…...

Kafka-Connect自带示例

一、上下文 《Kafka-Connect》中已经阐述了Kafka-Connect的理论知识&#xff0c;为了更生动的理解它&#xff0c;我们今天通过官方的一个小例子来感受下它的妙用。 二、创建topic kafka-topics --create --topic connect-test --bootstrap-server cdh1:9092 --partitions 2 -…...

Hbase应用案例 随机号码生成

Hbase应用案例1 随机号码生成 在Hbase中插入如下格式的数据&#xff0c;数据内容随机生成 名称示例说明phonenumber158randomrowkey&#xff0c;号码dnum199randomcolumn&#xff0c;另一位通话者lengthrandomcolumn&#xff0c;时长valuerandomcolumn&#xff0c;接收或拨打…...

论文阅读——量子退火Experimental signature of programmable quantum annealing

摘要&#xff1a;量子退火是一种借助量子绝热演化解决复杂优化问题的通用策略。分析和数值证据均表明&#xff0c;在理想化的封闭系统条件下&#xff0c;量子退火可以胜过基于经典热化的算法&#xff08;例如模拟退火&#xff09;。当前设计的量子退火装置的退相干时间比绝热演…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...