Почему swapon занимает много времени, когда включает файл подкачки?

3431
Chaos_99

Я создал файл подкачки с

dd if=/dev/zero of=swap.img bs=1024k count=4k mkswap swap.img swapon swap.img 

Пока это работает, swaponкоманде требуется около 10 минут, чтобы закончить. Включение файла подкачки /etc/fstabозначает, что процесс загрузки будет остановлен на несколько минут.

Я заметил, что время выполнения команды dd уменьшится, если я увеличу размер блока (пробовал с 1024 и 1 раньше). Это также влияет на swapon?

Будет ли swaponобрабатывать разреженные файлы? Я пытался успешно раньше, но после перезагрузки получил «файл подкачки имеет дыры», поэтому я переключился на полный файл.

Еще немного информации:

  • Использование Linux Mint KDE 15 RC
  • Файл подкачки находится на смонтированном разделе NTFS

Выход ddбыл

4096+0 records in 4096+0 records out  4294967296 bytes (4,3 GB) copied, 73,9629 s, 58,1 MB/s  

Вывод mkswap был

Setting up swapspace version 1, size = 4194300 KiB no label, UUID=108b2e2d-e00a-40d0-8e28-c0b72003e63e 

swaponничего не выводил, но dmesgпотом показал:

Adding 4194272k swap on /host/personal/swap.img. Priority:-1 extents:9 across:4335880k 

Любая идея, как создать файл подкачки (лучше даже в два раза больше), который монтируется в разумные сроки?

3
Почему у вас своп на NTFS-разделе? Почему бы просто не использовать раздел подкачки? beatgammit 10 лет назад 0
Сложная настройка. Загрузчик Syslinux запускает ядро ​​с толстого usb-ключа, загружает корневую файловую систему с жесткого диска ntfs. Таким образом, нет устройства, на котором я мог бы создать разделы, следовательно, файл подкачки также из жесткого диска ntfs. Chaos_99 10 лет назад 0
Вы уверены в этой команде `dd`? Это файл огромного размера, а не 4 ГБ, которые вы ожидаете увидеть. terdon 10 лет назад 0
@terdon Извините, это была опечатка. Я исправил это сейчас. Как вы можете видеть по выводу dd в виде копии и вставки, он на самом деле был 4 ГБ. Chaos_99 10 лет назад 0

1 ответ на вопрос

2
terdon

Это не столько ответ, сколько серия подсказок. Прежде всего, на этой странице упоминается, что выполнение ddкоманды в разделе NTFS может повредить раздел. Не знаю почему и не знаю, правда ли это, но я подумал, что стоит упомянуть:

если / mnt / home - это диск NTFS, не используйте dd (запись на ваш диск NTFS может привести к повреждению файловой системы)

Каковы бы ни были подробности, создание файла подкачки в разделе NTFS действительно кажется проблематичным:

 $ dd if=/dev/zero of=swap.img bs=1024k count=4k 4096+0 records in  4096+0 records out 4294967296 bytes (4.3 GB) copied, 122.731 s, 35.0 MB/s $ mkswap swap.img  $ sudo swapon swap.img  swapon: /winblows/swap.img: skipping - it appears to have holes. 

Точно такой же процесс, запущенный на разделе ext4, не выдает ошибок и, по-видимому, работает отлично, что указывает на проблему с диском NTFS. Кроме того, перемещение файла, работавшего с раздела ext4, на раздел NTFS и запуск swaponна нем приводит к той же ошибке «файл имеет дыры». Так что это действительно не файл, а раздел.

Это может быть проблемой, вызванной фрагментацией моего диска, но пользователь на этом форуме объявил, что он получает ту же проблему на недавно отформатированном диске, который содержит только 2 файла, так что похоже, что фрагментация не является проблемой.

С одной стороны, ntfs-3G(то есть модуль, используемый ядром для монтирования и разделов NTFS доступа) Справка состояния:

Могу ли я безопасно использовать файл подкачки, без тупиков в NTFS?

Да, это возможно, если все правильно настроено. Ниже приведен пример безопасного создания, инициализации и включения файла подкачки объемом 2 ГБ без блокировки:

dd if=/dev/zero of=swapfile bs=1M count=2000  mkswap swapfile swapon swapfile 

Вы должны отключить файл подкачки с помощью команды «swapoff», прежде чем сможете размонтировать NTFS. Также обратите внимание, что другие решения, например, с использованием подкачки на устройстве с петлями, небезопасны и могут привести к тупику!

Таким образом, они, кажется, думают, что это должно работать. С другой стороны, когда я запускаю приведенные выше команды, я получаю ту же ошибку «файл имеет дыры».

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

Большое спасибо за исследования. Мой единственный вариант - использовать файл подкачки внутри образа ext4, который предоставляет корневую файловую систему, смонтированную из раздела NTFS. Но я нашел в Интернете и другие отчеты, которые также препятствуют использованию петлевых устройств для файлов подкачки. (Хотя, возможно, это просто означало монтирование петлевых устройств как swap PARTITIONS.) Chaos_99 10 лет назад 0
да еще такое же поведение :( Georgios Pligoropoulos 7 лет назад 0

Похожие вопросы