LINUX.ORG.RU

swapon: invalid argument


1

0

Здравствуйте.

Возникла проблема. Однажды решил затестить, как мой линупс ложится спать. Усыпил его в своп, а разбудить забыл:). В результате видимо теперь в своп-разделе что-то есть и swapon /dev/sdb1 (именно на sdb1 я его и усыплял) твердит, что /dev/sdb1 - неверный аргумент, при этом другой своп-раздел подключается без проблем.

Собственно вопрос. Как очистить своп? Пересоздавать раздел не хочу.

★★★★★

И да, делать resume тоже очень не хочется, т.к. в файловой системе с тех пор уже много изменений, попртит вдруг еще чего.

staseg ★★★★★
() автор топика

> Собственно вопрос. Как очистить своп? Пересоздавать раздел не хочу.

% dd if=/dev/zero of=/dev/sdb1 bs=100M count=100 && swapon -a

iZEN ★★★★★
()
Ответ на: комментарий от Lumi

>Самое интересное, что man swapon тоже не читали.

Ман дочитал до swapon(2), решил, что писать свой swapon ни к чему и отправился сюда задавать вопрос. И гуголь не читал. Каюсь.

staseg ★★★★★
() автор топика
Ответ на: комментарий от iZEN

То есть на FreeBSD можно любой раздел убить, просто подсунув его swapon, без проверки сигнатур? Фтопку!

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

> То есть на FreeBSD можно любой раздел убить, просто подсунув его swapon, без проверки сигнатур? Фтопку!

swapon на FreeBSD берёт информацию о разделе подкачки из файла /etc/fstab.
Стандартными разделами для подкачки являются разделы:
/dev/{ad,da}?s?b (на слайсах MBR)
/dev/md? (в памяти)
/dev/{ad,da}?p? (на GPT с типом партиции "freebsd-swap")

Так что фтоппку Линакс, где для создания SWAP нужна ещё одна лишняя команда.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

То есть таки да, на FreeBSD можно любой раздел убить, просто подсунув его swapon, без проверки сигнатур?

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

Ну знаете, если у каждой нужной команды идти по ссылкам в see also, то ман очень долго можно читать... Да и сообщение об ошибке восхитительное: "спор калек".

И даже в гугле первые две ссылки не объясняют, что это всего-навсего mkswap.

В общем, соотношение "количество перерытой информации"/"сложность решения" в данном случае великовато.

lodin ★★★★
()
Ответ на: комментарий от Lumi

> То есть таки да, на FreeBSD можно любой раздел убить, просто подсунув его swapon, без проверки сигнатур?

Нельзя. Надо соблюсти два условия: раздел должен быть прописан в /etc/fstab для пространства SWAP и вручную (хотя бы раз) выполнить swapon -a от имени root'а, чтобы его "включить". Не каждый пьяный админ на такое способен.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

> Нельзя. Надо соблюсти два условия: раздел должен быть прописан в /etc/fstab для пространства SWAP и вручную (хотя бы раз) выполнить swapon -a от имени root'а, чтобы его "включить". Не каждый пьяный админ на такое способен.

А FreeBSD при запуске автоматически активирует раздел подкачки, прописанный в /etc/fstab? Лично мне видится такой совсем не фантастический сценарий: у меня на втором физическом диске был swap-раздел. Я его заменяю на другой, на котором есть тот же раздел, но не swap, а с какими-то данными. Если я забуду исправить /etc/fstab, то разделу с данными при загрузке придёт пушистый зверёк?

А ещё можно при установке системы не на чистый жёсткий диск в том же /etc/fstab напутать с названиями устройств.

ИМХО в любом случае, отсутствие подобной элементарной проверки - это ошибка.

Deleted
()
Ответ на: комментарий от Deleted

> А FreeBSD при запуске автоматически активирует раздел подкачки, прописанный в /etc/fstab?

Нет. Автоматическая активация будет тогда, когда SWAP-раздел активирован swapon.

> А ещё можно при установке системы не на чистый жёсткий диск в том же /etc/fstab напутать с названиями устройств.

А ещё можно ошибиться в команде rm...

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

> Нет. Автоматическая активация будет тогда, когда SWAP-раздел активирован swapon.

А как система узнает, что это не тот же раздел и что он не был активирован с помощью swapon?

Deleted
()
Ответ на: комментарий от Deleted

> А как система узнает, что это не тот же раздел и что он не был активирован с помощью swapon?

Х.з. Это МАГИЯ.
(Наверно, swapon, кроме подготовки системы к свопингу на физический носитель, производит пометку раздела, готового к свопингу.)

Читай сравнение с линаксом: http://citkit.ru/articles/162/

iZEN ★★★★★
()
Ответ на: комментарий от Deleted

>А как система узнает, что это не тот же раздел и что он не был активирован с помощью swapon?

