解决Ubuntu下无法装载 Windows D盘的问题




电脑安装了 Windows 和 Ubuntu 24.04 后,在Ubuntu系统上装载 D盘,发现无法装载错误如下:

Error mounting /dev/nvme0n1p4 at /media/jackeysong/Data: wrong fs type, bad option, bad superblock on /dev/nvme0n1p4, missing codepage or helper program, or other error

错误的原因是装载D盘时,文件系统的类型错误。Windows 系统使用的文件系统类型为 ntfs,绝大多数发行版 Linux 系统使用的文件系统类型是 ext4 . 当使用 ext4 来装载一个 ntfs 类型的磁盘分区时,就会出现以上 wrong fs type 错误。

解决方法

一、手动装载

手动装载D盘分区,在 /media/jackeysong/ 下创建一个 Data 文件夹,然后将磁盘分区 /dev/nvme0n1p4 装载到该文件夹下:mount -t ntfs /dev/nvme0n1p4 /media/jackeysong/Data

复制代码
jackeysong@jackey-song:~$ sudo -i
[sudo] password for jackeysong: 
root@jackey-song:~# mkdir /media/jackeysong/Data
root@jackey-song:~# ls /media/jackeysong
008D-B2D7  Data
root@jackey-song:~# mount -t ntfs /dev/nvme0n1p4 /media/jackeysong/Data

然后打开 D盘,装载成功。

如果装载失败可能是缺少 ntfs 驱动的原因。NTFS 分区需要安装 ntfs-3g 驱动才能正常挂载。如果你没有安装 ntfs-3g,可以使用以下命令安装:

复制代码
sudo apt update
sudo apt install ntfs-3g

强制使用 ntfs-3g 驱动进行挂载:sudo mount -t ntfs-3g /dev/nvme0n1p4 /media/jackeysong/Data

二、编辑 /etc/fstab 文件指定默认装载方式

每次都手动装载分区会比较麻烦,也可以编辑 /etc/fstab 配置文件,来为某个分区指定装载时的默认文件系统类型。

  1. 找到指定分区的 UUID,使用 sudo blkid 命令:

    复制代码
    root@jackey-song:~# blkid
    /dev/nvme0n1p5: UUID="723696bd-9024-4a98-8094-70e5abd815c7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a95ec632-4081-464d-95e2-8260febba3df"
    /dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/nvme0n1p3: LABEL="Windows" BLOCK_SIZE="512" UUID="FA00939A00935C87" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="a89e60f7-6279-4bc6-a2dd-41aca8b2a9e0"
    /dev/nvme0n1p1: LABEL_FATBOOT="SYSTEM" LABEL="SYSTEM" UUID="18CE-BE31" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="c5507935-a83b-4c4b-8e76-6698106dc676"
    /dev/nvme0n1p4: LABEL="Data" BLOCK_SIZE="512" UUID="A43AB43A3AB40B76" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8c5273ff-a1a9-4f08-a06c-fe6b16cc2992"
    /dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="78d2fc75-5222-454d-b35e-54daeab76cbd"
    /dev/loop8: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop6: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop11: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop9: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop7: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/sda1: UUID="008D-B2D7" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="d9a95602-01"
    /dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop12: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"
    /dev/loop10: BLOCK_SIZE="131072" TYPE="squashfs"

    我这里要找的分区是 D 盘的分区 /dev/nvme0n1p4 ,其对应的 UUID 是 A43AB43A3AB40B76

  2. 编辑 /etc/fstab 文件,加入以下一行:

    复制代码
    UUID=A43AB43A3AB40B76 /media/jackeysong/Data ntfs defaults 0 0
    • UUID 指定分区的唯一编号。
    • /media/jackeysong/Data 装载路径。
    • ntfs 挂载时使用的文件系统类型。
    • defaults:挂载选项,通常使用 defaults 就可以满足大部分需求。
    • 0 0:表示该分区不会参与系统备份,也不进行磁盘检查。

通过以上两个步骤就可以正确自动挂载 Windows D盘了。相应地,C盘(Windows系统盘)也可以这样自动挂载,但是千万注意要使用正确的文件系统类型(ntfs),否则会导致你的 Windows 系统开机蓝屏,只能重装 Windows 系统。(别问我怎么知道的,我的 Windows 系统就是这么蓝屏的。还好可以在 Ubuntu 系统上使用工具 woeUSB-ng 制作 Windows 启动U盘重装系统。不过所有的 Windows 数据都会丢失,谨慎操作。)


Windows 和 Ubuntu 双系统的电脑,可以将 D盘作为两个系统的共享盘。

Windows 系统关机后,进入 Ubuntu 系统,对 D盘是只读权限。要想对 D盘有读写权限,需要在 Windows 下关机时选择重启,重启后直接进入到 Ubuntu 系统。这样 Ubuntu 就可以对 D盘有读写权限了。

温馨提示:在 Ubuntu 下切莫要对 Windows 系统盘做更改,否则你的 Windows 系统可能会崩掉。不要以 ext4 类型挂载 Windows 系统盘,这样会导致退出 Ubuntu 重启 Windows 时,出现蓝屏(磁盘错误)。正常情况下,以 ntfs 类型挂载 Windows 系统盘后,对 Windows 盘是只读权限。




扩展内容

lsblk

lsblk(list block devices)是查看系统中块设备(硬盘、分区、光驱等)的一种常用方法。

复制代码
jackeysong@jackey-song:~$ sudo -i
[sudo] password for jackeysong: 
root@jackey-song:~# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     4K  1 loop /snap/bare/5
loop1         7:1    0  74.3M  1 loop /snap/core22/1564
loop2         7:2    0 269.8M  1 loop /snap/firefox/4793
loop3         7:3    0  10.7M  1 loop /snap/firmware-updater/127
loop4         7:4    0 505.1M  1 loop /snap/gnome-42-2204/176
loop5         7:5    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop6         7:6    0  10.5M  1 loop /snap/snap-store/1173
loop7         7:7    0  38.8M  1 loop /snap/snapd/21759
loop8         7:8    0   500K  1 loop /snap/snapd-desktop-integration/178
sda           8:0    1 114.6G  0 disk 
└─sda1        8:1    1 114.6G  0 part /media/jackeysong/008D-B2D7
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   100M  0 part /boot/efi
├─nvme0n1p2 259:2    0    16M  0 part 
├─nvme0n1p3 259:3    0   120G  0 part 
├─nvme0n1p4 259:4    0 293.3G  0 part 
└─nvme0n1p5 259:5    0  63.5G  0 part /

fdisk -l

fdisk 是一个磁盘分区工具,-l 选项可以列出所有硬盘及其分区信息。

复制代码
root@jackey-song:~# fdisk -l
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 74.27 MiB, 77881344 bytes, 152112 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 269.77 MiB, 282873856 bytes, 552488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 10.72 MiB, 11239424 bytes, 21952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop4: 505.09 MiB, 529625088 bytes, 1034424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop5: 91.69 MiB, 96141312 bytes, 187776 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop6: 10.54 MiB, 11051008 bytes, 21584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop7: 38.83 MiB, 40714240 bytes, 79520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WDC PC SN730 SDBPNTY-512G-1027          
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BB40C022-7036-4376-87FC-CE3A69916C17

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     206847    204800   100M EFI System
/dev/nvme0n1p2    206848     239615     32768    16M Microsoft reserved
/dev/nvme0n1p3    239616  251897855 251658240   120G Microsoft basic data
/dev/nvme0n1p4 251897856  867041279 615143424 293.3G Microsoft basic data
/dev/nvme0n1p5 867041280 1000212479 133171200  63.5G Linux filesystem


Disk /dev/loop8: 500 KiB, 512000 bytes, 1000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 114.61 GiB, 123060879360 bytes, 240353280 sectors
Disk model:  SanDisk 3.2Gen1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd9a95602

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1          32 240353279 240353248 114.6G  7 HPFS/NTFS/exFAT
root@jackey-song:~# blkid
/dev/nvme0n1p5: UUID="723696bd-9024-4a98-8094-70e5abd815c7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a95ec632-4081-464d-95e2-8260febba3df"
/dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/nvme0n1p3: LABEL="Windows" BLOCK_SIZE="512" UUID="FA00939A00935C87" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="a89e60f7-6279-4bc6-a2dd-41aca8b2a9e0"
/dev/nvme0n1p1: LABEL_FATBOOT="SYSTEM" LABEL="SYSTEM" UUID="18CE-BE31" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="c5507935-a83b-4c4b-8e76-6698106dc676"
/dev/nvme0n1p4: LABEL="Data" BLOCK_SIZE="512" UUID="A43AB43A3AB40B76" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8c5273ff-a1a9-4f08-a06c-fe6b16cc2992"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="78d2fc75-5222-454d-b35e-54daeab76cbd"
/dev/loop8: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop6: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop7: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/sda1: UUID="008D-B2D7" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="d9a95602-01"
/dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"

