¿Cómo asignar más espacio para intercambiar y aumentar su tamaño más que Ram?


8

Situación: aumentar el tamaño de intercambio ( /dev/sda3) mayor que Ram (8 GB) cuando HD 128 GB
Motivación: 8 GB de RAM es muy poco; 30 GB de espacio libre en mi SSD; Quiero convertir 20 GB a SSD Swap
Características del sistema

  • Intercambio no inmutable / cambiable. No puedo encontrar ninguna evidencia de por qué /mnt/.swapfiledebería ser inmutable, por lo que no necesita cambiar los atributos de archivo del archivo de intercambio

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Comando sudo fdisk -lu /dev/sdada

    Disk /dev/sda: 113 GiB, 121332826112 bytes, 236978176 sectors 
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 082F85CA-EE3E-479C-8244-858B196FA5BA
    
    Device         Start       End   Sectors   Size Type
    /dev/sda1       2048      4095      2048     1M BIOS boot
    /dev/sda2       4096 220323839 220319744 105.1G Linux filesystem
    /dev/sda3  220323840 236976127  16652288     8G Linux swap
    
  • Comando df -hda

    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.9G     0  3.9G   0% /dev
    tmpfs           793M  9.4M  784M   2% /run
    /dev/sda2       104G   74G   25G  75% /
    tmpfs           3.9G   54M  3.9G   2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
    tmpfs           793M   64K  793M   1% /run/user/1000
    
  • Asigne más espacio en disco para Swap in /dev/sda3.

Mi flujo de trabajo fallido para la tarea cuando HD y Swap en la misma partición, /dev/sda3

masi@masi:~$ sudo -i

root@masi:~# swapoff /dev/sda3

root@masi:~# swapon
[blank]    

root@masi:~# dd if=/dev/zero of=/dev/sda3 bs=20480 count=1M
dd: error writing '/dev/sda3': No space left on device
416308+0 records in
416307+0 records out
8525971456 bytes (8.5 GB, 7.9 GiB) copied, 18.7633 s, 454 MB/s

root@masi:~# mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8525967360 bytes)
no label, UUID=245cb42c-1d4e-4e21-b544-16b64af962d6

root@masi:~# swapon -p 99 /dev/sda3

root@masi:~# swapon
NAME       TYPE      SIZE USED PRIO
/dev/sda3  partition   8G   0B   99

root@masi:~# vi /etc/fstab 
...

HD e intercambio en la misma partición: flujo de trabajo actual [Ijaz, cas, FarazX]

Fusionando Utilice fallocateal principio en su lugar ddporque no es necesario poner ceros

masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

Agregue la siguiente línea en su /etc/fstabque es mejor que agregar la cosa a sus niveles de ejecución ( /etc/rc.local), donde puse el archivo de intercambio /mnt/.swapfilepara mantener la filosofía de Linux / Unix y mantener la integridad de los scripts de copia de seguridad de mi sistema; Si cambia a un SSD, use la discardopción para que los bloques se recorten en cada reinicio, de modo que nosw

# http://unix.stackexchange.com/a/298212/16920
# http://unix.stackexchange.com/a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
#/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

Fuentes

  1. ¿Cómo aumentar el espacio de intercambio? https://askubuntu.com/a/178726/25388 Discusión general sobre el aumento del espacio de intercambio para principiantes.
  2. Linux Partition HOWTO para HDD, no SSD: 4. Requisitos de particionamiento. http://www.tldp.org/HOWTO/Partition/requirements.html Por lo tanto, no coloque su intercambio en pistas externas en SSD, sino que use las defaults,discardopciones para recortar sus bloques según lo propuesto por @cas.

Sistema: Linux Ubuntu 16.04 64 bit
Kernel de Linux: 4.6
Módulos de Linux: wl
Hardware: Macbook Air 2013-mid
Ram: 8 GB
SSD: 128 GB


Salida de fdisk -lu /dev/sda?
Stéphane Chazelas

Las opciones están reduciendo fs en / dev / sda2 y repartición (pero eso no se puede hacer desde el sistema en vivo ya que no se puede desmontar / dev / sda2 ya que ese es el sistema de archivos raíz: arrancar en algunos livecd es lo más fácil), o usar un archivo de intercambio en lugar de bloquear el dispositivo, o usar intercambio comprimido o ram comprimido
Stéphane Chazelas

1
Pocas de esas consideraciones de colocación se aplican a SSD: s, ya que no tienen cabezas o pistas como discos giratorios. Se pueden aplicar bandas en varias unidades, si tiene una gran carga de E / S.
ilkkachu

1
@ Masi Hola amigo, estaba trabajando con mi sistema FreeBSD y algo se me ocurrió, tenemos un comando llamado chflagsBSD y OS X, y tenemos un comando llamado Linux chattr, puedes hacer que tus archivos y directorios sean más y más seguros e inmutable estableciendo algunos atributos, aquí hay una guía en tecmint.com , espero que esto pueda ayudar.
FarazX

Respuestas:


3

Solo desea aumentar el tamaño de intercambio en su sistema utilizando el espacio de sda2. Tusda2

/dev/sda2       104G   74G   25G  75%  / 

Puede agregar espacio de intercambio adicional a su sistema utilizando el archivo de intercambio creado en el /que utilizará su sda2. Solo haz:

dd if=/dev/zero of=/swapfile bs=20480 count=1M

y luego hacer:

sudo mkswap /swapfile  
sudo swapon /swapfile 

y verifica, tu espacio de intercambio aumentará en esa cantidad usando free -m

y sí, para habilitarlo en el momento del arranque, agregue la entrada en /etc/fstab

 /swapfile     none     swap     sw     0     0

3
Sí, deberías poder calcular. Swapper debería ver una gran memoria virtual.
Lmwangi

3
@masi si agrega una entrada /etc/fstab, puede evitar las entradas en rc.local. Coloque el archivo de intercambio en algún lugar como /mnt/.swapy ya no tendrá que preocuparse demasiado por él
roaima

4
  1. Gestión de la memoria

    • Para mostrar el resumen de uso de intercambio de su dispositivo:

      $ swapon -s
      
    • Para mostrar la cantidad de memoria física y de intercambio gratuita y usada:

      $ free -h
      
    • Para preasignar espacio a / swapfile, puede usar la siguiente línea:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Cambiar permiso y crear / activar intercambio

    $ chmod 600 /swapfile
    
    $ mkswap /swapfile
    
    $ swapon /swapfile
    

    También puede mejorar la seguridad de su archivo cambiando sus atributos de archivo usando chattr. Le recomiendo que lea su página de manual, o lea esta guía en el sitio web de Tecmint .

  3. Verifique que esté habilitado viendo la salida del comando cat /proc/swaps, use el freecomando o

    $ swapon -s
    
  4. Para activarlo en el arranque , editar /etc/fstab(información estática sobre el sistema de archivos) para incluir el siguiente, donde los campos son fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqy fs_passno, sobre la que se puede leer por man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • En el cuarto parámetro fs_mntops , no lo use solo swcuando cambie a un SSD, sino defaults,discardque los bloques de memoria se recorten cada vez que se inicie, vea la respuesta aquí sobre ¿Cómo hacer la captura de errores y el intercambio si hay error / advertencia? La discardopción definitivamente funciona en particiones.

2
@Masi no, Falocate es solo un lugar fácil, no es necesario poner ceros y establecer el conteo ddya que puede hacerlo mal si no sabe lo que está haciendo, ddes un comando súper poderoso. Y el espacio de intercambio AFAIK en Linux se usa cuando la cantidad de memoria física (RAM) está llena, y tenga en cuenta que no tiene punto de montaje. Así que creo que no importa dónde esté, simplemente
cámbielo

1
@ Masi un placer. Por cierto, puede leer acerca de los campos en fstabejecución man 5 fstab. Buena suerte compañero.
FarazX

@ Masi sí, por supuesto. Puede enumerar los atributos de archivo por lsattr, y como mencioné, puede establecerlos por chattr. Por ejemplo, si quieres hacerlo inmutable, puedes usarlo chattr +i /mnt/.swapfile, o en BSD o OS X puedes usarlo chflags uchg yourFile. Tiene muchas opciones de atributos, por ejemplo, cuando sse elimina un archivo con conjunto de atributos, sus bloques se pondrán a cero y se volverán a escribir en el disco. Pero le recomiendo que lea su página de manual y navegue por la red. ¡No es tan fácil como parece usar chattr, y debes estar al tanto de lo que realmente vas a hacer!
FarazX

