Mover / var, / home para separar la partición


59

Estoy intentando mover algunas carpetas (como /vary /home) a una partición separada después de leer esta guía:

3.2.1 Elija un esquema de partición inteligente

Pude mover una carpeta con éxito siguiendo esta guía.

Sin embargo, no parece funcionar para varias carpetas, y todas mis carpetas se vuelcan en la partición sin las carpetas adecuadas.

Me gustaría montar /var, /homey /tmpen la partición separada; alguien me puede guiar en esto?


¿Hiciste una partición adicional para cada uno de los directorios o solo uno?
mreithub

@mreithub me gustaría que esté idealmente almacenado en la misma partición y solo varía según la carpeta. de esa manera es mucho más simple para mí, no tener que preocuparme por el espacio.
toffee.beanns

1
No recomiendo poner /varen una partición separada. No tiene ningún beneficio. Mantenga todo el sistema operativo en una sola partición ( /). Usar particiones separadas sólo por cosas que no son del sistema operativo - los datos del usuario en /home, cola de correo (si tiene uno grande) en /var/mail, por ejemplo, bases de datos /var/lib/mysqlo /srv, ...
'parada SO siendo malos' Gilles

77
@Gilles " No hay beneficio para eso " ?????? (Tal vez necesito más signos de interrogación). Por supuesto, hay un beneficio en ello. / es mayormente estático. / var es casi completamente dinámico. Si monta / var en una partición separada, puede montar la partición raíz de solo lectura. Hay un montón de situaciones en las que eso es algo bueno.
Auspex

Respuestas:


73

1. Primero, necesita espacio sin asignar para crear las particiones para cada punto de montaje (/ var, / home, / tmp). Use Gparted para esto.

2. Luego debe crear los sistemas de archivos para esas particiones (también se puede hacer con Gparted) o usar:

mkfs.ext4 /dev/sdaX

por ejemplo, para crear un nuevo sistema de archivos ext4 en el dispositivo / dev / sdaX (reemplace / dev / sdaX con su propio dispositivo)

3. Monte el nuevo sistema de archivos en / mnt

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4. Vaya al modo de usuario único para que no haya actividad de rw en el directorio durante el proceso

init 1

5. Ingrese su contraseña de root.

6. Copia de seguridad de datos solo en var (no en el directorio / var en sí)

cd /var
cp -ax * /mnt/var

7. Cambie el nombre del directorio / var después de que sus datos se hayan transferido correctamente.

cd /
mv var var.old

8. Haga el nuevo directorio var

mkdir var

9. Desmonte la nueva partición.

umount /dev/sdaX

10. Vuelva a montarlo como / var

mount /dev/sdaX /var

11. Edite el archivo / etc / fstab para incluir la nueva partición, con / var como punto de montaje, de modo que se monte automáticamente en el arranque.

/dev/sdaX       /var     ext4    defaults    0 0

12. Repita los pasos 1-11 para / home y / tmp.

13. Finalmente regrese al modo multitarea.

init 5

Sí, estaba pensando en usar gparted. gracias por la respuesta. Estoy planeando reservar un espacio de 30 gb para estas pocas carpetas en realidad / home, / tmp, / var /, / opt, / usr /, ¿tiene un indicador aproximado de cuánto debería dar en consecuencia (para un servidor de alojamiento simple) ?
toffee.beanns

1
Estaba buscando usar lvm, ¿sería mejor en comparación con gparted?
toffee.beanns

LVM es un tema completamente diferente. LVM se usa como una capa para crear volúmenes lógicos sobre discos duros físicos. Gparted es solo la herramienta para crear los volúmenes físicos de LVM.
cioby23

1
En realidad, cp -ax * /mnt/vares una mala idea , porque ignorará los archivos / directorios ocultos. Prefiero cp -ax . /mnt/var. (@ cioby23, creo que debería actualizar su respuesta)
berbt

66
Por favor agregue un final init 5a la respuesta.
Robert Pollak

16

Si desea usarlos todos en la misma partición, puede usar LVMo tres montajes de enlace simples.

Para crear una solución basada en enlaces usted

  1. crear una partición con un sistema de archivos
  2. ir al modo de rescate (un solo usuario todavía necesita algunas de las carpetas)
  3. montarlo como /mnt/data
  4. Mueve todas las carpetas que quieras mover. Usar cpy mv dir dir.oldpodría ser más seguro, pero como hice esto después de la instalación, no me importó.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. crear entradas de montaje de enlace apropiadas en fstab, por ejemplo, tengo

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. reiniciar


En la mount(8)página de manual debajo nodiratimedice: If noatime option is set, this option is not needed.¿Hay alguna ventaja de redundancia al incluirlo de todos modos?
brannerchinese

5

Yo personalmente iría con la solución bind-mount de @ Fabian o usaría enlaces simbólicos:

  1. cree una /etc/fstabentrada para la nueva partición (use blkidpara obtener el UUID correcto para su nueva partición y no olvide mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. Use mount -ao algo similar para montar la nueva partición

  3. mueva las carpetas originales a su nueva partición:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Crear enlaces simbólicos

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

Aunque el método bind-mount es probablemente la mejor solución, prefiero esta porque no terminas con listas innecesariamente largas dfy de mountpartición.


1
¿Qué sucede con los métodos respectivos si algo quiere / var antes de montarlo? Sospecho que el método de enlace será más limpio, pero realmente no lo sé.
Auspex

@Auspex No debería haber una diferencia entre los dos métodos en ese sentido (como afaik, todas las particiones locales /etc/fstabse montan al mismo tiempo durante el arranque). Antes de /mnt/datamontar todos sus enlaces simbólicos estarían 'muertos', por lo que cualquier intento de lectura / escritura en ellos (y en subdirecciones inexistentes) fallaría (con ENOENT si no recuerdo mal). Con bind-mounts obtienes prácticamente el mismo resultado, pero los programas podrían escribir en la partición raíz (si intentan ser inteligentes sobre directorios no existentes)
mreithub

1
Bueno, eso no es estrictamente cierto. La raíz se monta primero, y pregunté específicamente porque el consejo de "raíz de solo lectura" de Debian menciona la posibilidad de que los procesos quieran acceder a / var antes de que se monte. Pero en mi caso, donde tengo una Raspberry Pi y configuré un sistema de archivos de solo lectura en / (porque la tarjeta SD se corrompe cuando se corta la energía de la máquina), me está alentando que cualquiera de los métodos funcionará . Nada va a escribir en el sistema de archivos raíz, porque es RO, por lo que cualquier caso dará como resultado un error.
Auspex

0

Además del procedimiento dado cioby23, también tuve que hacer:

  restorecon -R /var

para que sshd se inicie.

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.