Cómo extender una partición PV de Linux en línea después del crecimiento del disco virtual

14

VMware permite extender el tamaño de un disco virtual en línea, cuando la VM se está ejecutando. Los siguientes pasos esperados para el sistema Linux son:

  1. extienda la partición: elimine y cree una más grande con fdisk
  2. extender el tamaño de PV con pvresize
  3. usar extensiones libres para lvresizeoperaciones
  4. y luego resize2fspara el sistema de archivos

Pero estoy atascado en el primer paso: fdisky sfdisksigo mostrando el tamaño anterior del disco.

Mi disco es un disco virtual SCSI conectado gracias al controlador LSI Logic virtual.

¿Cómo actualizar el tamaño del disco virtual y la información de la tabla de particiones disponibles en el kernel de Linux sin reiniciar ?

Hasta donde yo sé, todos esos pasos son posibles para un Windows en ejecución, sin reiniciar e incluso sin ninguna acción del usuario gracias a las herramientas VMWare. En Linux, espero hacer todos los pasos en línea también y ya sé que los pasos 2, 3 y 4 funcionan en línea. Pero el primero: cambiar el tamaño de partición declarado en la tabla de partición (aún) parece requerir un reinicio.

Actualización: Mi sistema es un Debian Lenny con el kernel 2.6.26 y el disco que he extendido es el disco principal con un PV grande que contiene el LV "raíz" para "/".

Yves Martin
fuente

Respuestas:

9

Puede hacer esto sin reiniciar. pvresize no cambia el tamaño del volumen físico hasta que la partición se actualiza con el espacio agregado. Debe fdisk la partición y volver a crearla con el nuevo tamaño completo del disco, después de que puede volver a escanear las unidades para que vea el espacio extra en primer lugar.

Más información: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

GRegg
fuente
Estoy de acuerdo, pero sea lo que sea que hice para volver a escanear la unidad SCSI, nunca pude ver el nuevo tamaño del disco en fdisk, así que me quedé bloqueado hasta el primer reinicio. Y "partprobe" es un nuevo comando para mí. Definitivamente tengo que probar este procedimiento ... Gracias.
Yves Martin
Para obtener información partprobees un comando del partedproyecto.
Yves Martin
Si no estaba viendo el nuevo tamaño del disco, fdiskentonces el problema no es con LVM. Tendría que preguntarte cómo estabas escaneando, ya que eso generalmente me toma el nuevo tamaño de disco. Tampoco particiono discos en los que voy a usar LVM si puedo evitarlo. Si tiene pvcreatetodo el disco, la actualización de la tabla de particiones es solo una cosa menos que debe hacer cuando va a cambiar su tamaño.
Bratchley
14

La otra respuesta proporcionada no responde a su pregunta, he identificado el comando correcto para volver a analizar un disco ya conectado.

Debemos volver a analizar su disco ya conectado, primero identificar qué disco desea volver a analizar.

ls /sys/class/scsi_disk/

En mi ejemplo, veo un enlace simbólico llamado 0:0:0:0, así que volvemos a escanear este disco scsi.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

También extendí mi disco VMware y tuve que buscar otras respuestas para encontrar el comando correcto. Con suerte, esto salvará a los futuros buscadores de intentos inútiles.

JM Becker
fuente
Funcionó perfectamente!
Emil Styrke
También puede encontrar los discos por su nombre "/ dev /" en /sys/block/, por lo que puede utilizar, por ejemplo /sys/block/sda/device/rescan.
mwfearnley
4

En la medida en que el sistema de archivos raíz /esté montado en el disco que se ha redimensionado, la tabla de particiones y el tamaño del disco no se actualizan mediante un escaneo SCSI con Linux 2.6.26.

Realmente espero que mejore pronto con las nuevas versiones del kernel.

Entonces tuve que:

  • reinicie por primera vez para ver el nuevo tamaño de disco en fdisk
  • eliminar la antigua partición primaria PV en fdisk
  • cree una entrada de partición con el mismo número e inicie el sector hasta el final del disco
  • reiniciar por segunda vez O ejecutar partprobedesde el partedpaquete solo si /no está montado allí
  • Ahora puedo ejecutar pvresizepara obtener nuevo espacio libre lvextendy resize2fsasignar más espacio a un sistema de archivos

Se me recomendó simplemente descartar esa estúpida tabla de particiones antigua y ejecutarla pvcreatedirectamente en el dispositivo, ya que Grub2 puede cargar una imagen del núcleo directamente desde un sistema de archivos en una partición LVM. Pero tal configuración no es obvia en absoluto con los instaladores de distribución.

Actualización: Acabo de verificar con Debian GNU / Linux Jessie 8.2 ejecutando el kernel 3.16 y parted3.2, partprobeahora tiene éxito después de la edición de la tabla de particiones cfdisksin reiniciar. pvresizetrabaja inmediatamente después

