Mac如何在终端使用diskutil命令装载和卸载推出外接硬盘

最近用 macOS 装载外接硬盘的时候,使用mount死活装不上,很多文章也没详细的讲各种情况,所以就写一篇博客来记录一下。

如何装载和卸载硬盘(或者说分区)

mountumount是在 macOS 上是不能用的,如果使用会显示未知特殊文件或者没有权限,如下:

$ mount /dev/disk3s2
mount: /dev/disk3s2: unknown special file or file system.
$ umount /dev/disk3s2
umount: unmount(/Volumes/backup): Operation not permitted

如果给umount加上sudo就会显示Resource busy,提示使用diskutil unmount,如下:

$ sudo umount /dev/disk3s2
Password:
umount(/Volumes/backup): Resource busy -- try 'diskutil unmount'

某些情况下,如果你照着使用diskutil mount /dev/disk3s2,发现也可以成功装载了,如下:

$ diskutil mount /dev/disk3s2
Volume backup on /dev/disk3s2 mounted

使用diskutil unmount /dev/disk3s2卸载也会成功,如下:

$ diskutil unmount /dev/disk3s2
Volume backup on disk3s2 unmounted

提示一下,这里的路径可以不写,直接写diskutil unmount disk3s2也可以。如果你知道硬盘或卷宗名称,那么可以直接使用名称加载或者卸载,如下

$ sudo diskutil mount backup
Volume backup on backup mounted

需要注意,macOS 里的的“分区(partition)”和 Windows 里的分区不是一个概念。

但是如果你想加载或卸载一个分区里所有的卷宗,必须使用mountDiskunmountDisk,否则会显示如下内容:

$ diskutil unmount disk2
disk2 was already unmounted or it has a partitioning scheme so use "diskutil unmountDisk" instead

注意虽然这个选项里有Disk,但是操作的是“一个分区”,而不是“一个硬盘”。因为它是根据某个硬盘分区中的表来进行加载的。

如何获取得知硬盘路径和硬盘卷宗的名称

你可以通过“系统信息”和“磁盘工具”来获取连接硬盘的信息,但是这样太麻烦了。

可以使用`diskutil list以查看已经连接到 Mac 上所有的硬盘,如下(只保留了第一个外接硬盘的部分):

/dev/disk2 (external, physical):#:                       TYPE NAME                    SIZE       IDENTIFIER0:      GUID_partition_scheme                        *1.0 TB     disk21:                        EFI ⁨EFI⁩                     209.7 MB   disk2s12:                 Apple_APFS ⁨Container disk3⁩         1000.0 GB  disk2s2/dev/disk3 (synthesized):#:                       TYPE NAME                    SIZE       IDENTIFIER0:      APFS Container Scheme -                      +1000.0 GB  disk3Physical Store disk2s21:                APFS Volume ⁨backup⁩                  323.2 GB   disk3s2

这时候就可以获取得知各个分区和卷宗的位置的名称了。

如果你只是想知道如何加载和卸载,那么读到这里就可以了,下面是解决一些好奇宝宝的疑问,以及记录一些 APFS 的知识,比如说装载 APFS 分区的底层操作是什么。

扩展知识

上面两部分有什么区别

可以看到上面的内容中,一个硬盘实际上生成了两个部分:/dev/disk2 (external, physical)/dev/disk3 (synthesized)。这俩有啥区别呢?

/dev/disk2 (external, physical)部分

这部分表示的硬盘的物理部分。也就是“磁盘工具”里这部分内容:

请添加图片描述

/dev/disk2中存放的是该硬盘的引导文件,也就是硬盘节点实例(device node entry),其中还包括各部分的硬盘标识符(disk identifier)。disk2TYPE写的也是GUID_partition_scheme(GUID 分区方案)。

disk2s2部分也就是你在“磁盘工具”里看到容器部分(如果眼尖的读者会发现这部分叫做容器disk3,“设备”部分也是“disk3”,下一章节会讲为什么这样):
请添加图片描述

如果你尝试加载这个容器disk2s2会显示如下信息:

$ sudo diskutil mount disk2s2
Volume on disk2s2 failed to mount because it appears to be
an APFS Physical Store (or is the APFS Container already mounted?)
Note that for this mount operation, Disk Arbitration reports that
the operation is not supported (kDAReturnUnsupported)

但是你可以加载 EFI 部分(如果你有需要的话):

$ sudo diskutil mount disk2s1
Volume EFI on disk2s1 mounted

/dev/disk3 (synthesized)部分

这部分则是上面容器中卷宗(Volume)的部分。

/dev/disk3是“APFS Container Scheme”(APFS 容器方案),包含了卷宗的各种信息,这也是为什么可以直接通过NAME部分的backup⁩来加载卷宗,而不是必须使用设备路径。

/dev/disk3s2则是容器里的包含的 APFS 卷宗,如果加载/dev/disk3s2这部分,那么可以通过访问加载位置(默认为/Volumes/)中的NAME为名的文件,来访问 APFS 格式的硬盘内容(Unix 里所有的设备都是文件)。

这部分也就是你在“磁盘工具”里看到的这部分(这是我的“时间机器”硬盘):

请添加图片描述

如果硬盘中只有一个卷宗,那么这个卷宗的在/dev中一般都是diskXs2

默认情况下,生成的宗卷都在/Volumes/目录中,可以在此进行访问(相当于 Linux 中的/mnt):

$ ls /Volumes/
16TB		Macintosh HD	backup

为什么容器的在第二张图里显示为容器disk3(“Physical Store diskXsX”部分是什么)

如果眼尖的同学可能发现在第二张图中,容器部分叫做容器disk3,“设备”部分也是“disk3”,而不是disk2s2,但是“物理存储区”却是disk2s2

这是因为在 APFS 中一个分区(partition)包含一个单独的容器(容器负责空间管理和垃圾保护)。而一个容器或者说分区是可以包含多个卷的。这与其他一些文件系统是不一样的,其他文件系统的分区大多直接就是文件系统层(File System Layer)。如下是硬盘上多个分区的硬盘在“磁盘工具”里的层级:

请添加图片描述

下图是 APFS 分区在硬盘上的空间划分,右侧是容器内部的空间划分:

APFS大致结构

也就是说,“Apple File System container”部分是上图中右侧部分的总称,在硬盘上的空间也是右侧的总和,并没有单独的一部分叫做“Apple File System container”。这就是为什么容器的物理存储区是disk2s2(是硬盘的第三部分),但是由于内部进行了进一步区分,所以容器内部需要进一步操作,将其分配成disk3

希望能帮到有需要的人~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13576.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023亚马逊云科技中国峰会——Amazon DeepRacer

1.DeepRacer技术背景 早在20世纪初汽车问世之时,发明家们便已提出无人驾驶的设想。但即便是实现无人驾驶的初级阶段,也经历了足足百年时间。毕竟在复杂的城市路况下,机器若想像人一样实现感知、决策、控制等功能,必定面临各种复杂…

无线蓝牙耳机什么牌子好?八大真无线蓝牙耳机排名

蓝牙耳机作为当前热门的数码产品,无论何时都能用上,蓝牙耳机的快速发展逐渐的取代有线耳机,摆脱线条的束缚,更方便携带。当然,随着蓝牙耳机的设计各种各样,导致很多的小伙伴在选购耳机的时候,不…

如何用python编写3D游戏

Vizard是一款虚拟现实开发平台软件,从开发至今已走过十个年头。它基于C/C,运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时,Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI),进而运行渲染核心。…

adb连接安卓模拟器或真机hook参数加密详细过程(frida)

app逆向时,参数与函数的确定很关键,找到可疑的函数,不确定是否由该函数生成,该怎么解决?hook就应允而生了,首先是要求本地电脑和安卓模拟器(网易mumu模拟器支持多系统,该模拟器作为主…

从OVF矢量场文件中获取磁斯格明子的位置和半径的粗略方法(trace skyrmion)

文章目录 前言一、使用oommf的avf2odt命令行程序获取斯格明子中心位置的示例二、当磁体系的单个xy平面层仅有一个斯格明子的情况1.读取所有磁化文件中的指定磁化分量2.筛选出每一个xy平面层中位于磁化分量阈值范围内的单元格3.计算组成磁结构的所有单元格的平均坐标和平均距离 …

Vue:Elemenu-Plus递归型菜单组件封装

前端开发中,经常遇到需要与后端配置,前端动态渲染菜单的应用场景,而究其本质,就是菜单组件的应用,只是在不确定菜单级数的情况下,我们需要对组件做一个递归处理,让它能够适应大多数应用场景。 递…

支持向量机SVM代码详解——多分类/降维可视化/参数优化【python】

篇1:SVM原理及多分类python代码实例讲解(鸢尾花数据) SVM原理 支持向量机(Support Vector Machine,SVM),主要用于小样本下的二分类、多分类以及回归分析,是一种有监督学习的算法。基本思想是寻…

flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单

flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单 在之前实现了flutter聊天界面的富文本展示内容,这里记录一下当长按聊天气泡的时候弹出复制、删除等菜单功能 一、查看效果 当长按聊天气泡的时候弹出复制、删除等菜单,可新增更多按钮 二、代码实现…

leetcode 222. 完全二叉树的节点个数

2023.7.3 用层序遍历遍历一遍二叉树&#xff0c;然后遍历的每个节点都进行一次计数&#xff0c;直接上代码&#xff1a; class Solution { public:int countNodes(TreeNode* root) {queue<TreeNode*> que;int ans 0;if(root nullptr) return ans;que.push(root);while…

风力发电系统的随机调度研究(matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

面向订单交付的ETO项目管理数字化解决方案︱高远科技PMO副总经理董方好

北京高远华信科技有限公司PMO副总经理董方好先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;面向订单交付的ETO项目管理数字化解决方案。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 订单…

基于matlab开发和评估停车场场景中的视觉定位算法(附源码)

一、前言 本示例展示了如何使用虚幻引擎模拟环境中的合成图像数据开发视觉定位系统。 获取基本事实以评估定位算法在不同条件下的性能是一项具有挑战性的任务。与使用高精度惯性导航系统或差分GPS等更昂贵的方法相比&#xff0c;不同场景下的虚拟仿真是一种经济高效的方法来获…