Почему swapon занимает много времени при включении файла подкачки?
Я создал файл подкачки с
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
Любая идея, как создать файл подкачки (лучше даже в два раза больше), который монтируется в разумные сроки?
1 ответ
Это не столько ответ, сколько серия подсказок. Прежде всего, на этой странице упоминается, что 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, это, вероятно, хорошая идея.