resize2fs falha ao redimensionar a partição para capacidade total?

1

Adicionado um novo disco ( /dev/vdb ) de 2TB com dados existentes do disco anterior de 1TB.

Eu usei fdisk /dev/vdb para estender sua única partição /dev/vdb1 para a capacidade total de 2TB do anterior 1TB. E então eu fiz:

[root - /]$ fsck -n /dev/vdb1
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/vdb1: clean, 46859496/65536000 files, 249032462/262143744 blocks

[root - /]$ e2fsck -f /dev/vdb1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 46859496/65536000 files (0.4% non-contiguous), 249032462/262143744 blocks

[root - ~]$ resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 262143744 blocks long.  Nothing to do!

E fdisk -l é assim:

Disk /dev/vdb: 2147.5 GB, 2147483648000 bytes, 4194304000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4eb4fbf8

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048  4194303999  2097150976   83  Linux

No entanto, quando eu o monto:

mount /dev/vdb1 /mnt

Isso é o que recebi de df -h :

/dev/vdb1       985G  935G     0 100% /mnt

Qual ainda é o tamanho da partição anterior.

O que estou fazendo de errado aqui?

UPDATE

Ran partprobe e sugeriu que eu reiniciasse:

Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy.  This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting.
Error: Failed to add partition 1 (Device or resource busy)

Então eu reiniciei e executei novamente:

mount /dev/vdb1 /mnt

Mas o sistema de arquivos adicionado ainda é:

/dev/vdb1       985G  935G     0 100% /mnt

Alguma ideia? Devo fazer todos os fsck , e2fsck e resize2fs novamente?

Realmente estranho. Após a reinicialização, corri novamente partprobe e ainda ocorreu esse erro:

Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy.  This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting.
Error: Failed to add partition 1 (Device or resource busy)

Por que o dispositivo ou o recurso está ocupado? Ainda assim, mesmo após a reinicialização?

    
por datasn.io 04.05.2018 / 15:40

1 resposta

1

resize2fs lê o tamanho da partição do kernel, semelhante à leitura do tamanho do qualquer outro arquivo . fdisk tenta atualizar o kernel ao gravar a tabela de partições, mas falhará se o disco estiver em uso (por exemplo, você montou uma de suas partições). É por isso que resize2fs mostrou a mensagem "nada a fazer"; ele não viu o espaço extra da partição:).

Acredito que fdisk registra uma mensagem proeminente sobre isso, como "screen-shotted" em este documento (de outra forma desatualizado) .

O kernel lê a tabela de partições durante a inicialização, então você pode simplesmente reiniciar o computador.

Há um documento menos amigável, mas na verdade atualizado, que inclui uma alternativa mais arriscada:

link

How to use a new partition in RHEL6 without reboot?

partprobe was commonly used in RHEL 5 to inform the OS of partition table changes on the disk. In RHEL 6, it will only trigger the OS to update the partitions on a disk that none of its partitions are in use (e.g. mounted). If any partition on a disk is in use, partprobe will not trigger the OS to update partitions in the system because it is considered unsafe in some situations.

So in general we would suggest:

  1. Unmount all the partitions of the disk before modifying the partition table on the disk, and then run partprobe to update the partitions in system.
  2. If this is not possible (e.g. the mounted partition is a system partition), reboot the system after modifying the partition table. The partitions information will be re-read after reboot. If a new partition was added and none of the existing partitions were modified, consider using the partx command to update the system partition table. Do note that the partx command does not do much checking between the new and the existing partition table in the system and assumes the user knows what they are are doing. So it can corrupt the data on disk if the existing partitions are modified or the partition table is not set correctly. So use at one's own risk.
    
por 05.05.2018 / 10:10