Подробный гайд: Swap-файл в Linux и объём 18400030736. Часть 1: разделы 1–10
Swap-файл в Linux и объём 18400030736. Часть 1: разделы 1–10
Эта статья посвящена практической работе со своп-файлом в Linux на примере объёма 18400030736. Мы разберём, что означает это число, как подготовить систему, как создать своп-файл, какие команды использовать, как сделать его постоянным и как правильно подойти к выбору размера.
1. Что означает число 18400030736
В контексте Linux-систем число 18400030736 чаще всего означает размер в байтах.
18400030736 bytes
Если перевести это в более привычные единицы:
18400030736 байт ≈ 18.40 GB
18400030736 байт ≈ 17.14 GiB
То есть речь идёт о своп-файле размером примерно 17 гигабайт в двоичной системе, которую обычно используют операционные системы и утилиты мониторинга. Однако важно учитывать источник числа.
Если вы видите 18400030736 в выводе команд вроде:
free
cat /proc/swaps
top
нужно проверить единицы измерения. Некоторые утилиты по умолчанию показывают значения в килобайтах.
Если 18400030736 — это не байты, а килобайты, тогда размер будет намного больше:
18400030736 KiB ≈ 17.14 TiB
Это уже около 17 тебибайт, что для обычного компьютера или сервера встречается крайне редко.
Чтобы не путаться, используйте человеческий формат вывода:
free -h
swapon --show
df -h
Или проверяйте файл напрямую:
ls -lh /swapfile
2. Подготовка к созданию своп-файла
Перед созданием своп-файла нужно убедиться, что система готова к операции.
Проверьте текущий своп
Посмотрите, есть ли уже активный своп:
swapon --show
Альтернативный вариант:
cat /proc/swaps
- Если вывод пустой, значит своп в данный момент не используется.
- Если своп уже есть, вы можете либо добавить ещё один своп-файл, либо заменить существующий.
Проверьте свободное место
Если вы планируете создать файл /swapfile в корне системы, проверьте свободное место на корневом разделе:
df -h /
Для файла размером около 18.4 ГБ нужно иметь как минимум 18.4 ГБ свободного места, но лучше оставлять запас. Например, если вы хотите создать файл размером 18400030736 байт, желательно иметь не менее 20 ГБ свободного пространства.
Проверьте размер страницы памяти
Своп в Linux работает со страницами памяти. Обычно размер страницы составляет 4096 байт.
Проверить его можно командой:
getconf PAGESIZE
Пример вывода:
4096
Точный размер своп-файла до байта обычно не критичен. Чаще всего достаточно размера, кратного мегабайту или гигабайту.
Убедитесь, что используете локальную файловую систему
Своп-файл должен находиться на локальном диске. Не рекомендуется использовать своп-файл на сетевых файловых системах, например на NFS.
3. Быстрый вариант создания своп-файла около 18400030736 байт
Если вам нужно быстро создать своп-файл примерно на 18400030736 байт, можно использовать файл размером 17548 MiB.
17548 MiB = 18400411648 bytes
Это немного больше, чем 18400030736, но для своп-файла такая разница не критична.
Команды:
sudo dd if=/dev/zero of=/swapfile bs=1M count=17548 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
После этого проверьте результат:
swapon --show
free -h
Если команда swapon --show показывает файл /swapfile, значит своп успешно подключён.
4. Создание своп-файла с помощью fallocate
Утилита fallocate позволяет быстро выделить место под файл без фактической записи всех данных. Это быстрее, чем dd.
Создать файл размером ровно 18400030736 байт можно так:
sudo fallocate -l 18400030736 /swapfile
Далее нужно установить правильные права:
sudo chmod 600 /swapfile
Затем разметить файл как своп:
sudo mkswap /swapfile
И включить его:
sudo swapon /swapfile
Проверка:
swapon --show
free -h
Пример вывода swapon --show:
NAME TYPE SIZE USED PRIO
/swapfile file 17.1G 0B -2
Однако у fallocate есть важная особенность: он работает не во всех файловых системах и не всегда подходит для своп-файлов.
Если вы получаете ошибку вроде:
fallocate failed: Operation not supported
лучше использовать dd.
5. Создание своп-файла с помощью dd
Команда dd считается более универсальным способом создания своп-файла, потому что она реально заполняет файл данными.
Рекомендуемый вариант
Создать файл размером примерно 18400030736 байт:
sudo dd if=/dev/zero of=/swapfile bs=1M count=17548 status=progress
Параметры:
if=/dev/zero — источник нулевых данных
of=/swapfile — имя создаваемого файла
bs=1M — блок размером 1 MiB
count=17548 — количество блоков
status=progress — отображение прогресса
Итоговый размер будет:
18400411648 bytes
Это чуть больше исходного значения, но для свапа подходит.
Точный размер в байтах
Если нужно создать файл ровно на 18400030736 байт, можно использовать:
sudo dd if=/dev/zero of=/swapfile bs=1 count=18400030736 status=progress
Но этот способ будет значительно медленнее, потому что данные пишутся по одному байту.
Выравнивание по размеру страницы
Если размер страницы памяти равен 4096 байт, можно создать файл, размер которого кратен странице и немного превышает нужное значение:
sudo dd if=/dev/zero of=/swapfile bs=4096 count=4492196 status=progress
Такой файл будет иметь размер:
18400034816 bytes
Это на 4080 байт больше, чем 18400030736. Для своп-файла это нормально.
После создания файла в любом случае нужно будет выполнить:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
6. Права доступа, разметка и активация
После создания файла обязательно настройте права доступа. Своп-файл должен принадлежать пользователю root и иметь права 600.
sudo chown root:root /swapfile
sudo chmod 600 /swapfile
Если права будут слишком свободными, система может отказаться использовать такой файл из соображений безопасности.
Далее разметите файл как своп:
sudo mkswap /swapfile
Пример вывода:
Setting up swapspace version 1, size = 17.1 GiB
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Затем активируйте своп:
sudo swapon /swapfile
Проверьте, что своп появился:
swapon --show
Также можно посмотреть:
free -h
Если в выводе появилась строка со свопом, значит всё настроено правильно.
Типичные ошибки на этом этапе:
swapon failed: Invalid argument
или:
swapon: /swapfile: insecure permissions
Первая часто означает, что файл создан некорректно, является разрежённым или находится в неподдерживаемой файловой системе. Вторая — что права доступа недостаточно строгие.
В большинстве случаев помогает:
sudo chmod 600 /swapfile
sudo chown root:root /swapfile
Если ошибка остаётся, файл лучше пересоздать через dd.
7. Постоянное подключение своп-файла после перезагрузки
Если просто выполнить команду:
sudo swapon /swapfile
своп будет работать до перезагрузки. После перезагрузки система не подключит его автоматически. Чтобы своп-файл подключался при каждой загрузке, нужно добавить запись в файл /etc/fstab.
Сначала сделайте резервную копию:
sudo cp /etc/fstab /etc/fstab.bak
Затем добавьте строку:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Или отредактируйте файл вручную:
sudo nano /etc/fstab
Добавьте в конец файла строку:
/swapfile none swap sw 0 0
Если вы хотите задать приоритет своп-файла, можно использовать опцию pri.
Например:
/swapfile none swap sw,pri=100 0 0
После сохранения можно проверить применение без перезагрузки:
sudo swapoff -a
sudo swapon -a
Но будьте осторожны: команда swapoff -a отключает все своп-устройства и может вызвать высокую нагрузку, если в свопе уже есть активные данные, а оперативной памяти недостаточно. Безопаснее перезагружать систему в обычное время, когда нагрузка минимальна.
Проверка после перезагрузки:
swapon --show
free -h
8. Как изменить размер существующего своп-файла
В отличие от обычного файла данных, активный своп-файл нельзя просто увеличить или уменьшить. Чтобы изменить размер, нужно отключить своп, удалить старый файл и создать новый.
Шаг 1. Отключите своп
sudo swapoff /swapfile
Если файл используется активно, команда может занять время.
Шаг 2. Удалите старый файл
sudo rm /swapfile
Шаг 3. Создайте новый файл
Например, создадим новый файл размером около 17.14 GiB:
sudo dd if=/dev/zero of=/swapfile bs=1M count=17548 status=progress
Шаг 4. Настройте права
sudo chmod 600 /swapfile
Шаг 5. Разметите и включите своп
sudo mkswap /swapfile
sudo swapon /swapfile
Если запись в /etc/fstab уже есть, повторно добавлять её не нужно.
Проверка:
swapon --show
free -h
Если вы хотите увеличить своп, но не хотите трогать текущий файл, можно создать второй своп-файл. Это будет рассмотрено в следующем разделе.
9. Добавление второго своп-файла
Иногда удобнее не изменять существующий своп-файл, а добавить ещё один.
Например, создадим дополнительный файл /swapfile2 размером 8 GiB:
sudo dd if=/dev/zero of=/swapfile2 bs=1M count=8192 status=progress
Установим права:
sudo chmod 600 /swapfile2
Разметим его как своп:
sudo mkswap /swapfile2
Включим:
sudo swapon /swapfile2
Проверка:
swapon --show
Пример вывода:
NAME TYPE SIZE USED PRIO
/swapfile file 17.1G 0B -2
/swapfile2 file 8G 0B -3
Чтобы второй своп-файл подключался после перезагрузки, добавьте его в /etc/fstab:
echo '/swapfile2 none swap sw 0 0' | sudo tee -a /etc/fstab
Если нужно задать приоритет:
/swapfile2 none swap sw,pri=50 0 0
Чем выше значение приоритета, тем раньше система будет использовать этот своп по сравнению с другими.
10. Какой размер своп-файла выбрать
Размер своп-файла зависит от объёма оперативной памяти, задач системы и необходимости использовать гибернацию.
Если гибернация не нужна
Ориентировочные рекомендации:
| RAM | Рекомендуемый размер своп-файла |
|---|---|
| до 2 GiB | примерно 2× объёма RAM или больше |
| 2–8 GiB | примерно равный объёму RAM |
| 8–16 GiB | 4–8 GiB |
| 16–64 GiB | 4–16 GiB, в зависимости от нагрузки |
| больше 64 GiB | обычно небольшой своп или без него, если нет специальных требований |
Например, для сервера с большим количеством RAM своп может быть небольшим. Для рабочего ноутбука с 16 GiB RAM лучше выделить больше своп-пространства.
Если нужна гибернация
Для гибернации своп должен быть достаточно большим, чтобы сохранить содержимое оперативной памяти на диск. Обычно рекомендуется делать своп не меньше объёма RAM, а лучше с небольшим запасом.
| RAM | Примерный размер своп-файла для гибернации |
|---|---|
| 8 GiB | 8–10 GiB |
| 16 GiB | 16–18 GiB |
| 32 GiB | 32–36 GiB |
Ваш размер:
18400030736 bytes ≈ 17.14 GiB
хорошо подходит для системы с примерно 16 GiB оперативной памяти, если планируется гибернация. Если же гибернация не используется, такой объём может быть избыточным, особенно если на диске мало свободного места.
На этом первая часть завершается. В ней рассмотрены базовые вопросы: что означает объём 18400030736, как подготовить систему, как создать своп-файл через fallocate и dd, как настроить права, как включить своп, как сделать его постоянным и как выбрать подходящий размер.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.