我将一个新的硬盘驱动器连接到我的计算机(Ubuntu 14.04.4 LTS x64),我可以使用以下命令查看它sudo lshw -C disk
:
*-disk
description: ATA Disk
product: ST6000NM0024-1HT
vendor: Seagate
physical id: 0.0.0
bus info: scsi@1:0.0.0
logical name: /dev/sdb
version: SN05
serial: Z4D90E30
size: 5589GiB (6001GB)
configuration: ansiversion=5 sectorsize=4096
我在其上创建了一个 GUID 分区表 (GPT) sudo parted /dev/sdb mklabel gpt
,我可以看到:
username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
然后,我ext4
使用sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB
.我可以看到新标签:
username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 6001GB 6001GB xfs primary
为什么文件系统是xfs
我要求的那样ext4
?
当我随后使用 创建分区时sudo mkfs.ext4 /dev/sdb1
,该分区被标记为ext4
,但我想知道这是如何xfs
出现的。
答案1
Parted 实际上并不创建文件系统。它仅创建分区。您传递到的文件系统类型mkpart
不会记录在任何地方。
当您要求parted打印信息时,它会查看分区的内容。看起来您曾经在一个分区中有一个 xfs 文件系统,该分区与当前分区号 1 的位置相同。由于您尚未向该分区写入任何内容,因此旧内容仍然存在,如果 xfs 文件系统是小于 6001GB,并且如果那里确实存在文件系统而不是巧合(例如文件系统映像文件的开头恰好位于该位置),那么它甚至仍然有效并且可以安装。
那么为什么要在运行时指定文件系统类型呢mkpart
?影响取决于分区格式。和GPT分区时,文件系统类型用于确定分区类型。ntfs
将分区类型设置为 Windows 使用的 GUID、swap
将分区类型设置为交换的 GUID 等。 xfs 和 ext4 都映射到的默认设置是为 Linux 数据设置 GUID。无论文件系统类型如何,这都是相同的 GUID,这是有道理的,因为GUID应该指示分区上存储的内容(例如 Linux 文件),而不是它们的组织方式。