AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1266599
Accepted
alexanderadam
alexanderadam
Asked: 2020-08-13 06:38:30 +0800 CST2020-08-13 06:38:30 +0800 CST 2020-08-13 06:38:30 +0800 CST

Como aumentar a troca com o ZFS no Ubuntu 20.04 para habilitar a hibernação?

  • 772

Prefácio

Cometi um erro e instalei o Ubuntu 20.04 LTS com uma partição ZFS / OpenZFS criptografadaroot na minha área de trabalho produtiva em uma configuração de inicialização dupla (consulte a tabela de partições abaixo). Mas não prestei a devida atenção no tutorial que estava seguindo e agora parece que tenho uma partição Swap de 4G embora tenha 32G de RAM ( EDIT: descobri como consigo aumentar o Swap mas ainda não pode entrar em hibernação - veja abaixo ). Portanto, não posso colocar esta máquina em hibernação.

Qual é a melhor maneira de resolver esse problema, para que eu possa colocar essa máquina em hibernação?

Estado atual

$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 1.88 TiB, 2048408248320 bytes, 4000797360 sectors
Disk model: KXG60PNV2T04 NVMe KIOXIA 2048GB         
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1FCA11ED-9263-4C06-A8DF-594C0DE84AFA

Device             Start        End    Sectors   Size Type
/dev/nvme0n1p1      2048    1085439    1083392   529M Windows recovery environment
/dev/nvme0n1p2   1085440    1290239     204800   100M EFI System
/dev/nvme0n1p3   1290240    1323007      32768    16M Microsoft reserved
/dev/nvme0n1p4   1323008  409420488  408097481 194.6G Microsoft basic data
/dev/nvme0n1p5 409421824  410920959    1499136   732M Windows recovery environment
/dev/nvme0n1p6 410923008  415117311    4194304     2G Linux filesystem
/dev/nvme0n1p7 415117312 4000797326 3585680015   1.7T Linux filesystem

$ sudo swapon --show --output all
NAME     TYPE      SIZE USED PRIO UUID                                 LABEL
/dev/zd0 partition   4G   0B   -2 1e1fb013-69d9-4878-b358-6b8ee53d5b09

$ sudo zpool list -v
NAME          SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
Root         1.66T   535G  1.13T        -         -     2%    31%  1.00x    ONLINE  -
  nvme0n1p7  1.66T   535G  1.13T        -         -     2%  31.5%      -  ONLINE

$ sudo zpool status -v
  pool: Root
 state: ONLINE
  scan: none requested
config:

    NAME         STATE     READ WRITE CKSUM
    Root         ONLINE       0     0     0
      nvme0n1p7  ONLINE       0     0     0

errors: No known data errors

$ sudo zfs list
NAME                                                                              USED  AVAIL     REFER  MOUNTPOINT
Root                                                                              539G  1.08T      192K  none
Root/root                                                                         534G  1.08T      530G  /
Root/root/00a891589b00cebc55cb6767e266ca38ac201daf3a6048c1f33d7d55c0710533        544K  1.08T      143M  legacy
[…] # many other legacy mount points
Root/root/ffe52d35c873e6a417ee12c7025d848dac1f269b8078266f00a8d8088fd34384        396K  1.08T      607M  legacy
Root/swap                                                                        4.25G  1.08T      172M  -

$ sudo zfs get all Root/swap
NAME       PROPERTY              VALUE                 SOURCE
Root/swap  type                  volume                -
Root/swap  creation              So Aug  2 15:36 2020  -
Root/swap  used                  4.25G                 -
Root/swap  available             1.08T                 -
Root/swap  referenced            172M                  -
Root/swap  compressratio         1.00x                 -
Root/swap  reservation           none                  default
Root/swap  volsize               4G                    local
Root/swap  volblocksize          4K                    -
Root/swap  checksum              on                    default
Root/swap  compression           off                   local
Root/swap  readonly              off                   default
Root/swap  createtxg             3746                  -
Root/swap  copies                1                     default
Root/swap  refreservation        4.25G                 local
Root/swap  guid                  12379969387189982956  -
Root/swap  primarycache          metadata              local
Root/swap  secondarycache        none                  local
Root/swap  usedbysnapshots       0B                    -
Root/swap  usedbydataset         172M                  -
Root/swap  usedbychildren        0B                    -
Root/swap  usedbyrefreservation  4.08G                 -
Root/swap  logbias               throughput            local
Root/swap  objsetid              278                   -
Root/swap  dedup                 off                   default
Root/swap  mlslabel              none                  default
Root/swap  sync                  always                local
Root/swap  refcompressratio      1.00x                 -
Root/swap  written               172M                  -
Root/swap  logicalused           169M                  -
Root/swap  logicalreferenced     169M                  -
Root/swap  volmode               default               default
Root/swap  snapshot_limit        none                  default
Root/swap  snapshot_count        none                  default
Root/swap  snapdev               hidden                default
Root/swap  context               none                  default
Root/swap  fscontext             none                  default
Root/swap  defcontext            none                  default
Root/swap  rootcontext           none                  default
Root/swap  redundant_metadata    all                   default
Root/swap  encryption            aes-256-gcm           -
Root/swap  keylocation           none                  default
Root/swap  keyformat             passphrase            -
Root/swap  pbkdf2iters           342K                  -
Root/swap  encryptionroot        Root                  -
Root/swap  keystatus             available             -

