Linux 创建大于 2TB 的分区
坦率地说,您无法使用 fdisk 命令创建大于 2 TB 的 Linux 分区。fdisk 不会创建大于 2 TB 的分区。这对于台式机和笔记本电脑用户来说没问题,但在 Linux 服务器上,您需要一个大分区。例如,您无法使用 fdisk 命令创建 3TB 或 4TB 的分区大小(基于 RAID)。它不允许您创建大于 2TB 的分区。在本教程中,您将了解有关创建大于 2 TB 的 Linux 文件系统的更多信息,以支持任何 Linux 发行版下的企业级操作。
教程详细信息 | |
---|---|
难度等级 | 先进的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 磁盘管理 |
操作系统兼容性 | Alma • Alpine • Amazon Linux • Arch • Debian • Fedora • Linux • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu |
预计阅读时间 | 7 分钟 |
在 Linux 中创建大于 2 TB 的分区的步骤
为了解决这个问题,请使用 GNU parted 命令和 GPT。它支持 Intel EFI/GPT 分区表。分区表 (GPT) 是物理硬盘上分区表布局的标准。它是 Intel 提出的可扩展固件接口 (EFI) 标准的一部分,用于替代过时的 PC BIOS,这是原始 IBM PC 的少数遗留遗物之一。EFI 使用 GPT,而 BIOS 使用主引导记录 (MBR)。
(图 01:说明 GUID 分区表方案布局的图表。每个逻辑块 (LBA) 大小为 512 字节。负数的 LBA 地址表示距离卷末尾的位置,其中 -1 表示最后一个可寻址块。图片来源:维基百科)
Linux GPT 内核支持
EFI GUID 分区支持适用于 32 位和 64 位平台。您必须在内核中包含 GPT 支持才能使用 GPT。如果您未在 Linux 内核中添加 GPT 支持,则在重新启动服务器后,文件系统将不再可挂载,或者 GPT 表将损坏。默认情况下,Redhat Enterprise Linux/CentOS 附带 GPT 内核支持。但是,如果您使用的是 Debian 或 Ubuntu Linux,则需要重新编译内核。将 CONFIG_EFI_PARTITION 设置为 y 以编译此功能。请注意,几乎所有新内核和最新发行版都支持 GPT。
File Systems Partition Types [*] Advanced partition selection [*] EFI GUID Partition support (NEW) ....
找出当前的Linux磁盘大小
键入以下命令:
# fdisk -l /dev/sdb
示例输出:
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
如何创建大于 2 TB 的 Linux 分区
Linux 创建 3TB 分区大小
要创建分区,请按如下方式启动 GNU parted:
# parted /dev/sdb
输出:
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
创建一个新的 GPT 磁盘标签,即分区表:
(parted) mklabel gpt
示例输出:
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted)
接下来设置默认单位为TB,输入:
(parted) unit TB
要创建 3TB 分区大小,请输入:
(parted) mkpart primary 0 0
或者
(parted) mkpart primary 0.00TB 3.00TB
要打印当前分区,请输入:
(parted) print
示例输出:
Model: ATA ST33000651AS (scsi) Disk /dev/sdb: 3.00TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 0.00TB 3.00TB 3.00TB ext4 primary
退出并保存更改,输入:
(parted) quit
示例输出:
Information: You may need to update /etc/fstab.
使用 mkfs.ext3 或 mkfs.ext4 命令格式化文件系统,输入:
# mkfs.ext3 /dev/sdb1
或
# mkfs.ext4 /dev/sdb1
示例输出:
mkfs.ext4 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 183148544 inodes, 732566272 blocks 36628313 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 22357 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
输入以下命令来挂载 /dev/sdb1。首先使用mkdir 命令创建一个新文件夹:
# mkdir /data
现在使用 mount 命令挂载 /dev/sdb1。例如:
# mount /dev/sdb1 /data
使用 mount 命令和df 命令验证它:
示例输出:
# df -H
Filesystem Size Used Avail Use% Mounted on /dev/sdc1 16G 819M 14G 6% / tmpfs 1.6G 0 1.6G 0% /lib/init/rw udev 1.6G 123k 1.6G 1% /dev tmpfs 1.6G 0 1.6G 0% /dev/shm /dev/sdb1 3.0T 211M 2.9T 1% /data
确保将 /dev/sdb1 替换为实际的 RAID 或磁盘名称或块以太网设备(例如 /dev/etherd/e0.0)。如有必要,请不要忘记更新/etc/fstab 文件。另请注意,从 GPT 卷启动需要 BIOS/固件支持。非 EFI 平台不支持此功能。我建议您从另一个磁盘(例如 IDE/SATA/SSD 磁盘)启动服务器并将数据存储在 /data 上。如果需要,也可以使用整个磁盘(例如 /dev/sdb)。请注意,最新版本的 fdisk 确实支持 GPT。来自手册页:
fdisk 能够针对 4K 扇区大小优化磁盘布局,并在现代设备上为 MBR 和 GPT 使用对齐偏移。GPT 是分区表布局的现代标准。GPT 使用 64 位逻辑块地址、校验和、UUID 和分区名称以及无限数量的分区(尽管在许多分区工具中分区数量通常限制为 128)。请注意,在 GPT 规范中,第一个扇区仍为保护性 MBR 保留。它可以防止仅支持 MBR 的分区工具错误识别和覆盖 GPT 磁盘。
向 gdisk 问好
gdisk 是 fdisk 命令的 GPT 替代品。语法与 fdisk 命令相同。例如:
$ sudo fdisk /dev/sdb
或
$ sudo gdisk /dev/sdb
示例输出:
GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help):
输入 n 来创建新分区:
Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-XXXXXXX, default = 2048) or {+-}size{KMGTP}: Last sector (2048-XXXXXXX, default = XXXXXXX) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300)
按下将w新表写入磁盘并退出到 shell 提示符:
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to hdd.img. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
现在您可以格式化 /dev/sdb1 并照常挂载它。
总结
这就是我在 Linux 下创建大于 2 兆字节 (2TB) 的分区的方法。
进一步阅读:
- 来自 Wikipedia 的 GUID 分区表
- 使用 man 命令或 help 命令查看 GNU parted 的手册页。例如:
$ man gparted