btrfs Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
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.