Наверное uidы, генерируемые при создании ФС на разделе никто не отменял.

staseg ★★★★★
() автор топика
Ответ на: комментарий от staseg

> Наверное uidы, генерируемые при создании ФС на разделе никто не отменял.

Судя по всему, у FreeBSD swap нету никакого формата, а соответственно и UUID хранить негде. Просто берётся кусок диска и мапится на память.

Или я чего-то сильно не понимаю...

Deleted
()
Ответ на: комментарий от Deleted

>Судя по всему, у FreeBSD swap нету никакого формата

Хм, этого то я и не сообразил. Значит, как сказал товарищ выше, это МАГИЯ.

staseg ★★★★★
() автор топика
Ответ на: комментарий от Deleted

> Судя по всему, у FreeBSD swap нету никакого формата, а соответственно и UUID хранить негде.

Есть там всё.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

>Есть там всё.

В таком случае никакой магии, а конфиг, где прописаны ууиды, "пригодные" для свопинга.

staseg ★★★★★
() автор топика
Ответ на: комментарий от iZEN

> Нет. Автоматическая активация будет тогда, когда SWAP-раздел активирован swapon.

То есть таки и здесь лишняя команда. Молодец.

Lumi ★★★★★
()
Ответ на: комментарий от Deleted

> Тогда почему валидность формата не проверяется при монтировании?

Потому что он глупый надутый тролль. И в дженерал 99% его сообщений флуд и оффтоп.

Lumi ★★★★★
()
Ответ на: комментарий от nitz

>У меня свапа нет в фстабе.На фре я б остался без свапа?

100%

iZEN ★★★★★
()
Ответ на: комментарий от lodin

> Ну знаете, если у каждой нужной команды идти по ссылкам в see also, то ман очень долго можно читать...

Не надо ничего там глобального читать, нужно просто долистать до see also и даже по ссылкам ходить не придётся.

PS: обязательно найдётся какой-то недовольный.

Lumi ★★★★★
()
Ответ на: комментарий от iZEN

> Команда, а не программа. Чуешь в чём разница? ;)

И что? Разницы в принципе нет -- лишнее действие.

Lumi ★★★★★
()
Ответ на: комментарий от iZEN

> Кто сказал?

Ты. Вот представь: есть некий раздел, система никак не может знать - есть на нём какие-то данные или он чистый. Ты делаешь на него swapon и тут есть всего два варианта развития событий:

1) Фря проверяет ниличие сигнатур, доказывающих что на этом разделе именно swap. Если наличие свопа подтвердилось, то он подключается. Если нет - считается что раздел занят чем-то другим и выдаётся ошибка.
2) Фря не проверяет наличие сигнатур. Она по команде swapon пересоздаёт формат (суперблок, заголовки, структуры и что там вообще может быть), стирая старые данные, если они там были, и подключает свежесозданный свап-раздел.

Ты настаиваешь на втором варианте.

Deleted
()
Ответ на: комментарий от iZEN

> Команда, а не программа. Чуешь в чём разница? ;)

Да лишь бы не утилита или того хуже - приложение! =)

Deleted
()
Ответ на: комментарий от Deleted

> есть некий раздел, система никак не может знать - есть на нём какие-то данные или он чистый. Ты делаешь на него swapon и тут есть всего два варианта развития событий:

> 1) Фря проверяет ниличие сигнатур, доказывающих что на этом разделе именно swap. Если наличие свопа подтвердилось, то он подключается. Если нет - считается что раздел занят чем-то другим и выдаётся ошибка.
> 2) Фря не проверяет наличие сигнатур. Она по команде swapon пересоздаёт формат (суперблок, заголовки, структуры и что там вообще может быть), стирая старые данные, если они там были, и подключает свежесозданный свап-раздел.

> Ты настаиваешь на втором варианте.

Завтра могу что-либо сказать по этому поводу.

iZEN ★★★★★
()
Ответ на: комментарий от Lumi

Ладно, согласен, по виду команды mkswap нетрудно догадаться, что она делает.

>PS: обязательно найдётся какой-то недовольный.


К Вашим услугам! =)

lodin ★★★★
()
Ответ на: комментарий от Deleted

> 1) Фря проверяет ниличие сигнатур, доказывающих что на этом разделе именно swap. Если наличие свопа подтвердилось, то он подключается. Если нет - считается что раздел занят чем-то другим и выдаётся ошибка.

Нет.

> 2) Фря не проверяет наличие сигнатур. Она по команде swapon пересоздаёт формат (суперблок, заголовки, структуры и что там вообще может быть), стирая старые данные, если они там были, и подключает свежесозданный свап-раздел.

Тоже нет.

Проверил.

При отведении какого бы то ни было раздела под SWAP, неважно — есть на нём файловая система или нет, FreeBSD просто подключает его в пул SWAP'а и ничего с ним не делает, пока не понадобится. Если раздел так и не понадобился, до файловая система и данные на нём сохраняются, контрольные суммы файлов совпадают.

