Как выделить больше места для обмена и увеличить его размер больше, чем баран?

8

Ситуация: увеличьте размер подкачки ( /dev/sda3) больше, чем Ram (8 ГБ), когда HD 128 ГБ
Мотивация: 8 ГБ ОЗУ слишком мало; 30 ГБ свободного места на моем SSD; Хочу превратить 20 ГБ в SSD подкачку
Характеристики системы

  • Поменяйте местами неизменяемый / изменяемый. Я не могу найти никаких доказательств того, почему они /mnt/.swapfileдолжны быть неизменяемыми, поэтому вам не нужно изменять атрибуты файла файла подкачки

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Команда sudo fdisk -lu /dev/sdaдает

    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
    
  • Команда df -hдает

    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
    
  • Выделите больше места на диске для замены /dev/sda3.

Мой неудачный рабочий процесс для задачи, когда HD и Swap на одном разделе, /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 и обмен на одном разделе - текущий рабочий процесс [Ijaz, cas, FarazX]

Слияние. fallocateВместо этого используйте в начале, ddпотому что не нужно ставить нули

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

Добавьте в вашу строку следующую строку, /etc/fstabкоторая лучше, чем добавление этой вещи в ваши уровни запуска ( /etc/rc.local), где я поместил файл подкачки в файл, /mnt/.swapfileчтобы поддержать философию Linux / Unix и сохранить целостность моих сценариев резервного копирования системы; При подключении к SSD используйте эту discardопцию, чтобы блоки обрезались при каждой перезагрузке, поэтому неsw

# 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

источники

  1. Как увеличить пространство подкачки? https://askubuntu.com/a/178726/25388 Общее обсуждение увеличения пространства подкачки для начинающих.
  2. Linux Partition HOWTO для жестких дисков, а не SSD: 4. Требования к разделам. http://www.tldp.org/HOWTO/Partition/requirements.html Так что не устанавливайте своп на внешние дорожки на твердотельных накопителях, а используйте defaults,discardпараметры для обрезки блоков, как предложено @cas.

Система: Linux Ubuntu 16.04 64-битное
ядро Linux: 4.6
Модули Linux: wl
Аппаратное обеспечение: Macbook Air 2013 - середина
Ram: 8 ГБ
SSD: 128 ГБ

Лео Леопольд Герц 준영
источник
Выход fdisk -lu /dev/sda?
Стефан Шазелас
Опции сжимают fs в / dev / sda2 и перераспределяют (но этого нельзя сделать из живой системы, так как вы не можете размонтировать / dev / sda2, так как это корневая файловая система: загрузка на некоторых livecd является самой простой), или используйте файл подкачки, а не блочное устройство, или используйте сжатый файл подкачки или сжатый ОЗУ
Стефан Шазелас
1
Немногие из этих соображений относятся к SSD: они не имеют головок или дорожек, как вращающиеся диски. Может применяться чередование нескольких дисков, если у вас огромная нагрузка ввода-вывода.
ilkkachu
1
@Masi Привет, приятель, я работал с моей системой FreeBSD, и что-то пришло мне в голову, у нас есть команда под названием chflagsBSD и OS X, и у нас есть команда под названием linux chattr, вы можете сделать свои файлы и каталоги более безопасными и неизменяемым путем установки некоторых атрибутов, вот руководство на tecmint.com , я надеюсь, что это может помочь.
FarazX

Ответы:

3

Вы просто хотите увеличить размер подкачки в вашей системе, используя пространство от sda2. Вашsda2

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

Вы можете добавить дополнительное пространство подкачки в вашу систему, используя файл подкачки, созданный на /вашем компьютере sda2. Просто делать:

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

а затем сделать:

sudo mkswap /swapfile  
sudo swapon /swapfile 

и проверьте, что пространство подкачки увеличится на эту величину, используя free -m

и да, чтобы включить его во время загрузки, добавьте запись в /etc/fstab

 /swapfile     none     swap     sw     0     0
Иджаз Ахмад Хан
источник
3
Да, вы должны быть в состоянии вычислить. Swapper должен видеть большую виртуальную память.
Lmwangi
3
@masi, если вы добавите запись в, /etc/fstabвы можете избежать записи в rc.local. Поместите файл подкачки куда-нибудь, /mnt/.swapи вам больше не нужно будет об этом слишком беспокоиться
roaima
4
  1. Управление памятью

    • Чтобы отобразить сводную информацию об использовании подкачки вашим устройством:

      $ swapon -s
      
    • Чтобы отобразить объем свободной и использованной физической памяти и памяти подкачки:

      $ free -h
      
    • Чтобы предварительно выделить место для / swapfile, вы можете использовать строку ниже:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Изменить разрешение и создать / активировать своп

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

    Вы также можете улучшить безопасность файлов, изменив атрибуты файлов с помощью chattr. Я рекомендую вам прочитать его руководство или прочитать это руководство на веб-сайте Tecmint .

  3. Убедитесь, что он включен, просмотрев выходные данные команды cat /proc/swaps, использовать freeкоманду или

    $ swapon -s
    
  4. Для того, чтобы включить его во время загрузки , редактирования /etc/fstab(статическую информацию о файловой системе) , чтобы включить следующие где поля fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqи fs_passno, о которых вы можете прочитать на man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • В параметре fourt fs_mntops , не используйте только swпри подключении к SSD, но так defaults,discard, чтобы блоки памяти обрезались каждый раз при запуске, см. Ответ здесь о том, как сделать перехват ошибок и своппинг, если ошибка / предупреждение? discardВариант , безусловно , работает на разделах.