Windows 系统使用的文件系统格式

Windows 操作系统主要使用以下几种文件系统:

1. NTFS(New Technology File System)

  • 最常用的文件系统:NTFS 是当前 Windows 操作系统的默认文件系统,广泛用于 Windows 7、8、10 和 11 版本。
  • 特点
    • 支持大容量的磁盘和文件(最大文件大小为 16TB,最大分区大小为 256TB)。
    • 提供文件和文件夹级别的权限控制(如访问控制列表 ACL)。
    • 支持文件压缩和加密(例如,EFS 加密)。
    • 提供日志记录功能(即使系统崩溃,文件系统也能恢复到一致的状态)。
    • 支持硬链接、符号链接等高级功能。
    • 对于磁盘碎片管理也有较好的优化。

2. FAT32(File Allocation Table 32)

  • 较老的文件系统:FAT32 是 FAT 系列文件系统的一种,曾是 Windows 系统常用的文件系统,主要用于较小的磁盘和移动存储设备(如 USB 闪存驱动器、外部硬盘等)。
  • 特点
    • 支持的最大分区大小为 32GB,最大单个文件大小为 4GB。
    • 兼容性好,几乎所有操作系统都可以读取 FAT32 格式的驱动器。
    • 不支持文件权限和加密等高级功能,安全性较差。

3. exFAT(Extended File Allocation Table)

  • 用于大容量存储设备:exFAT 是为了解决 FAT32 在大容量存储设备上的局限性而开发的文件系统,常用于 USB 闪存驱动器、SD 卡等设备,尤其是大于 32GB 的存储设备。
  • 特点
    • 支持单个文件大于 4GB,最大文件和分区大小可达到几 TB。
    • 提供较好的跨平台支持(Windows、macOS 和 Linux 都能读取 exFAT 格式的设备)。
    • 不支持 NTFS 的高级安全性和日志功能,但在大容量设备上表现良好。

4. ReFS(Resilient File System)

  • 用于服务器和高容错需求的环境:ReFS 是 Windows Server 2012 引入的一种文件系统,旨在提供比 NTFS 更高的容错性、可扩展性和性能,主要用于大型存储和数据中心环境。
  • 特点
    • 支持数据完整性校验,自动修复文件损坏。
    • 高效处理大容量数据集,适合存储和备份任务。
    • 不支持所有 NTFS 功能(如加密、压缩、符号链接等),主要面向企业级应用。

Linux 系统使用的文件系统格式

Linux 操作系统支持多种文件系统,每种文件系统有不同的特点和使用场景。以下是 Linux 上常见的文件系统:

1. ext4(Fourth Extended File System)

  • 最常用的文件系统:ext4 是目前 Linux 系统上最常见的文件系统,几乎所有主流的 Linux 发行版(如 Ubuntu、Debian、Fedora 等)默认使用 ext4。
  • 特点
    • 提供良好的性能和稳定性,支持大文件和大容量存储(最大支持 1 exabyte 的分区,最大文件大小 16 terabytes)。
    • 支持日志功能(journaling),保证系统崩溃时文件系统的一致性。
    • 支持大文件、延迟分配(delayed allocation)和写时复制(write barriers)等高级特性,优化性能。
    • 支持文件系统检查(fsck)以修复损坏的文件系统。

2. ext3(Third Extended File System)

  • ext4 的前身:ext3 是 ext4 的前一代文件系统,虽然现在不再是默认文件系统,但依然在一些老旧系统中使用。
  • 特点
    • 支持日志功能,可以提高系统的稳定性和恢复能力。
    • 相较于 ext4,ext3 在性能和支持大文件方面存在一些局限。
    • 兼容性较好,可以轻松从 ext2 升级到 ext3。

