Linux挂载4T硬盘

在给CentOS7挂载4T大容量硬盘时,遇到了一些问题,这里记录下来。

MBR与GPT

MBR和GPT都是硬盘分区表,在硬盘分区表之后才是日常使用的文件系统比如NTFS、FAT32、EXT等。简单看看MBR、GPT的区别:

MBR

MBR,主引导记录(Master Boot Record),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息,是数据信息的重要入口。

  • 只有64个字节可以用来存放分区表,导致最多只能存放4个分区
  • 支持硬盘的扇区数2^32个,按每个扇区512个字节算就是2T容量

GPT

GPT,全局唯一标识分区表(GUID Partition Table)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口UEFI标准的一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录MBR分区表。

  • GPT分区占据的是1号扇区 - 33号扇区中,其中1号扇区存储的是GPT磁头,2号扇区 - 33号扇区存储的是各个分区的信息
  • 在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区。
  • 支持硬盘的扇区数2^64个,按每个扇区512个字节算就是8ZB容量

在Windows下格式化的GPT硬盘,会产生一个Microsoft reserved partition分区和一个Basic data Partition分区(真正存储数据),有助于windows管理、操作GPT硬盘。

挂载准备

1、创建挂载点

1
$ mkdir /mnt/usb

2、因为是在CentOS7上进行挂载,移动硬盘又是NTFS格式,需要在CentOS7上配置对NTFS的支持:

1
2
3
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
$ yum makecache
$ yum install -y ntfs-3g

3、查看移动硬盘是否已经接入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:4000.8 GB, 4000787029504 字节,7814037167 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:gpt
Disk identifier: XXXXXXXXXXXXXXXXXXXX

# Start End Size Type Name
1 34 262177 128M Microsoft reser Microsoft reserved partition
Partition 1 does not start on physical sector boundary.
2 264192 7814035455 3.7T Microsoft basic Basic data partition

可以看到系统已经识别出硬盘,在/dev/sdb中有两个分区: Microsoft reserved partition、Basic data Partition。

关于fdisk的警告提示,这里我去搜索了一下,硬盘分区工具除fdisk外,还有gdisk,parted。fdisk的早期版本是不支持GPT的,提示如下:

1
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

在CentOS7.2的util-linux 2.23.2版本中,fdisk可以支持GPT。

如果fdisk不支持的话,可以使用parted进行查看:

1
2
3
4
5
6
7
8
9
10
$ parted -l
Model: Seagate Expansion (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name 标志
1 17.4kB 134MB 134MB Microsoft reserved partition msftres
2 135MB 4001GB 4001GB ntfs Basic data partition

挂载问题

挂载时会遇到的问题,基本是以下两个:

1、如果没有考虑到CentOS7上挂载的硬盘是NTFS格式,没有通过-t指定挂载类型,直接去挂:

1
2
3
$ mount /dev/sdb /mnt/usb/
mount: /dev/sdb 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”

2、考虑到了NTFS,但没有读懂fdisk或parted返回的信息,直接挂载

1
2
3
4
5
6
$ mount -t ntfs-3g  /dev/sdb /mnt/usb/
NTFS signature is missing.
Failed to mount '/dev/sdb': 无效的参数
The device '/dev/sdb' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

正确挂载

1
2
3
$ mount -t ntfs-3g  /dev/sdb2 /mnt/usb/
$ cd /mnt/usb/
$ ls -lrt

参考

1、https://unix.stackexchange.com/questions/340764/should-i-use-fdisk-for-partitioning-or-gpt-aware-tools
2、https://blog.stgolabs.net/2012/09/fdisk-updates-and-gpt-support.html
3、https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=766d5156c43b784700d28d1c1141008b2bf35ed7
4、https://blog.csdn.net/lpsl1882/article/details/51439417
5、https://unix.stackexchange.com/questions/154076/getting-the-extra-gpt-info-a-fdisk-l-equivalent
6、https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95
7、https://zh.wikipedia.org/wiki/GUID%E7%A3%81%E7%A2%9F%E5%88%86%E5%89%B2%E8%A1%A8#%E5%88%86%E5%8C%BA%E8%A1%A8%E5%A4%B4%EF%BC%88LBA_1%EF%BC%89

0%