Si desea extender un PV almacenado como partición lógica de PC, por ejemplo /dev/sda5en una partición primaria extendida /dev/sda2, no use, fdiskpero prefiera parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
Yves Martin
fuente
Los comandos al final no funcionan # parted / dev / sda2 -1 -> parted: opción no válida - '1'
Oskar Berggren
3

Debe volver a escanear los discos antes de poder hacer la partición más grande.

En Centos puedes hacer esto por

ls /sys/class/scsi_host

luego para cada host

echo "- - -" > /sys/class/scsi_host/host#/scan

(reemplace # con el número)

También hay un paso más hacia lo anterior que está expandiendo ext o cualquier sistema de archivos que esté usando una vez que haya cambiado el tamaño de la partición.

Sin embargo, aún tendrá que desmontar esa partición en algún momento. Lo que solemos hacer es agregar un segundo disco vmware y usar lvm para extenderlo al nuevo disco (y reducir el anterior si es un reemplazo) ya que esto permite que todo el proceso suceda en vivo.

JamesRyan
fuente
Mi sistema es Debian y ejecuto rescan-scsi-bus.sh desde scsitools. Creo que es equivalente al comando que propone en / sys / class / scsi_host pero "fdisk" todavía muestra el tamaño anterior en mi disco ...
Yves Martin
¿Reconoce un nuevo disco vmware cuando vuelve a escanear?
JamesRyan
No. Este disco ya existe, no es nuevo. El tamaño del disco se ha incrementado en el cliente vSphere.
Yves Martin
Me doy cuenta de eso, pero deberías intentar agregar uno nuevo para ver si tu escaneo lo
detecta
Estoy de acuerdo con usted y ya sé por práctica que agregar un nuevo disco SCSI a una máquina Linux se puede hacer en línea para todos los pasos enumerados. Como la máquina virtual puede funcionar durante 10 años ... me temo que la cantidad total de discos en un futuro cercano ...
Yves Martin
2

Como respuesta actualizada, en Ubuntu 16.04.1 pude hacer lo siguiente para cambiar el tamaño de un volumen de 1024GB a 1.4TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

No se fdiskrequiere, y el espacio estaba disponible de inmediato.

pelador
fuente
3
Eres afortunado. La razón es porque no tiene una tabla de particiones sino PV directo /dev/sdb, que probablemente sea el disco secundario de los datos de su aplicación, pero no su primer disco con el sistema (¡por mencionar que configuro mis sistemas de la misma manera!). Mi pregunta fue sobre la extensión de la última PV / partición de dicho "disco del sistema" (clonado a partir de una plantilla), siempre que las distribuciones de Linux no admitan la instalación en PV directo, mientras que el kernel de Linux y GRUB deberían poder arrancar y ejecutarse en el disco del sistema sin mesa de partición en absoluto.
Yves Martin
Punto justo. Para aquellos que encuentran esto a través de Google: tenlo en cuenta.
peelman
1

No nos ha proporcionado suficientes detalles para decirle los comandos exactos que necesitará, pero esencialmente necesitará usar el lvextendcomando para extender el volumen lógico, luego el e2fsckcomando y luego el resize2fscomando para expandir realmente su sistema de archivos. Cada uno de estos comandos necesitará parámetros adicionales, específicamente información del dispositivo y del sistema de archivos, que no podemos proporcionar, pero necesitará conocerlos, solo use la opción --help para cada comando para indicarle cómo usarlos específicamente, más que probablemente va a terminar con el pvdisplay, lvdisplayy mountlos comandos para ayudar a llenar estos parámetros.

Chopper3
fuente
Conozco todos los comandos para otros pasos. Mi pregunta es: ¿cómo hacer crecer la partición primaria utilizada como PV sin reiniciar?
Yves Martin
Lo siento, ¿te refieres a pvresize?
Chopper3
Estoy de acuerdo en que mi pregunta no fue lo suficientemente explícita (incluso con la parte en negrita). pvresize se menciona como el paso 2. Estoy atascado en el paso 1: aumentar el tamaño de partición "PCAT".
Yves Martin
¿Ya ha aumentado el tamaño de .vmdk a través del VSClient?
Chopper3
3
Para confirmar que las /sbin/rescan-scsi-buscosas no cambian el tamaño del disco existente. Pero echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'
Yves Martin
0

Nadie ha publicado un conjunto completo de comandos, así que aquí vamos:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root
mzhaase
fuente
Perdón por la distribución pero encuentro que agregar disco, partición y PV en cada crecimiento de disco es "feo" y no escala. Mi pregunta fue sobre la extensión de una partición primaria existente en el disco sin agregar disco o partición o PV.
Yves Martin