新磁碟上的分區大小不正確
我知道這類問題經常被問到,但我似乎無法弄清楚發生了什麼。tl;dr:我將現有磁碟複製到更大的磁碟上,但
df
僅以原始磁碟的大小顯示,即使分區表看起來不錯。我在我的 Debian 系統上有一個 10TB 的備份驅動器
/dev/sda
,並添加了一個 12TB 的驅動器作為附加備份/dev/sdc
。最終我會刪除第一個備份,到異地儲存。我曾經parted
創建一個新分區,用完整個可用空間,然後mkfs.ext4
在其上創建一個文件系統。然後我掛載了這個文件系統,並df -h
顯示了預期的結果:原始磁碟為 9.1T,新磁碟為 11T。我將原件複製到新驅動器上
pv < /dev/sda1 > /dev/sdc1
。由於這是一個複製,因此我使用 為這個分區創建了一個新的 UUIDuuidgen
,並使用它來將磁碟掛載到/etc/fstab
.新驅動器有我期望的文件。但是,
df
現在將兩個驅動器顯示為相同:# df -h Filesystem Size Used Avail Use% Mounted on [...] /dev/sda1 9.1T 6.5T 2.6T 72% /mnt/Backup1 /dev/sdc1 9.1T 6.5T 2.6T 72% /mnt/Backup2
這是第一次掛載磁碟時的情況;這不像任何現有的操作都在打開文件。
的輸出
fdisk
顯示分區是預期的大小:# fdisk -l /dev/sdc Disk /dev/sdc: 10.9 TiB, 12000105070592 bytes, 23437705216 sectors Disk model: Elements 25A3 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 96102C84-3B01-4361-A9C2-B44455AEC02E Device Start End Sectors Size Type /dev/sdc1 2048 23437703167 23437701120 10.9T Linux filesystem
一樣
lsblk
:# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 9.1T 0 disk └─sda1 8:1 0 9.1T 0 part /mnt/Backup1 sdc 8:32 0 10.9T 0 disk └─sdc1 8:33 0 10.9T 0 part
執行
parted
似乎也可以確認分區的大小是正確的:# parted /dev/sdc GNU Parted 3.2 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: WD Elements 25A3 (scsi) Disk /dev/sdc: 12.0TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 12.0TB 12.0TB ext4 primary
然後我試著放手
fsck
,得到了這個:# fsck.ext4 /dev/sdc e2fsck 1.44.5 (15-Dec-2018) ext2fs_open2: Bad magic number in super-block fsck.ext4: Superblock invalid, trying backup blocks... fsck.ext4: Bad magic number in super-block while trying to open /dev/sdc The superblock could not be read or does not describe a valid ext2/ext3/ext4 filesystem. If the device is valid and it really contains an ext2/ext3/ext4 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 <device> or e2fsck -b 32768 <device> Found a gpt partition table in /dev/sdc
我嘗試了這些
e2fsck
選項,但得到了相同的結果。我搜尋了有關此 fsck 問題的討論,但沒有發現任何有用的資訊,並且我查看了有關
df
輸出和其他磁碟大小指示之間差異的許多討論中的一些,也沒有太多運氣:通常這種情況下的原因是新磁碟具有原始分區的精確副本。但我的分區似乎確實是正確的大小。我會很感激這裡的任何建議。我的文件似乎確實在新磁碟上,因此將其擦除並重新開始將花費很多很多小時的重新複製……
編輯:每個請求,輸出
gdisk
:# gdisk -l /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sdc: 23437705216 sectors, 10.9 TiB Model: Elements 25A3 Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 96102C84-3B01-4361-A9C2-B44455AEC02E Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 23437705182 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 23437703167 10.9 TiB 8300 primary
您似乎對分區和文件系統之間的關係有誤解。您的分區實際上是正確的大小,但您的文件系統不是。
執行時
pv < /dev/sda1 > /dev/sdc1
,您將文件系統逐字節複製sda1
到sdc1
. 文件系統是在 上創建的sda1
,因此mkfs.ext4
文件系統的大小與sda1
. 但是,sdc1
大於sda1
。所以結果是你在一個 12TB 的分區中有一個 10TB 的文件系統。解決方案是使用
resize2fs
調整文件系統的大小,使其占據整個分區。您可以將所需的文件系統大小傳遞給resize2fs
,但如果您只是希望將其調整為分區大小,則這是不必要的。/dev/sdc1
解除安裝後,只需以 root 身份執行,resize2fs /dev/sdc1
它應該將文件系統的大小調整為 12TB。注意:
您應該謹慎使用這種類型的文件系統複製;原件和副本都將具有相同的 UUID。如果兩個分區同時在系統中,則標識符不再是唯一的。
因此,當您要擦除源驅動器時使用此方法(即您只是將分區移動到新磁碟,而不是複制它),或者如果您打算手動更改複製分區的 UUID。