O que eu tentei

Criando um arquivo de troca

Eu pensei que um arquivo de troca poderia ser uma solução fácil, mas obviamente estava errado:

$ sudo dd if=/dev/zero of=/swapfile bs=1MiB count=$((32*1024))
32768+0 records in
32768+0 records out
34359738368 bytes (34 GB, 32 GiB) copied, 14.5783 s, 2.4 GB/s

$ sudo chmod 600 /swapfile

$ sudo swapon /swapfile
swapon: /swapfile: skipping - it appears to have holes.

Então eu acho que deveria aumentar a partição swap. Também não está claro para mim por swaponque as alegações de que a partição swap possui, 4Gembora zfs get all Root/swapdiga que 1.08Testão disponíveis.

Qualquer coisa com GParted

O GParted não reconhecerá muito. Isso pode estar relacionado ao bug em os-prober( GParted issue 14 , Debian bug 888114 , os-prober issue 1848496 , openzfs issues 9801 e 9069 )

insira a descrição da imagem aqui

Substituindo a pequena partição Swap (=aumentando a partição Swap no ZFS)

O comando de criação foi inspirado em um comentário no GitHub, mas lembre -se de não usar-o sync=always .

$ sudo zfs create -V 32G -b $(getconf PAGESIZE) -o logbias=throughput -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false -o compression=zle Root/swap_two
$ sudo zfs rename Root/swap Root/swap_bak
$ sudo zfs rename Root/swap_two Root/swap
$ sudo mkswap -f /dev/zvol/Root/swap
$ sudo swapon /dev/zvol/Root/swap

garantindo que esta entrada esteja em /etc/fstab:

/dev/zvol/Root/swap none swap discard 0 0

em seguida, reinicie e remova a pequena troca herdada:

$ sudo zfs destroy Root/swap_bak

Embora isso pareça ter funcionado, ainda não consigo hibernar:

$ sudo systemctl hibernate
Failed to hibernate system via logind: Sleep verb "hibernate" not supported

Portanto, ainda estou aberto a qualquer conselho. Talvez precise de um resumeparâmetro dedicado em GRUB_CMDLINE_LINUX_DEFAULT?

swap partitioning hibernate zfs 20.04
  • 2 2 respostas
  • 1724 Views