iZEN ★★★★★
()
Ответ на: комментарий от Lumi

Ты не понял.

Раздел с файловой системой на FreeBSD свапом убивается только при трёх условиях:
1) Раздел указан как SWAP в /etc/fstab;
2) Над разделом выполнена команда: swapon /dev/aBxYz;
3) Система начала свапиться на этот раздел из-за недостатка свободного места RAM.

Согласись, все три условия по-пьяни соблюсти нереально.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Ты сначала расскажи, как система узнает, что над разделом уже было когда-то сделано swapon, если содержимое раздела при этом не меняется? А то

> 1) Раздел указан как SWAP в /etc/fstab;

> 2) Над разделом выполнена команда: swapon /dev/aBxYz;


Инит-скрипт при загрузке читает содержимое /etc/fstab и как-то подключает свап-разделы, указанные в этом файле (а так же монтирует ФС с других разделов). А как он подключает свап? Ни командой ли swapon? Если да, то из твоих двух пунктов второй содержится в первом.

> 3) Система начала свапиться на этот раздел из-за недостатка свободного места RAM.


Уверен? А может она сразу туда что-то пишет, просто ты при тестировании не заметил поломки раздела, так как запись пришлась на свободное место например?

И ещё раз повторю: изменение потенциально "левых" файлов (разделов и чего бы то ни было другого) без проверки - это _ОШИБКА_. Представь, что ты случайно открыл картинку в своём любимом текстовом редакторе, а тот взял и превратил картинку в пустой текстовый файл, удалив старые данные. Кстати MS Office старых версий любил так делать =).

Deleted
()
Ответ на: комментарий от iZEN

> Ты не понял.
Дурачёк, мне не надо несколько раз повторять. Вполне реально выполнить первые два условия, ведь это же надо делать всегда для задействования раздела как свапа.
А вот ты так и не понял.

Lumi ★★★★★
()
Ответ на: комментарий от iZEN

3) Система начала свапиться на этот раздел из-за недостатка свободного места RAM.

Просто для общего развития - разве freebsd не сбрасывает в своп давно не использовавшиеся страницы, независимо от количества свободной памяти?

gotf
()
Ответ на: комментарий от Deleted

> Инит-скрипт при загрузке читает содержимое /etc/fstab и как-то подключает свап-разделы, указанные в этом файле (а так же монтирует ФС с других разделов).

Я говорил о том случае, когда машина не перезагружается ВООЩЕ.

> А как он подключает свап? Ни командой ли swapon? Если да, то из твоих двух пунктов второй содержится в первом.

Запись о разделе для подкачки должна быть в /etc/fstab обязательно. Без этого раздел, над которым была выполнена команда swapon до перезагрузки, на старте не подключится в пул SWAP. То есть команда swapon ничего не пишет в подключаемый в SWAP раздел.

> Уверен? А может она сразу туда что-то пишет, просто ты при тестировании не заметил поломки раздела, так как запись пришлась на свободное место например?

Уговорил. Сейчас проверю ещё раз: файловую систему, забитую до упора файлами, подставлю под SWAP (с перезагрузкой), а потом прогоню fsck и сравню контрольные суммы файлов.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

> Я говорил о том случае, когда машина не перезагружается ВООЩЕ.

Аыыыыыы...

> Запись о разделе для подкачки должна быть в /etc/fstab обязательно. Без этого раздел, над которым была выполнена команда swapon до перезагрузки, на старте не подключится в пул SWAP. То есть команда swapon ничего не пишет в подключаемый в SWAP раздел.


Ты уж сам то определись как фря работает со свапом. А то похоже там не знаешь...

> Уговорил. Сейчас проверю ещё раз: файловую систему, забитую до упора файлами, подставлю под SWAP (с перезагрузкой), а потом прогоню fsck и сравню контрольные суммы файлов.


Забей раздел псевдослучайнми числами, без всякой ФС, и проверяй контрольную сумму всего раздела. Так надёжнее.

Deleted
()
Ответ на: комментарий от Deleted

Итак, окончательное исследование подтвердило, что:
1) для включения раздела в SWAP при загрузке нужна соответствующая запись в /etc/fstab. Во время загрузки будет создан пул SWAP из перечисленных в том файле разделов;
2) во время работы машины можно командой "swapon /dev/aBcD" включить в пул SWAP раздел aBcD, даже если он не отмечен в /etc/fstab как SWAP;
3) во время работы машины можно командой "swapoff /dev/aBcD" исключить из пула SWAP раздел aBcD;
4) если на разделе, внесённом в SWAP командой swapon или при загрузке, до этого была файловая система, то она не уничтожается при условии, что операционная система не задействовала SWAP (проверено на 99,99% заполненном UFS-разделе).

iZEN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.