Файл подкачки на btrfs

Размещение файла подкачки на разделе btrfs.

Содержание

1 Общая информация

  • btrfs поддерживает файл подкачки (начиная с ядра версии 5.0).
  • Файл подкачки не может находиться на любом рейде btrfs.
  • btrfs не позволяет создавать снапшоты, если на подтоме есть рабочий файл подкачки.
  • Рекомендуется размещать файл подкачки на отдельном подтоме.
  • Файл подкачки должен иметь свойство NODATACOW.
  • Файл подкачки должен быть без сжатия.

2 Создание файла подкачки

  • Подмонтируем раздел с btrfs:
    mkdir /mnt/gentoo
    mount -tbtrfs -orelatime,space_cache,discard,autodefrag,compress=zstd:9 /dev/sda4 /mnt/gentoo/
    
  • Создадим подтом для файла подкачки на btrfs:
    cd /mnt/gentoo/
    btrfs subvol create @swap
    
  • Отмонтируем том btrfs:
    umount /mnt/gentoo
    
  • Создадим точку монтирования:
    mkdir /swap
    
  • Подмонтируем подтом @swap:
    mount -o subvol=@swap /dev/sda4 /swap
    
  • Отключим для этого подтома CoW:
    chattr +C /swap
    
  • Создадим файл подкачки:
    truncate -s 0 /swap/swapfile
    
  • Отключим сжатие:
    btrfs property set /swap/swapfile compression ""
    
  • Установим права доступа 600 к файлу подкачки:
    chmod 600 /swap/swapfile
    
  • Установим размер файла подкачки.
    • Можно задать размер вручную (например, 4GiB):
      fallocate -l 4G /swap/swapfile
      
    • Можно установить размер файла подкачки исходя из размера оперативной памяти:
      fallocate -l $(free -h --si | awk 'NR == 2 {print $2}') /swap/swapfile
      
  • Отформатируем файл подкачки:
    mkswap /swap/swapfile
    
  • Активируем файл подкачки:
    swapon /swap/swapfile
    
  • Добавим запись в /etc/fstab, чтобы подключать файл подкачки при загрузке (для устройства с UUID="f8963df3-1320-4bc0-a125-62be185b029e"):
    UUID="f8963df3-1320-4bc0-a125-62be185b029e"	/swap               btrfs   relatime,discard,autodefrag,compress=zstd:9,subvol=@swap    0 0
    /swap/swapfile					none		    swap    sw								0 0
    
  • Проверьте, что файл /etc/fstab не содержит ошибок:
    findmnt --verify --verbose
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры прикладной информатики и теории вероятностей

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие