Мы заврались: думаем одно, говорим другое, пишем вообще непонятно что...
Григорий Горин

Меню навигации для мобильных

Помогите пожалуйста со скриптом zsys-setup в Ubuntu 20.04 (убрать раздел swap)

Автор Shaman, 08 Март, 2021, 02:09

« предыдущая - следующая »

Shaman

Уважаемые гуру, помогите, пожалуйста понять где в этом скрипте задаётся размер раздела подкачки и как его уменьшить до минимума.
Полностью убрать вроде не получиться сами разработчики пишут, что это ломает скрипт. Но уменьшить и отключить вроде можно.
https://gist.github.com/andaag/1379d6c2adcf4a84c91957a46bee3418
Просто на 32 гигах оперативки  толку от него чуть, а терять 2 гигабайта диска не хочется.  :)

zenon

Что-то не понял, на этапе разметки же сам создаёшь размер который нужен, ну и монтировать его или нет это уже в fstab.
Вообще отказываться от свопа не надо, только swappiness поправить...
Хотя ... не разобрался что такое zsys-setup.
Для системного раздела использую только ext4, раньше часто ставил на 3-й рейзер, он хорош в работе с большим кол-вом мелких файлов до сих пор.
Со всякими zfs, btrfs прекратил эксперименты, если что-то случается нужны какие-то не стандартные решения.
https://github.com/minamonra/

Shaman

А мне нравиться, тем более, что ZFS зрелая система и коммерчески используется на серверах. Я её хочу из-за возможности организовать программный рейд RAIDZ-1 похожий (но ка говорят разработчики избавленный от недостатков) на RAID-5.0 RAIDZ-3, а тем более 3 не потяну, там уж какое-то неимоверное для домашних условий кол-во дисков надо.  :)

Я долго ставил эксперименты на виртуалке и понял, что меня это вполне устроит. Пул спокойно переноситься из системы в систему одной командой (хоть совместное использование не одновременно конечно). Там вообще можно целые файловые системы по сети передавать нк дома это не нужно, но функционал конечно поражает).

Возвращаясь к вопросу.
Цитата: zenon от 08 Март, 2021, 11:13монтировать его или нет это уже в fstab.
Что это так я знаю, благодарю. Просто не хочу, чтобы пространство пропадало. Свап лучше вынести на 3.0 флешку и пусть он с ней гибнет если что, хранить его на системном SSD не хочу. В моём сетапе это M2 диск и использовать его под что-то иное слишком дорого. А остальные SATA не мамке лучше использовать под пул.

Сами разработчики говорят (https://didrocks.fr/2020/06/11/zfs-focus-on-ubuntu-20.04-lts-zsys-partition-layout/) что это возможно:
↓ спойлер ↓
Tweaking partition layout
As told in the introduction, nothing is hardcoded in term of ZSys support for your partition layout (as long as you don't have multiple pools with the same name, of course).

If you want to tweak the partition layout to your wish. For instance, to use multiple pools in mirrors, or using RAID-Z, you can for now (until we support manual partition layout in the installer) edit manually the zsys-setup script on the live ubuntu 20.04 LTS desktop image before reaching the partitioning page. This one is located at /usr/share/ubiquity/zsys-setup.

I think you saw that there has been a lot of thoughts and care in our default partition layout, so edit with care. :)
[свернуть]

И судя по коду это делается где-то в этих местах, но дальше я понять не могу.

Здесь ...
get_layout() {
	# Returns disk, base name of the partition and partition numbers to create
	target="$1"
	disk="$2"

	if [ -z "${disk}" ]; then
		# The entire disk has been formatted with use_device
		# There is either one ext4 partition or one ext4 and one ESP
		part="$(grep -E "\s${target}\s" /proc/mounts | awk '{print $1}')"
		partbase=""

		if [ -n "${part}" ]; then
			disk="$(lsblk -lns -o TYPE,PATH ${part}| grep disk| awk '{print $2}')"
			if [ -z "${disk}" ]; then
				echo "E: Couldn't identify disk for partition ${part}. Exiting!"
				exit 1
			fi
			# Some disks have letters in the partition number like /dev/nvme0n1p1
			# In this case we want to retrieve 'p' so we deal only with partition number
			# in the rest of the script and prepend the base.
			partbase="$(echo ${part} | sed -e 's/[0-9]*$//' | sed -e "s#${disk}##")"
		fi
	else
		# The only purpose of this code is to display a friendly message in ubiquity to show the user
		# what partitioning will be performed. However, on first call, the disk is not yet partitioned
		# and collecting the information about disk partitioning would require to query partman. But we
		# don't want to add this extra complexity just to display a message. Instead we hardcode the
		# extension of the partition name depending on the type of disk, basically it's 'p' for anything
		# else than standard drives (eg nvme01pX)
		case "${disk}" in
			/dev/sd*|/dev/hd*|/dev/vd*)
				partbase=""
				;;
			*)
				partbase="p"
		esac
	fi

	partesp=1
	if is_gpt "${disk}"; then
		# No extended partition on EFI + GPT
		# The layout is
		# 1: ESP
		# 2: swap
		# 3: bpool
		# 4: rpool
		partswap=2
		partbpool=3
		partrpool=4
	else
		# MBR pools are on extended partition
		# The layout is:
		# 1: ESP
		# 2: Extended
		# 5: swap
		# 6: bpool
		# 7: rpool
		partswap=5
		partbpool=6
		partrpool=7
	fi

	echo "OK|${disk}|${partbase}|${partesp}|${partswap}|${partbpool}|${partrpool}"
}

format_disk() {
	disk="$1"
	partbase="$2"
	partesp="$3"
	partbpool="$4"
	partrpool="$5"
	ss="$6"
	partswap=$(( partbpool - 1 ))
	partext=$(( partesp + 1 ))
	partprefix="${disk}${partbase}"

	sfdisktmp="${ZSYSTMP}/sfdisk.cfg"
	rm -f "${sfdisktmp}"

	echo "I: Formatting disk $disk with partitions ESP:${partesp} ext:${partext} swap:${partswap} bpool:${partbpool} rpool:${partrpool}"

	# bpool size: 500M < 5% of ZFS allocated space < 2G
	# partswap is partition 2 on GPT systems and first extended partition on MBR.
	size_percent=$(expr \( $(blockdev --getsize64 ${partprefix}${partswap}) / 1024 / 1024 \) \* 5 / 100)
	bpool_size=500
	[ ${size_percent} -gt ${bpool_size} ] && bpool_size=${size_percent}
	[ ${bpool_size} -gt 2048 ] && bpool_size=2048

	if is_gpt "${disk}"; then
		# Improvement: Delete all the partitions but the ESP
		# There should be only 1 or 2 partitions but it can be made generic
		if ! esp_exists "${disk}"; then
			start=$(sfdisk -l "${disk}"|grep "^${partprefix}${partesp}"|awk '{print $2}')
			cat > "${sfdisktmp}" <<EOF
${partprefix}${partesp}   : start= ${start}, size=    512M,        type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, bootable
EOF
		else
			sfdisk --delete "${disk}" ${partswap}
		fi

		cat >> "${sfdisktmp}" <<EOF
${partprefix}${partswap}  :   size= ${ss}M,         type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
${partprefix}${partbpool} :   size= ${bpool_size}M, type=6A82CB45-1DD2-11B2-99A6-080020736631
${partprefix}${partrpool} :                         type=6A85CF4D-1DD2-11B2-99A6-080020736631
EOF
	else
		if ! esp_exists "${disk}"; then
			start=$(sfdisk -l "${disk}"|grep "^${partprefix}${partesp}"|awk '{print $2}')
			cat > "${sfdisktmp}" <<EOF
${partprefix}${partesp}   : start= ${start}, size=    512M,        type=ef, bootable
EOF
		else
			sfdisk --delete "${disk}" ${partswap}
		fi

		cat >> "${sfdisktmp}" <<EOF
${partprefix}${partswap}  :                size= ${ss}M,         type=82
${partprefix}${partbpool} :                size= ${bpool_size}M, type=a5
${partprefix}${partrpool} :                                      type=a5
EOF

	fi
	cat "${sfdisktmp}" | sfdisk --append "${disk}"

	# Force a re-read of the partition table
	echo "I: Re-reading partition table"
	partx --add "${disk}" 2>/dev/null || true
	partx --show "${disk}"
}  
[свернуть]

... и здесь
	# Swap files are not supported on ZFS, we use a swap partition instead:
	SWAPFILE="$(grep "^${TARGET}" /proc/swaps |awk '{print $1}')"
	# Give us a minimum swap partition size of 4MB in case we decide on
	# no swap, just to keep the partition layout stable:
	SWAPSIZE=4194304

	# Disable swap and get the swap volume size:
	if [ -n "${SWAPFILE}" ]; then
		SWAPSIZE=$(stat -c%s "${SWAPFILE}")
		echo "I: Found swapfile with size ${SWAPSIZE}. Disabling"
		swapoff "${SWAPFILE}"
	fi
	# Convert to MiB to align the size on the size of a block
	SWAPVOLSIZE=$(( SWAPSIZE / 1024 / 1024 ))              
[свернуть]

Но дальше я пока не понял. Мои эксперименты пока приводят к падению скрипта с ошибкой.   :) :'(

Кроме того я не хочу бездумно ставить и надеяться, что всё заработает, а понимать как это работает, чтобы можно было в случае чего починить. Ну и просто интересно.
Очень много иифы почерпнул отсюда (https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html#ubuntu-installer). Но к сожалению аглицкий  я могу читать только с гугл переводчиком.

zenon

Не, с этим скриптом к сожалению не помогу из-за того, что проверить точно не смогу.
Только своё мнение скажу, можно?
Забыть про убунту.
Дома рейд не нужен.
Если система ставится всерьёз и надолго - системный раздел только на нативных фс.
Хочется zfs - ставим фри.
Ещё раз забыть про убунту как страшный сон.
На M2 диски ext4 великолепно. ;_) плюс /tmp в tmpfs, ну и системные кэши побольше.
ы. Своп на флешке? Не ну серьёзно?
Минимальный размер swap раздела рекомендуется 20% от ram.
Если мне не изменяет память в RAIDZ-1 скорость по самому медленному диску в пуле будет.

https://github.com/minamonra/

Shaman

Понял благодарю, буду сам разбираться.
Мнение конечно можно, я его пока переварю, а я в ответ выскажу свое. :)
Цитата: zenon от 08 Март, 2021, 18:55Забыть про убунту.

Еще ни один человек не смог мне аргументированно объяснить почему нельзя использовать Ubuntu.  :)
Вот мои аргументы в сторону её использования:
  • Я сижу на ней с 9 версии и ни разу не было проблем, на своём сервере/домашнем ПК я её даже не переустанавливал не разу только обновлял версии. Глюк был только один раз, в обновлении вышел битый пакет и сеть упала, через сутки поправили.
  • Под неё стабильно выходят обновлённые версии софта.
  • На ней из коробки заводится моя звуковая карта (https://behringer-russia.ru/product/behringer-firepower-fca610/)
  • Я спокойно могу на ней играть, сборки с GOG ставятся нативно.
  • На этом же ПК без проблем поднялся и работает Owncloud и postfix
  • Есть софт для программирования
  • Софт для редактирования музыки
  • Редакторы видео
  • И много чего ещё
И да от того, что я использую ПК как облако, почтовый сервер и  в тоже время ка рабочую станцию у любого нормального админа волосы бы встали дыбом, но в условиях квартиры я не могу себе позволить отдельный сервер, по многим параметрам. А этот вот в таком корпусе (https://www.ixbt.com/news/hard/index.shtml?05/09/29) чувствует себя прекрасно и почти не выключается лет 7 точно.

Цитата: zenon от 08 Март, 2021, 18:55Дома рейд не нужен.
Спорно, очень много аргументов как за так и против и каждый выбирает для себя
Мне он нужен для файлопомойки и облака, в поездках по стране очень выручает.
И вот например у Дмитрия Бачило дома вообще серверная стойка стоит, куда протянута оптика от провайдера.  :)  У него там и облако и хостинг его сайтов и репозитории его сборок.
 
Цитата: zenon от 08 Март, 2021, 18:55Если система ставится всерьёз и надолго - системный раздел только на нативных фс.
Хочется zfs - ставим фри.
Сейчас ZFS практически стала нативной системой для Linux.
ЦитатаВ 2016 году был преодолён последний рубеж, сдерживавший ZFS на Linux — многие дистрибутивы включили его в штатные репозитории, а проект Proxmox уже включает его в базовую поставку.
Вот сам пост (https://habr.com/ru/post/314506/), он от разработчика и это было 5 лет назад.

Собственно сейчас фри перешла не реализацию ZFS on Linux (https://forums.freebsd.org/threads/freebsd-moving-to-zfs-on-linux.68803/)
Поэтому Фри использовать или другую систему без разницы. От фри меня ограждает отсутствие поддержки по софту. Там много специфичного софта используемого на серверах, но софт для юзеров зачастую придётся собирать из исходников, а с этим у меня жестокая проблема. К примеру я до сих по не могу понять как собрать K3b из исходников, а это пока единственный софт который нормально может писать Blu-ray (не скидывая скорость на 1 и не портя двух и 3-х слойные диски). Поэтому я останусь на Ubuntu.


Цитата: zenon от 08 Март, 2021, 18:55Своп на флешке? Не ну серьёзно?
Минимальный размер swap раздела рекомендуется 20% от ram.

Собственно а почему бы и нет она быстрая дешевая, ограничивает только надёжность но с своп ничего особо важного и не пишется да использование его при таком кол-ве оперативки буде минимально. Сдохнет поменяю.  :)

И минимальный размер свопа уже давно не считается от количества оперативки даже в винде. Вот выдержка и убунту вики:
ЦитатаНачиная с версии 17.04, Ubuntu предлагает по умолчанию создавать SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб)



Цитата: zenon от 08 Март, 2021, 18:55Если мне не изменяет память в RAIDZ-1 скорость по самому медленному диску в пуле будет.

Да это так но в моём случае все 4 диска одинаковые (https://market.yandex.ru/product--zhestkii-disk-western-digital-wd40purz/1729220435?cpa=0).  :)




Shaman

Вобщем поначитался по свопам немного и вывихнул мозг  ;D
И пока всё что вывел для себя это:
  • своп используется только при нехватке памяти
  • система старается минимизировать запись в своп, чтение не ограничено.
  • Размер свопа это не минимум 20% процентов от оперативки. Его размер вычисляется от размера данных которые грузятся в память. т.е. если вы используете программы которые сами по себе оперируют малыми объёмами памяти, но их много вам может хватить маленького свопа. А если программы занимают большой объём данных то, во избежании трэшинга, свап нужно делать больше.

Пока в голове вывод: при большом количестве оперативки свап может вообще не использоваться, но лучше чтобы он был, но не всегда. Его размер, а также необходимость его присутствия для нестандартных задач нужно вычислять исходя из ситуации.
По этому сейчас на работе поставил свап на быструю флешку с индикатором и физически смотрю как часто к ней будет обращение. потом тот же финт проверну на виртуалке с ZFS. И по результатам сделаю выводы.

zenon

Уже не так активен с экспериментами...
Бывает не обновляю компы по году, для Gentoo это бывает проблемой, а медиацентр живёт на Manjaro и переживает это хорошо.
Кто такой Бачило понятия не имею. :_)
Стойку отвёз в гараж, остался один стоечный сервер, вот думаю как его запихнуть в обычный корпус, использовать его дома как есть не возможно, он как ракета...
Претензии к Ubuntu - основная даже не к ней, а ко всем deb - apt.
О, как по началу он мне казался верхом совершенства...
Конкретно ubuntu - такие темы/цвета оформления ничего кроме изжоги не вызывают, ну тут конечно и поменять можно, и на вкус и цвет, но осадочек.
Всякие модные домашние облака до меня так и не дошли, ftp, ssh - больше не надо.
На линуксфорум (https://linuxforum.ru/) сходи помучай народ, админил там немного, хотя не очень много народу осталось.
....
Начинал с Mandrake.
На вскидку так:
https://github.com/minamonra/

Shaman

На форум чуть раньше написал Благодарю.
Бачило это системный администратор промышляющий видеоблогингом. Сын писателя Александра Бачило. Создатель шоу про старые железки "16-бит тому назад" (с одноименным сайтом) и "Кремниевые титаны" про технологии людей и фирмы которые их создают.
Если интересно вот канал (https://www.youtube.com/channel/UC5dgoavpIertLkNDDITDoBQ).

Цитата: zenon от 10 Март, 2021, 12:39Претензии к Ubuntu - основная даже не к ней, а ко всем deb - apt.

А что с ними не так? Я глубоко не лазил, работают и ладно.
Мне вот снап не очень нравится с одной стороны это удобно и легко переносимо, а с другой когда их много оперативка забивается копиями одинаковых библиотек из разных снапов.

Цитата: zenon от 10 Март, 2021, 12:39Конкретно ubuntu - такие темы/цвета оформления ничего кроме изжоги не вызывают, ну тут конечно и поменять можно, и на вкус и цвет, но осадочек.

Про вкус и цвет согласен мне как-раз нравятся   :))


А облако я поставил только из за того, что возникла необходимость передать в Казахстан образ диска на 80 Гб и не парить человека, что такое ftp, ssh ключевой файл и куда всё это надо засунуть, чтобы заработало. Ну и втянулся это удобно.  :)  Если только для себя и  есть куда воткнуть флешку с ключами, то по-прежнему ftp и ssh, а если нет или нужно кому-то просто отдать файл отправив ссылку, то вещь не заменимая.

Цитата: zenon от 10 Март, 2021, 12:39Бывает не обновляю компы по году, для Gentoo это бывает проблемой, а медиацентр живёт на Manjaro и переживает это хорошо.
А я как то начал с Ubuntu и на ней остался просто не было надобности куда-то слазить. Пробовал Альт, не зашел. В качестве медиацентра использую 2 и 3 малинку. Для этих целей очень производительная железка даже 3D тянет и + поддерживает филипсовкий CEC, управлять пультом от телевизора очень удобно.

zenon

Цитата: Shaman от 10 Март, 2021, 14:46А что с ними не так?
Для этого надо сравнить его хотя бы с pacman.
Сборка из исходников в deb дистрибутивах это жесть.
Невозможность выпилить 70% системы... Зависимости достают. Сторонние репозитории отдельная тема, йогурт в арче намного гибче.
ы. На Gentoo до сих пор можно на ините сидеть, а в Funtoo инит по умолчанию...
https://github.com/minamonra/

zenon

https://github.com/minamonra/

Shaman

Цитата: zenon от 10 Март, 2021, 15:52Сборка из исходников в deb дистрибутивах это жесть.

Соглашусь. Каюсь, думал так везде.  :) Но всё равно подкупает, что на какой крупный кроссплатформенный проект не зайди, deb будет 90% а вот остальные системы далеко не всегда.

Цитата: zenon от 10 Март, 2021, 15:57Торрентом же.
В том конкретном регионе с торентом сложности. Караганда и мобильный оператор Altel. Единственный кто раздаёт безлимитный интернет, но торренты режет жестко. Способы обхода есть, но человек не подкован. Да и мне опыт в поднятии облака.  :D

К модератору:
Прошу прощения за оффтоп, и тему кажется нужно переносить во флуд, т.к. по шапке пока развития не предвидится.  ;D



Shaman

Вообчем сточив лопату  нашел таки место где руками можно задать размер файла подкачки.
Вот эти 2 строчки:

${partprefix}${partswap}  :   size= ${ss}M,         type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F

${partprefix}${partswap}  :                size= ${ss}M,         type=82

Если вместо  ${ss} прописать размер в мебибайтах, то получим нужный размер раздела. Естественно если указать другой модификатор вместо "М" по и размер будет считаться уже согласно него. Минимальный возможный размер 4MiB. Если делать меньше скрипт отрабатывает, но установка падает.
Поиском по тексту нашел, что ss="$6" т.е. это параметр командной строки и получается, что размер раздела задаётся при вызове скрипта и надо копать программу которая его вызывает или этот параметр так же может быть прописан в теле скрипта?

Само по себе меня это решение устраивает, хотелось бы только разобраться что всё-таки задаёт размер раздела?

По поводу подкачки поигравшись с программкой из статьи (https://habr.com/ru/post/541214/), пришел к выводу, что лучше пусть будет.  ;D

В установке свапа на флешку не нахожу ничего предосудительного поскольку скорости передачи данных современных USB интерфейсов давно сравнимы со скоростями SATA. По край ней мере вот такой диск WDS240G20A даёт  одну и туже скорость чтения и записи, будь он подключен напрямую или через SATA to USB 3.0 конвертер. Здесь остаётся вопрос только в надёжности самих флешек и в их скорости. Скоростные флешки существуют, но стоимость их сравнима со стоимостью бытовых SSD на тот же объём. И поэтому я выбрал SSD. Как подключать решу по месту. Главное чтобы конвертер был надёжный.
И ИМХО ставить SWAP на системный диск это моветон.  :)