1
El atributo de configuración @Masi AFAIK depende de sus necesidades, por lo que la respuesta es no para los sistemas de la mayoría. Pero puede encontrar algunos sistemas operativos tipo Unix que tienen algunos archivos o directorios con atributos inmutables o restringidos establecidos de manera predeterminada, para Instance, MacOS X.
FarazX

1
@Masi, de hecho, no hay necesidad de hacerlo de forma predeterminada, por lo que creo que la respuesta es no, ya que los Swapfiles probablemente se usen temporalmente, no permanentemente. Si está utilizando particiones LVM, es mejor aumentar su partición de intercambio, en lugar de hacer un archivo de intercambio. Pero si no puede hacer eso y los archivos de intercambio son la única opción, no hay problema, pero afectará a su sistema y ralentizará su rendimiento. No existe un libro de reglas, todo depende de sus necesidades, de lo que puede hacer por él y de la seguridad que desea que tenga su sistema.
FarazX

2

Tu pregunta, " ¿Cómo asignar más espacio para intercambiar y aumentar su tamaño más que Ram? ", No dice nada acerca de cambiar la forma en que está configurado su sistema.

Su fdisk y salida libre nos dice:

  • Tiene una partición (/ dev / sda3) dedicada al intercambio. Si solo cambia el tamaño de esa partición, no debería necesitar cambiar nada en su sistema para usar el espacio extra. (/ etc / fstab).
  • Tiene una partición (/ dev / sda2) que tiene el sistema operativo. Esta partición tiene 26G de espacio libre. Si reduce esta partición en 20G, el sistema operativo tendrá 5G para crecer y usar.

La partición de intercambio no es una partición extendida, esto hace que sea un poco más fácil aumentar el tamaño.

Herramientas necesarias:

  • SO de arranque con gparted

Busque aquí una ubicación de la última versión gratuita de Parted Magic

Instrucciones para cambiar el tamaño de particiones con gparted

  1. iniciar en otro sistema operativo que tiene una herramienta separada
  2. En gparted; cambiar el tamaño de la partición del sistema operativo (/ dev / sda2). Reduzca la cantidad para donar al espacio de intercambio. Esto podría llevar mucho tiempo porque todos los datos que están en el espacio que se liberará deberán ser movidos por gparted.
  3. En gparted; cambiar el tamaño de la partición de intercambio (/ dev / sda3). Mover y extender para incluir todo el espacio libre.
  4. reiniciar en el sistema operativo sda2.
  5. verifique que se esté utilizando la partición de intercambio (/ dev / sda3).

Recuerde que está cambiando su disco y particiones en un nivel bajo y que cualquier error o bloqueo podría dañar sus datos.

Haga una copia de seguridad de sus datos primero.


Creo que no es necesario gpartedaquí porque puede poner un hisopo en el mismo disco donde está su sistema operativo.
Léo Léopold Hertz 준영

Es cierto, pero entonces tendrías 2 intercambios. Archivo en / sda2 y partición en / sda3. Esto responde a la parte de la pregunta que preguntaba "Asigna más espacio en disco para Swap en / dev / sda3. ¿Cómo tomarlo de / dev / sda2?".
jc__

En referencia a la declaración: "Sin embargo, no estoy seguro porque creo que / dev / sda2 y / dev / sad3 están en la misma partición de disco". /dev/sda2 y /dev/sda3 son particiones separadas.
jc__

¿Entonces está agregando otro dispositivo que tiene espacio que desea usar para el intercambio? En caso afirmativo. Puede crear una nueva partición de intercambio de tipos y, cuando esté enchufado y listo para usar, haga una swapono similar. Al retirar el dispositivo, haga una swapoffo similar. El estado de intercambio del dispositivo no se recordará al reiniciar el sistema operativo.
jc__

1
mkfs formateará una partición con un sistema de archivos. (vfat, ext2, ext4, ntfs). chattr cambiará los atributos de archivo de un archivo en un sistema de archivos ext.
jc__
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.