¿Cómo combino dos volúmenes lógicos que residen en un único volumen físico en LVM?


14

Tengo dos volúmenes lógicos, uno está montado como /, el otro está montado como / home.

Quiero combinarlos, porque el /volumen se está quedando constantemente sin espacio. (Sí, sé lo que está usando todo ese espacio; no, no puedo eliminarlo).

Estoy dispuesto a bajar la máquina por un día o dos para hacerlo.

OS: Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(CentOS)


1
¿Por qué no solo aumentar el /volumen, no es ese el punto de usar LVM?
jasonwryan

2
@jasonwryan ¿Por qué debería necesitar ajustar manualmente cómo se asigna el espacio en disco? ¿No es ese el objetivo de un sistema de archivos?
Nick ODell el

@NickODell No. Si un volumen es demasiado pequeño para contener los datos, entonces es demasiado pequeño. La capacidad total es un factor del tamaño del volumen, no del tamaño del sistema de archivos. Sin embargo, los volúmenes lógicos hacen que sea más fácil cambiar el tamaño de los volúmenes montados y fusionar recursos de almacenamiento dispares en un solo volumen. Con LVM deberías poder hacer lo que sugiere jasonwryan sin siquiera reiniciar: asegúrate de que los usuarios habituales estén desconectados (para liberar / inicio) desmontar / iniciarlo (montarlo) en el sistema de archivos raíz y listo. Si quieres fusionar tienes que hacer una rsync.
Bratchley

@JoelDavis Si requiero que todos los usuarios cierren sesión, ¿es relevante si necesito reiniciar?
Nick ODell

@NickODell Um ... ¿sí? La mayoría de los sistemas Linux son servidores, debes darte cuenta de que serán las suposiciones de las personas a menos que digas lo contrario.
Bratchley

Respuestas:


10

Ya terminé, y la nueva partición funcionó. Sin embargo, dado que faltan áreas en ambas guías, voy a resumir lo que hice. Tenga en cuenta que he reemplazado mi nombre de usuario con zzzzy el nombre de mi computadora con xxxxxxx. Además, todos los comandos deben ejecutarse como root a menos que se indique lo contrario.

Primero, hice una copia de seguridad:

tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home

Esto crea una copia de seguridad comprimida del directorio / home y la coloca en mi disco externo. (Tenga en cuenta que su unidad externa tendrá una ruta diferente).

Ahora, debe reiniciar en modo de usuario único.

reboot

Cuando su computadora se enciende nuevamente, debe buscar una pantalla como esta:

Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...

Presione cualquier tecla para interrumpir eso. Deberías ver una pantalla como esta:

gros arranque centos Presione a, luego Espacio, luego escriba single. Presione enter.

Debería ver un mensaje como este:

 [root@xxxxxxx /] # 

Ingrese los siguientes comandos:

df -h

Se debe mostrar Size, Usedy Avail. Nos interesa Used.
Anote cuánto espacio está utilizando el volumen de su hogar. Lo necesitaremos más tarde.

umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home

¿Recuerdas cuánto espacio usó el volumen de tu casa? Duplica eso y dáselo a este comando. Por ejemplo, tenía 15 gigabytes utilizados por mi directorio personal, así que lo dimensioné a 30 gigabytes.

resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G

Advertencia : El siguiente paso es el que puede perder datos. Hacer seguro de que usted pone en un tamaño más grande que el comando anterior. Agregue 5 Gigabytes para estar seguro.

lvresize -L 35G vg_xxxxxxx/lv_home

Dígale a la partición raíz que use todo ese espacio que acabamos de liberar.

lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

Copie sus datos a la partición raíz

mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/

(Por cierto, eso -aes importante, porque de lo contrario todo será propiedad de root, y usted no quiere eso)
. Verifique rápidamente que los datos se hayan copiado correctamente:

ls -lR /home

Ahora eliminamos la partición de inicio y le decimos a root que tome el nuevo espacio nuevamente.

umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

En este punto, cometí un gran error, del cual puedes aprender. Reinicié, y cuando el sistema volvió a funcionar, se negó a montar mi partición raíz como lectura-escritura porque no podía montar mi partición / home. Entonces, antes de reiniciar, escribimos

nano /etc/fstab

Una de esas líneas le dirá al sistema que monte la partición / home. Pon un #antes. Presione Ctrl-O, Intro, Ctrl-X. Ahora puedes reiniciar.

(Hipotéticamente, si olvidara editar fstab como lo hice, el comando para montar su partición raíz es mount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /)


Me encanta el detalle!
RMN

Me he encontrado con un problema similar, pero no tengo acceso físico a la máquina. ¿Hay alguna manera de hacer esto que no requiera arrancar en modo de usuario único?
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Teóricamente, sí. Si tiene acceso ssh, puede hacer una copia de seguridad de su /home. Luego, siempre que pueda desmontar /home, puede quitarlo. Sin embargo, no estoy realmente calificado para hablar sobre el proceso. Esto es algo sobre lo que deberías hacer una nueva pregunta.
Nick ODell

1
@NickODell: hice una nueva pregunta: askubuntu.com/questions/1115913/…
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Ese es un consejo mucho mejor de lo que podría haberte dado.
Nick ODell

3

ADVERTENCIA: ¡Respalde todos los datos críticos antes de hacer algo!

Debería mover todos los datos de la partición / home a otra partición, partición local o unidad externa o en cualquier otro lugar donde tenga suficiente espacio.

Elimine / home lv y luego expanda / (root) lv

Copie los datos nuevamente al directorio / home

Editar 1

La respuesta anterior supone que no tiene suficiente espacio en la partición raíz para colocar los datos en la partición de inicio.

Si este no es el caso, simplemente monte la partición de inicio en otro lugar y copie los datos, por ejemplo:

umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/

Luego simplemente elimine la partición de inicio y expanda la partición raíz


3

Puede hacerlo sin ningún almacenamiento externo, ejecutando /, pero deberá desmontar /home.

Este no es un procedimiento particularmente arriesgado si tiene cuidado, pero, no obstante, se aplica el consejo estándar: primero haga copias de seguridad y pruébelas.

Lo usaré foopara el nombre del grupo de volúmenes rooty homecomo los nombres de volumen lógicos. Esto hace que las rutas lógicas de volumen foo/rooty foo/home, y las rutas de dispositivo /dev/mapper/foo-rooty /dev/mapper/foo-home. Supongo que están en el mismo grupo de volúmenes, de lo contrario, esto se vuelve más complicado y depende del diseño del volumen físico de los dos grupos de volúmenes.

Primero, desmonta /homey corre e2fsck -f /dev/mapper/foo-home. Luego reduzca primero el sistema de archivos y el volumen lógico en consecuencia. Ejecute resize2fs /dev/mapper/foo-home NNNNdonde NNNN es el número de bloques que desea retener dentro del volumen (puede usar kB o MB o GB en su lugar con el sufijo K, Mo G). Después de la reducción del sistema de archivos, reducir el tamaño del volumen lógico con lvresize -L MMMM foo/homedonde MMMM es un número de megabytes (nota que la unidad por defecto es diferente de resize2fs, pero se pueden utilizar los mismos sufijos K, M, G). Tenga mucho cuidado de no reducir el volumen lógico más allá del sistema de archivos: este es un paso peligroso en este procedimiento.

Ahora hay espacio sin usar en el grupo de volúmenes. Ejecute lvresize -l +100%FREE foo/rootpara hacer que el volumen raíz tome todo el espacio libre en el grupo de volúmenes. Luego ejecute resize2fs /dev/mapper/foo-root(sin parámetro de tamaño) para agrandar el sistema de archivos para abarcar todo el volumen lógico; La ampliación se puede hacer mientras el volumen está montado.

Ahora tiene espacio para copiar algunos archivos. Si no tiene suficiente espacio para todo, muévase tanto como pueda, luego repita el procedimiento.

Una vez que haya copiado todos los archivos /home, estará listo para destruirlo. Verifique que /homeesté vacío (si movió los archivos) o que todos los archivos /homese hayan copiado /root(si copió los archivos). Para destruir el volumen lógico ahora innecesario, ejecute lvremove foo/home. Finalmente, amplíe el volumen raíz con lvresize -l 0%FREE foo/rooty su sistema de archivos con resize2fs /dev/mapper/foo-home.


Nota: / home se negó a desmontar hasta que reinicié en modo de usuario único.
Nick ODell el

Nota: se conoce como vg_ (nombre de la máquina) y lv_home
Nick ODell el

Ok, lo tengo funcionando. Sin embargo, faltaban algunos detalles en esta guía, por lo que publicaré mi historial de comandos completo pronto.
Nick ODell

2

OK, me encontré exactamente en la misma posición. Parece que CentOS crea un pequeño volumen raíz por defecto y llena el resto de su espacio /home. Incluso probé mi configuración primero en una máquina virtual, pero con el disco más pequeño, CentOS no creó el volumen de inicio. Comprendí este problema antes de quedar limitado de espacio, aunque también pensé en cómo no tener que ingresar al modo de usuario único. Como sigue:

Obtenga acceso a la máquina, ssh está bien (suponiendo que el usuario no sea root).

  1. cd / así que no estás en el directorio de inicio
  2. sudo -s seremos raíz de todo esto
  3. lsof /home compruebe que nadie esté usando el volumen de inicio, no debería
  4. mv, taro similar el contenido de la casa a otro lugar
  5. lvremove centos/home
  6. Edite /etc/fstaby comente o elimine la línea para/home
  7. Mueva el contenido de la casa a la que hizo una copia de seguridad antes de volver /home: ahora está en una posición segura, un reinicio aquí debería estar bien
  8. lvresize -l +100%FREE centos/root
  9. xfs_growfs /dev/centos/root en CentOS 7, otros podrían usar resize2fs
  10. df -h has tenido éxito?

Espero que esto lo haga más fácil para alguien. Es realmente sorprendente lo que puedes hacer en vivo en los sistemas de archivos en estos días.


Definitivamente es más fácil si no necesita migrar ningún dato. :)
Nick ODell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.