在双系统环境中,用户经常需要在 CentOS(一种流行的 Linux 发行版)中访问存储在 Windows 硬盘上的数据,由于 Windows 和 Linux 使用不同的文件系统,这一过程并非即插即用,但通过一系列明确的步骤,可以轻松实现,本文将详细介绍如何在 CentOS 中识别、挂载并访问 Windows 硬盘分区。
理解基础:磁盘与分区命名
在 Linux 系统中,硬盘和分区遵循特定的命名规则,SATA、SCSI 或 USB 硬盘被识别为 /dev/sda
、/dev/sdb
等,其中字母代表不同的物理硬盘,分区则在这些设备名后附加数字,/dev/sda1
是第一块硬盘的第一个主分区,/dev/sda2
是第二个分区,以此类推,Windows 通常使用 NTFS 或 FAT32 文件系统,而 CentOS 默认使用 ext4 或 XFS,识别 Windows 分区的关键在于找出哪个 /dev/sdXn
设备采用了 NTFS 或 FAT32 格式。
识别 Windows 硬盘分区
CentOS 提供了多种命令行工具来扫描和识别系统中的磁盘分区。
使用 lsblk
命令
lsblk
(List Block Devices)是一个现代且直观的工具,它以树状结构展示块设备、分区及其挂载点。
lsblk
输出可能如下所示:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 260M 0 part /boot/efi
├─sda2 8:2 0 128M 0 part
├─sda3 8:3 0 238.1G 0 part
└─sda4 8:4 0 1K 0 part
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 16M 0 part
├─sdb3 8:19 0 465.7G 0 part
从上例中,我们可以看到两块硬盘(sda
和 sdb
)。sdb
很可能就是 Windows 硬盘,因为它有多个小分区(如恢复分区)和一个大的主分区(sdb3
)。lsblk
的缺点是不直接显示文件系统类型。
使用 fdisk -l
命令
fdisk
是一个经典的分区表操作工具,加上 -l
参数可以列出所有磁盘的分区信息。
sudo fdisk -l
输出会包含更详细的分区信息,特别是分区类型(Type
)和系统标识(Id
),对于 NTFS 分区,其标识通常是 HPFS/NTFS/exFAT
。
使用 blkid
命令
blkid
命令是识别文件系统类型的最佳工具,它会直接显示每个块设备的 UUID(通用唯一标识符)和文件系统类型(TYPE
)。
sudo blkid
输出示例:
/dev/sda1: UUID="xxxx-xxxx" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
/dev/sda3: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"
/dev/sdb3: LABEL="Windows" UUID="xxxxxxxxxxxxxxxxxxxxxxxx" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
我们可以清晰地看到 /dev/sdb3
的 TYPE
是 ntfs
,这正是我们需要寻找的 Windows 分区。
为了更直观地比较这三个工具,可以参考下表:
工具 | 主要功能 | 优点 | 缺点 |
---|---|---|---|
lsblk | 列出块设备树状结构 | 输出简洁直观,易于理解 | 不直接显示文件系统类型 |
fdisk -l | 显示分区表详细信息 | 提供分区类型和ID等底层信息 | 输出信息较为冗杂 |
blkid | 显示块设备属性(UUID, TYPE) | 直接、准确地识别文件系统类型 | 不显示分区大小和挂载关系 |
安装必要的驱动程序并挂载分区
CentOS 默认支持读取 NTFS 分区,但写入功能需要安装第三方驱动 ntfs-3g
。
安装 ntfs-3g
使用 dnf
(CentOS 8 及以上)或 yum
(CentOS 7)包管理器进行安装:
sudo dnf install ntfs-3g
创建挂载点
挂载点是 Linux 系统中用于访问分区内容的目录,通常在 /mnt
目录下创建。
sudo mkdir /mnt/windows
挂载分区
使用 mount
命令将识别出的 Windows 分区(/dev/sdb3
)挂载到创建的目录。
sudo mount -t ntfs-3g /dev/sdb3 /mnt/windows
你可以通过 /mnt/windows
目录访问 Windows 分区中的所有文件了。
实现开机自动挂载
手动挂载在系统重启后会失效,为了永久生效,需要修改 /etc/fstab
文件。
获取分区的 UUID:使用
blkid
命令复制目标分区的 UUID,xxxxxxxxxxxxxxxxxxxxxxxx
,使用 UUID 而非设备名(如/dev/sdb3
)更稳定,因为设备名可能在重启后发生变化。编辑 fstab 文件:
sudo vi /etc/fstab
添加新行:在文件末尾添加以下内容,将复制的 UUID 和你的挂载点填入。
UUID=xxxxxxxxxxxxxxxxxxxxxxxx /mnt/windows ntfs-3g defaults 0 0
UUID=...
:你的分区 UUID。/mnt/windows
:挂载点目录。ntfs-3g
:文件系统类型。defaults
:使用默认挂载选项(包括读写、执行等)。0 0
:分别表示不进行dump
备份和不进行fsck
磁盘检查。
保存并退出编辑器,下次重启系统时,该分区将自动挂载,你也可以不重启,直接执行 sudo mount -a
来立即挂载 fstab
中所有未挂载的条目。
相关问答FAQs
问1:为什么我挂载的 NTFS 分区只能读取,无法写入文件?
答: 这通常是由 Windows 的“快速启动”功能引起的,该功能在关机时会将系统会话保存到硬盘,导致 Linux 认为分区处于“脏”状态,为了防止数据损坏而以只读模式挂载,解决方法是在 Windows 中完全禁用快速启动:进入“控制面板” -> “电源选项” -> “选择电源按钮的功能” -> “更改当前不可用的设置”,然后取消勾选“启用快速启动”。
问2:在 CentOS 文件管理器中,为什么没有自动显示我的 Windows 分区?
答: CentOS 的默认桌面环境(如 GNOME)通常会自动检测未挂载的分区并提供点击挂载的选项,但这依赖于后台服务,如果未自动显示,可能是因为 ntfs-3g
驱动未安装,或者分区已被系统以某种方式忽略,最可靠的方法还是通过本文介绍的命令行方式进行手动识别和挂载,并配置 fstab
以实现开机自动访问。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复