FarazX
источник
2
@ Маси, нет, fallocate - это просто, нет нужды ставить нули и устанавливать счет через, ddтак как вы можете сделать это неправильно, если вы не знаете, что делаете, dd- это супер-мощная команда. А пространство подкачки AFAIK в Linux используется, когда объем физической памяти (ОЗУ) заполнен, и имейте в виду, что у него нет точки монтирования. Так что я думаю, что не имеет значения, где он находится, просто измените его на 600.
FarazX
1
@ Маси мое удовольствие. Кстати, вы можете прочитать о полях fstab, запустив man 5 fstab. Удачи, приятель.
FarazX
@ Маси да, конечно. Вы можете перечислить атрибуты файла с помощью lsattr, и, как я уже говорил, вы можете установить их с помощью chattr. Например, если вы хотите сделать его неизменным, вы можете использовать chattr +i /mnt/.swapfile, или в BSD или OS X вы можете использовать chflags uchg yourFile. У вас есть много опций атрибутов, например, когда файл с sнабором атрибутов удален, его блоки будут обнулены и записаны обратно на диск. Но я рекомендую вам прочитать его справочную страницу и побродить по сети. Это не так просто, как кажется chattr, и вы должны знать, что вы действительно собираетесь делать!
FarazX
1
Атрибут настройки @Masi AFAIK соответствует вашим потребностям, поэтому для большинства систем ответ будет отрицательным. Но вы можете найти некоторые Unix-подобные операционные системы, имеющие некоторые файлы или каталоги с неизменяемыми или ограниченными атрибутами, установленными по умолчанию, например, для MacOS X.
FarazX
1
@Masi, по сути, нет необходимости делать это по умолчанию, поэтому я думаю, что ответ - нет, поскольку файлы подкачки, скорее всего, используются временно, а не постоянно. Если вы используете разделы LVM, лучше увеличить раздел подкачки, а не создавать файл подкачки. Но если вы не можете сделать это, и файлы подкачки являются единственным вариантом, это не проблема, но это повлияет на вашу систему и снизит ее производительность. Нет правил, все зависит от ваших потребностей, от того, что вы можете для этого сделать, и от того, насколько безопасна ваша система.
FarazX
2

Вы спрашиваете: « Как выделить больше места для замены и увеличить его размер больше, чем у Ram? », Ничего не говорится об изменении способа настройки вашей системы.

Ваш fdisk и бесплатный вывод говорят нам:

  • У вас есть раздел (/ dev / sda3), предназначенный для подкачки. Если вы просто измените размер этого раздела, вам не нужно ничего менять в вашей системе, чтобы использовать дополнительное пространство. (/ И т.д. / Fstab).
  • У вас есть раздел (/ dev / sda2), на котором установлена ​​ОС. Этот раздел имеет 26G свободного места. Если вы сократите этот раздел на 20G, у ОС останется 5G для роста и использования.

Раздел подкачки не является расширенным разделом, это немного увеличивает размер.

Необходимые инструменты:

  • Загрузочная ОС с gparted

Посмотрите здесь, где находится последняя бесплатная версия Parted Magic

Инструкция по изменению размера разделов с помощью gparted

  1. загрузиться в другую ОС, в которой есть gparted tool
  2. В gparted; изменить размер раздела ОС (/ dev / sda2). Уменьшите количество, чтобы пожертвовать, чтобы обменять место. Это может занять много времени, потому что gparted должен будет переместить все данные, которые находятся в свободном пространстве.
  3. В gparted; изменить размер раздела подкачки (/ dev / sda3). Перемещение и расширение, чтобы включить все свободное пространство.
  4. перезагрузитесь в ОС sda2.
  5. убедитесь, что раздел подкачки (/ dev / sda3) используется.

Помните, что вы меняете диск и разделы на низком уровне и что любые ошибки или сбои могут повредить ваши данные.

Сначала сделайте резервную копию ваших данных.

jc__
источник
Я думаю, что вам gpartedздесь не нужно, потому что вы можете поместить тампон на тот же диск, где находится ваша ОС.
Лео Леопольд Герц 준영
Правда, но тогда у вас будет 2 свопа. Файл в / sda2 и раздел на / sda3. Это отвечает на ту часть вопроса, которая задала вопрос: «Выделите больше места на диске для раздела подкачки в / dev / sda3. Как его взять из / dev / sda2?».
jc__
В отношении утверждения: «Однако не уверен, потому что я думаю, что / dev / sda2 и / dev / sad3 находятся на одном и том же разделе диска». /dev/sda2 и /dev/sda3 являются отдельными разделами.
jc__
То есть вы добавляете другое устройство, на котором есть место, которое вы хотите использовать для обмена? Если да. Вы можете создать новый раздел типа swap на нем, и когда он подключен и готов к использованию, выполните a swaponили аналогичный. На устройстве удаление сделать swapoffили аналогичные. Состояние перестановки устройства не будет запомнено при перезагрузке ОС.
jc__
1
mkfs отформатирует раздел с файловой системой. (vfat, ext2, ext4, ntfs). chattr изменит атрибуты файла в файловой системе ext.
jc__