Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:btrfs [2019/10/22 15:52] [swap файл на btrfs] |
wiki:btrfs [2019/10/23 11:05] [swap файл на btrfs] |
||
---|---|---|---|
Строка 841: | Строка 841: | ||
| | ||
=====swap файл на btrfs===== | =====swap файл на btrfs===== | ||
- | Начиная с версии 5.0+ на btrfs можно создать swap-файл, но с некоторыми ограничениями: swap-файл должен располагаться целиком на одном устройстве, создаваться обязательно с отключенным COW и сжатием((На самом деле, если вчитаться в детали на btfs-wiki, то отключение COW блокирует возможность архивирования)). Кроме того swap-файл не может попасть в снимок. В перспективе предполагается снять часть ограничений.\\ | + | Начиная с версии ядра 5.0+ на btrfs можно создать swap-файл, но с некоторыми ограничениями: swap-файл должен располагаться целиком на одном устройстве, создаваться обязательно с отключенным COW и сжатием((На самом деле, если вчитаться в детали на btfs-wiki, то отключение COW блокирует возможность архивирования)). Кроме того swap-файл не может попасть в снимок. В перспективе предполагается снять часть ограничений.\\ |
- | Предположим что btrfs у нас на одном устройстве и у нас подходящая версия ядра 5.0+, дальше все довольно просто: | + | Предположим что у нас btrfs на одном устройстве и у нас подходящая версия ядра 5.0+, дальше все довольно просто: |
- | touch /swap # создаем пустой файл /swap - COW можно отключить только на пустом файле | + | touch /swap # создаем пустой файл /swap - COW можно отключить только на пустом файле |
- | chmod go-r /swap # swap должен иметь права 600, а touch проставляет права 644 | + | chmod go-r /swap # swap должен иметь права 600, а touch проставляет права 644 |
- | chattr +C /swap # отключаем COW | + | chattr +C /swap # отключаем COW |
- | chattr -c /swap # отключаем компрессию файла | + | chattr -c /swap # отключаем компрессию файла |
- | dd if=/dev/zero of=/swap bs=1024 count=4m # создаем пустой (заполненный нулями) файл размером 4Gib | + | fallocate swap -l4g # выделяем место под файл 4Gib |
- | mkswap /swap # создаем внутреннюю разметку в файле для swap-а | + | mkswap /swap # создаем внутреннюю разметку в файле для swap-а |
- | swapon /swap # подключаем swap | + | swapon /swap # подключаем swap |
- | <note important>Важно создавать файл именно заполняя его нулями (dd if=/dev/zero ...). Если создать пустой файл командой truncate, то он фактически останется пустым т.к. в btrfs используется механика [[https://ru.wikipedia.org/wiki/Разрежённый_файл|sparse files]] и mkswap отработает успешно, но swapon сообщит, что в файле есть "дырки", т.е. не размеченные на диск области файла.</note> | + | <note important>Важно выделять место под swap-файл именно командой fallocate. Если создать пустой файл командой truncate, то он фактически останется пустым т.к. в btrfs используется механика [[https://ru.wikipedia.org/wiki/Разрежённый_файл|sparse files]] и mkswap отработает успешно, но swapon сообщит, что в файле есть "дырки", т.е. не размеченные на диск области файла.</note> |
Для автоматического монтирования файла в последующем нужно в /etc/fstab добавить следующую строку: | Для автоматического монтирования файла в последующем нужно в /etc/fstab добавить следующую строку: | ||
Строка 863: | Строка 863: | ||
Несмотря на то, что отключение COW не помогает, но для избежания фрагментации swap-файла на HDD (на SSD это не так критично) стоит все-таки отключить COW. Компрессию тоже стоит отключить т.к. это еще сильнее затормозит и без того не быстрое решение. | Несмотря на то, что отключение COW не помогает, но для избежания фрагментации swap-файла на HDD (на SSD это не так критично) стоит все-таки отключить COW. Компрессию тоже стоит отключить т.к. это еще сильнее затормозит и без того не быстрое решение. | ||
- | touch /swap # создаем пустой файл /swap - COW можно отключить только на пустом файле | + | touch /swap # создаем пустой файл /swap - COW можно отключить только на пустом файле |
- | chmod go-r /swap # swap должен иметь права 600, а touch проставляет права 644 | + | chmod go-r /swap # swap должен иметь права 600, а touch проставляет права 644 |
- | chattr +C /swap # отключаем COW, а отключение COW блокирует и возможность компрессии файла | + | chattr +C /swap # отключаем COW |
- | truncate -s 4G /swap # создаем пустой файл размером 4Gib | + | chattr -c /swap # отключаем компрессию файла |
- | swapfile=$(losetup -f) # находим первое свободное loop-устройство | + | fallocate swap -l4g # выделяем место под файл размером 4Gib |
- | losetup $swapfile /swap # настраиваем доступ к файлу /swap через loop-устройство | + | swapfile=$(losetup -f) # находим первое свободное loop-устройство |
- | mkswap $swapfile # создаем внутреннюю разметку для swap-а на loop-устройстве | + | losetup $swapfile /swap # настраиваем доступ к файлу /swap через loop-устройство |
- | swapon $swapfile # подключаем swap | + | mkswap $swapfile # создаем внутреннюю разметку для swap-а на loop-устройстве |
+ | swapon $swapfile # подключаем swap | ||
Для подключения такого swap после перезагрузки добавьте код начиная с swapfile=$(losetup -f) в файл /etc/rc.local (до строки exit 0). | Для подключения такого swap после перезагрузки добавьте код начиная с swapfile=$(losetup -f) в файл /etc/rc.local (до строки exit 0). | ||
+ | |||
+ | <note important>И все же для ядер младше 5.0 предпочтительнее использовать swap на разделе диска.</note> | ||
======Обслуживание btrfs====== | ======Обслуживание btrfs====== | ||
Как и любая другая ФС, btrfs может работать много лет, не требуя какого-то особого обслуживания, однако мы озвучим те действия, которые полезно периодически проводить для поддержания "здоровья" btrfs. | Как и любая другая ФС, btrfs может работать много лет, не требуя какого-то особого обслуживания, однако мы озвучим те действия, которые полезно периодически проводить для поддержания "здоровья" btrfs. |