我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

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

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

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

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

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

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

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

$ diskutil unmount /dev/disk3s2Volume backup on disk3s2 unmounted

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

$ sudo diskutil mount backupVolume backup on backup mounted

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

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

$ diskutil unmount disk2disk2 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       IDENTIFIER   0:      GUID_partition_scheme                        *1.0 TB     disk2   1:                        EFI ⁨EFI⁩                     209.7 MB   disk2s1   2:                 Apple_APFS ⁨Container disk3⁩         1000.0 GB  disk2s2/dev/disk3 (synthesized):   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      APFS Container Scheme -                      +1000.0 GB  disk3     Physical Store disk2s2   1:                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 disk2s2Volume on disk2s2 failed to mount because it appears to bean APFS Physical Store (or is the APFS Container already mounted?)Note that for this mount operation, Disk Arbitration reports thatthe operation is not supported (kDAReturnUnsupported)

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

$ sudo diskutil mount disk2s1Volume 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/16TBMacintosh HDbackup

为什么容器的在第二张图里显示为容器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

希望能帮到有需要的人~

来源地址:https://blog.csdn.net/qq_33919450/article/details/131496913

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

最近用 macOS 装载外接硬盘的时候,使用mount死活装不上,很多文章也没详细的讲各种情况,所以就写一篇博客来记录一下。 如何装载和卸载硬盘(或者说分区) mount和umount是在 macOS 上是不能用的,如果使用会显示未知特殊文
2023-08-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录