Actualmente estoy atrapado en un esquema de partición restrictivo que hace que mis particiones se llenen. Se parece a esto:
/dev/sda7 870G 315G 511G 39% /
/dev/sda6 2.0G 271M 1.6G 15% /tmp
/dev/sda3 15G 13G 1.5G 90% /usr
/dev/sda2 15G 8.6G 5.0G 64% /var
/dev/sda1 99M 36M 58M 39% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm
Quiero mover los datos /usr
(y /var
probablemente también) a la partición raíz. Realmente no me importan las particiones en sí, por lo que no es necesaria una fusión.
¿Cuál sería el mejor enfoque para hacer esto? Actualmente, mi plan es este:
cp -R /usr /newusr
umount /usr
mv /newusr /usr
¿Podría ser realmente así de simple o estoy pasando por alto algo?
Respuesta1
Tu enfoque es correcto. Cree un directorio en la partición raíz, copie sus datos allí, desmonte la usr
partición y mueva su nuevo directorio a usr
. No olvides editar el tuyo /etc/fstab
después.
Respuesta2
En primer lugar, siempre debes comprobar si tienes suficiente espacio libre. Esta vez sí lo has hecho.
Sobre la copia:
No es tan simple. Existen archivos especiales, cuyos atributos especiales no siempre se copian correctamente. En lugar de cp -R
, utilice
cp -vfa /usr /newusr
Si desea ver lo que se está haciendo actualmente, puede acceder a él con el indicador "-v".
- No olvide editar
/etc/fstab
los cambios. - ADVERTENCIA: Después de una nueva partición, el kernel no siempre puede volver a leer su nueva tabla de particiones y, por lo tanto, es posible que utilice más la anterior. ¡Es muy peligroso! La versión del kernel sobre la tabla de particiones actual se puede encontrar en
/proc/partitions
, y la tabla de particiones en el disco se puede leer con una extensiónfdisk -l /dev/sda
. Si no coincide la partición que desea cambiar actualmente, lo mejor es reiniciar.
Respuesta3
Para conseguirlo sería necesario hacerlo en modo monousuario o mediante un LiveCD, que es lo que encontrarás en Internet.
Además, es posible realizar esto en tiempo de ejecución (un poco arriesgado, por supuesto) pero creo que de esta manera sólo funcionará para /var y no para/usr, algunas bibliotecas en tiempo de ejecución dependen de esta carpeta. Puedes probarlo en una máquina de prueba previamente si funciona.
primero en todo tudebeverifique que cualquier proceso/servicio esté usando/escribiendo en el directorio que desea mover.
lsof | grep -E '/usr|/var'
Generalmente /var todavía se usa para archivos pid y sock,/usry cualquier lib lo necesitará.
Por lo tanto, detenga/elimine los servicios y procesos que aparecen.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cupsd 723 root 5u REG 8,1 0 8651393 /var/log/cups/error_log
cupsd 723 root 6u REG 8,1 0 8651908 /var/log/cups/page_log
cupsd 723 root 12u unix 0xffff88020d97d780 0t0 9958 /var/run/cups/cups.sock
En este breve ejemplo, cups daemon se ejecuta y utiliza esos directorios. Si los detiene, no aparecerán en la salida de lsof.
Después de eso, necesita una copia de sus datos actuales, le sugeriré usar rsync en lugar de cp (para preservar todo, permisos, enlaces simbólicos, etc.)
mkdir /mnt/var
mkdir /mnt/usr
Haz tu copia de seguridad
rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr
Desmontar carpetas
umount /var
umount /usr
Restaurar datos
rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr
Edita tu/etc/fstabarchivar y comentar/eliminar las entradas donde/vary/usrdonde se supone que debe montarse.
Luego puede iniciar todos los servicios que detuvo o reiniciar su máquina. Si por/usrno funciona, no puedes detener un demonio (tal vez no puedas matarlo porque depende del pid de inicio), la única forma será usando un LiveCD.
Aunque no mencionaste qué tipo de máquina es (tu PC, máquina de oficina, un servidor, etc.) dependerá de esto realizarlo de la manera formal posible.