2 respostas

  • Voted
  1. Best Answer
    alexanderadam
    2021-05-25T04:34:24+08:002021-05-25T04:34:24+08:00

    No final, o motivo não estava relacionado ao ZFS. Mesmo depois de redimensionar a troca, ela não funcionou porque está simplesmente desabilitada nas versões mais recentes do Ubuntu ( será reconsiderada ).

    Para resolver isso, você deve ativar a hibernação.

    1. Abra com.ubuntu.desktop.pklaem um editor:
    $ sudo vim /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
    # or on some machines
    $ sudo vim /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
    

    Procure as entradas Disable hibernate by default in upowere Disable hibernate by default in logindaltere cada ResultActivevalor para yes.

    Reinicie e teste o resultado com

    $ sudo systemctl hibernate
    # or
    $ sudo pm-hibernate
    

    Se ainda não funcionar, talvez seja necessário desativar coisas como Fast boote Secure bootem seu BIOS ( ATENÇÃO: é muito provável que você precise fazer isso em máquinas mais recentes).

    Se o teste não resultar mais em erro, você também poderá atribuir Hibernações a determinadas ações nas configurações do Ubuntu. Por exemplo, ao pressionar o botão liga / desliga.

    Ligar — Suspender e Ligar — Botão Comportamento do botão Liga/Desliga — Hibernar

    • 1
  2. Avishek Acharya Av
    2020-08-13T06:55:39+08:002020-08-13T06:55:39+08:00

    processo para aumentar o tamanho da partição de troca e usá-la para hibernação

    1. Criando a partição swap

      Ativando a partição swap

      Fazendo a nova partição swap funcionar para hibernar (opcional)

      Criando a partição swap Inicialize no CD de instalação do Ubuntu e escolha a opção para executar o Ubuntu agora Vá para sistema -> GParted Partition Editor

    Exclua a partição swap e, se não houver mais nada nela, a partição estendida que a contém. (Se por algum milagre você for capaz de redimensionar sua partição swap a partir daqui, imagino que sua vida será muito mais fácil que a minha.) mine 2x RAM + 500MB apenas para ser seguro). A maneira mais fácil de fazer isso é preencher a quantidade de espaço que você deseja que o swap tenha no campo "espaço livre seguinte" No espaço livre que foi criado agora, escolha novo, digite linux-swap e você poderá nomear a partição "trocar" se você gosta Clique no botão Aplicarbotão (deve ser uma marca de seleção) para gravar as alterações no disco Quando terminar, reinicie novamente no Ubuntu Ativando a partição de troca (Se sua troca estiver em seu disco rígido principal, você não precisa fazer nada aqui.) Agora você precisa para descobrir em qual partição sua troca está e qual é seu UUID. UUI?! você diz? Bem, esse é o identificador exclusivo universal para a partição, para que você possa referenciá-lo mesmo que esteja em um ponto de montagem diferente do boot-to-boot devido à adição de discos, etc.

    Abra um terminal e execute gksu gparted & e digite sua senha de root. O & permite que esse processo seja executado enquanto ainda fornece acesso à linha de comando.

    Clique com o botão direito do mouse em sua partição de troca e escolha Informações . Você deve ver o caminho e o UUID listados lá. Mantenha isso aberto para referência futura. Execute gksu gedit /etc/fstab & e procure a linha que contém swap . Deve ser a terceira coluna, separada por espaços ou tabulações. Você pode usar o caminho ou o UUID para informar ao Linux onde encontrar sua partição de troca. Eu recomendo o UUID porque ele permanecerá constante mesmo se você mover a partição ou o disco de alguma forma se tornar sdb em vez de sda ​​ou algo assim. Faça as edições apropriadas e salve o arquivo. Sua linha deve se parecer com isso se você usou UUID (com seu UUID, é claro):

    UUID=41e86209-3802-424b-9a9d-d7683142dab7 nenhum troca sw 0 0

    ou isso se você usou o caminho: /dev/sda2 none swap sw 0 0

    Salve o arquivo. Habilite a nova partição de troca com este comando.

    sudo swapon --all
    

    OU

    $ sudo swapon --all --verbose
    
    swapon on /dev/sda2
    swapon: /dev/sda2: found swap signature: version 1, page-size 4, same byte order
    swapon: /dev/sda2: pagesize=4096, swapsize=2147483648, devsize=2147483648
    Confirm that the swap partition exists.
    
    $ cat /proc/swaps
    Filename                                Type            Size    Used    Priority
    /dev/sda2                               partition       2097148 0       -1
    

    Reinicialize para certificar-se de que a nova troca seja ativada corretamente na inicialização Fazendo a partição de troca funcionar para hibernar (opcional) 'INFO: Isso não funcionará para 12.04, retome a partir da hibernação de forma diferente em 12.04.'

    Abra um Terminal novamente e execute cat /proc/swaps e espero que você veja o caminho para sua partição swap listada lá. Se não, as chances são de que algo deu errado nas etapas acima. Aqui está minha saída:

    Nome do arquivo Tipo Tamanho Usado Prioridade partição /dev/sda2 2676732 73380 -1 gksu gedit /etc/default/grub & para puxar a configuração do carregador de inicialização

    Procure a linha GRUB_CMDLINE_LINUX="" e verifique se está assim (usando seu UUID é claro) GRUB_CMDLINE_LINUX="resume=UUID=41e86209-3802-424b-9a9d-d7683142dab7" e salve o arquivo

    sudo update-grube espere terminar

    gksu gedit /etc/initramfs-tools/conf.d/resume & e certifique-se de que seu conteúdo seja resume=UUID=41e86209-3802-424b-9a9d-d7683142dab7 (com seu UUID, é claro, no lugar do meu). Salve o arquivo!

    sudo update-initramfs -u
    

    Reinício! Agora você deve ser capaz de hibernar e retomar!

    • -2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve