¿Cómo mover / var a otra partición existente?

16

Tengo una partición / que contiene / var y es demasiado pequeña. Tengo otra partición existente con suficiente espacio.

Aquí está mi df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

¿Cómo puedo mover la carpeta / var de sda1 a sda2?

Jérémie
fuente

Respuestas:

19

Entra en modo de usuario único y asegúrate de que /varse detiene cualquier proceso de escritura . (Consultar con lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# puede eliminar /var.oldcuando haya terminado para reclamar el espacio
  • mkdir -p /var
  • mount -o bind /home/var /var
  • actualice su /etc/fstabpara hacer que el montaje de unión sea permanente.

/etc/fstab

 /home/var /var        none    bind
Zoredache
fuente
Gracias! ¿Cómo puedo ingresar al modo de usuario único? ¿La carpeta 'var' permanecerá en / home?
Jérémie
Sí, siempre habrá un /home/vardirectorio si resuelve el problema de esta manera. Una forma de ingresar al modo de usuario único es reiniciando y eligiendo el modo de usuario único en el menú de Inicio.
Zoredache
No estoy realmente seguro de si esto funcionará bien todo el tiempo. Si está utilizando una versión más reciente (wheezy), puede estar bien, ya que tiene un sistema de archivos / run. OTOH: al principio del proceso de arranque, los archivos se pueden abrir en / var antes de que se monte en enlace.
cstamas
1
@cstamas, Tener / var en un sistema de archivos separado es compatible , y siempre lo ha sido. Incluso se sugiere tener / var por separado como algo bueno en FHS y en los documentos oficiales de Debian.
Zoredache
Ok, creo que tienes razón. Fue extraño para mí hacer esto con monturas de unión.
cstamas
5

También puedes usar:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Esto parece mucho más fácil que perder el tiempo con las cosas fstab y mount.

mdpc
fuente
1
No estoy seguro de por qué alguien tendría que votar por esto. Esto funcionaría perfectamente bien. Un enlace simbólico debería funcionar bien. Solo uso monturas de unión para otras cosas, por lo que tiendo a pensar en ellas primero.
Zoredache
1
Para agregar a esto, puede que no sea tan seguro, pero de hecho funciona. Recientemente hice esto en una máquina antes de ponerlo en producción. Debería tener precaución si se trata de una máquina que ha estado en uso o tiene muchos procesos en ejecución. En mi caso, era un servidor nuevo destinado a ejecutar solo tomcat.
AJ Brown
1
Symlinking / var funciona, pero en lugar de hacerlo prefiero poner una entrada en / etc / fstab, para recordarme en qué partición / volumen pongo qué y por qué (puede agregar comentarios). De esta manera también me resulta más comprensible lo que tengo que cambiar en la configuración si necesito cambiar algo en mi hardware.
gerlos
1
No puedo ver cómo funcionaría esto. Quiero que funcione, pero cosas básicas como init use / var, ¿no?
Sue Spence el
1

Muévase /varsin cambiar al modo de usuario único

Cuando me hice cargo de un nuevo servidor virtual que me había provisto la empresa de alojamiento de mi empleador, creé volúmenes lógicos adicionales para vary homeque habían sido directorios regulares en la partición raíz. Dado que el proveedor del servidor virtual no proporcionó una interfaz similar a KVM por la cual podía acceder al servidor en modo de usuario único, las respuestas anteriores no eran aplicables a mi configuración. Espero que esta respuesta sea útil para otras personas en una situación similar (he guardado los detalles de LVM, pero se pueden omitir ya que no es particularmente relevante si el nuevo sistema de archivos se crea en un volumen lógico o una partición de disco).

Cree y use un nuevo /varsistema de archivos con LVM

Cree el sistema de archivos para el nuevo varvolumen, móntelo (usando un directorio temporal) y copie los archivos del sistema de archivos actual /varal nuevo. Al copiar archivos con rsync, use su -a, --archiveopción para conservar -X, --xattrsmarcas de tiempo, propiedad, modos, etc. y su opción para preservar los atributos extendidos, como las etiquetas de seguridad utilizadas por AppArmor y SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

Actualizar la tabla del sistema de archivos

Configure el nuevo sistema de archivos que se utilizará como un nuevo punto de montaje para /varagregar la siguiente línea a /etc/fstab. Tenga en cuenta que 0se usa como número de paso (último campo) para que el sistema de archivos no se verifique automáticamente ( fsck) después de un cierto número de reinicios (no tengo acceso para iniciar sesión en el servidor en modo de usuario único).

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Como no puedo cambiar al modo de usuario único, reinicie la computadora para usar este nuevo volumen como /var.

Recupere espacio en disco del sistema de archivos raíz

Después de reiniciar la máquina, realice los siguientes pasos para limpiar el directorio temporal y eliminar los /vararchivos antiguos del sistema de archivos raíz:

  1. Retire el punto de montaje temporal:

    sudo rmdir /var.new
    
  2. Cree un nuevo punto de montaje para crear una ruta alternativa a los archivos en el /vardirectorio anterior en el sistema de archivos raíz (actualmente está "enmascarado" por el nuevo /varsistema de archivos montado en el directorio):

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
    
Anthony G - justicia para Monica
fuente