3. Btrfs(B-Tree File System)

  • 现代、功能丰富的文件系统:Btrfs 是一个较新的文件系统,旨在提供更强的管理功能,如快照、压缩、去重和增量备份等。
  • 特点
    • 支持内置的快照(snapshots)和克隆功能,可以实现高效的数据备份和恢复。
    • 支持压缩(例如 zlib 和 LZO 压缩)来节省存储空间。
    • 支持数据去重、检查点和动态磁盘管理。
    • 支持多设备池,可以通过 RAID 架构实现磁盘集群管理。
    • 目前仍在发展中,虽然已经具有生产环境的使用能力,但在稳定性和性能上与 ext4 相比仍有一些差距。

4. XFS

  • 高性能的文件系统:XFS 是一个高性能的文件系统,特别适合处理大文件和高并发的场景,通常用于数据中心和大规模存储环境。
  • 特点
    • 针对大文件和大容量存储做了优化,适用于需要大量并发和大数据的应用场景。
    • 支持文件系统扩展、日志功能和动态在线扩展。
    • 支持文件系统级别的空间预分配,减少碎片化。
    • 在大数据、视频流处理和高性能计算等领域表现优越。

5. ZFS(Zettabyte File System)

  • 高可靠性、高性能文件系统:ZFS 最早由 Sun Microsystems 开发,现在由 OpenZFS 作为开源项目维护。虽然 ZFS 最初是为 Solaris 操作系统设计的,但它也可以在 Linux 上使用(通常通过 OpenZFS 或 zfsutils)。
  • 特点
    • 支持高效的快照(snapshots)、克隆、压缩、去重和自修复等特性。
    • 支持数据完整性校验,自动检测和修复损坏的数据。
    • 支持存储池(zpool),允许在一个池中管理多个硬盘,并提供类似 RAID 的功能(如 RAID-Z)。
    • 对于大规模存储和数据保护需求非常强大,但在 Linux 上的支持相对较为复杂,安装和维护可能会有所困难。

6. F2FS(Flash-Friendly File System)

  • 面向闪存存储优化的文件系统:F2FS 是一个针对 NAND 闪存设备(如 SSD、eMMC、SD 卡等)优化的文件系统。
  • 特点
    • 针对闪存的特性进行了优化,减少写放大(write amplification)现象,延长存储设备的寿命。
    • 比传统文件系统(如 ext4)在闪存设备上的性能更优。
    • 支持文件系统检查、日志和数据完整性检查等功能。

7. ReiserFS

  • 曾经流行的文件系统:ReiserFS 曾是 Linux 上非常流行的文件系统,尤其在中小型文件的操作上表现出色。
  • 特点
    • 高效处理小文件,适合数据库和邮件服务器。
    • 提供日志功能,提高数据一致性。
  • 目前由于开发者的争议和缺乏更新,ReiserFS 已逐渐被其他文件系统(如 ext4 和 Btrfs)所取代。

8. FAT32 和 exFAT

  • 跨平台兼容性:虽然这两个文件系统主要用于 Windows 和嵌入式设备,但 Linux 也支持 FAT32 和 exFAT 文件系统,通常用于 USB 驱动器、SD 卡和其他外部存储设备。
  • 特点
    • FAT32:适用于较小的存储设备,但单个文件最大不能超过 4GB,且最大分区为 32GB。
    • exFAT:支持更大容量的存储设备和文件,大于 4GB 的文件不成问题,适用于大容量移动存储设备。



相关推荐
UpUpUp……10 分钟前
Linux--JsonCpp
linux·运维·服务器·c++·笔记·json
Willis_m27 分钟前
Linux 服务器用 SSH 拉取多个 Git 工程
linux·服务器·git·ssh
紫金修道34 分钟前
【Linux】在Arm服务器源码编译onnxruntime-gpu的whl
linux·服务器·arm开发
xq5148632 小时前
Linux系统下安装mongodb
linux·mongodb
柒七爱吃麻辣烫2 小时前
在Linux中安装JDK并且搭建Java环境
java·linux·开发语言
孤寂大仙v3 小时前
【Linux笔记】——进程信号的产生
linux·服务器·笔记
深海蜗牛3 小时前
Jenkins linux安装
linux·jenkins
愚戏师3 小时前
Linux复习笔记(三) 网络服务配置(web)
linux·运维·笔记
JANYI20184 小时前
嵌入式MCU和Linux开发哪个好?
linux·单片机·嵌入式硬件
熊大如如4 小时前
Java NIO 文件处理接口
java·linux·nio