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 / server / Perguntas / 796758
Accepted
Vikelidis Kostas
Vikelidis Kostas
Asked: 2016-08-15 09:31:09 +0800 CST2016-08-15 09:31:09 +0800 CST 2016-08-15 09:31:09 +0800 CST

Reduza a partição para caber exatamente no tamanho do sistema de arquivos subjacente

  • 772

Recentemente reduzi o tamanho do sistema de arquivos ext4 para 500 GB

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       493G   64G  404G  14% /

agora eu quero reduzir o tamanho da partição para caber exatamente no tamanho do sistema de arquivos.

Tentei usar parted e o comando resizepart. O problema é quando parted pede o novo tamanho. Se eu escolher 500 GB, a partição resultante será menor que 500 GB e, como resultado, o sistema de arquivos subjacente não caberá nessa partição. Alguma dica sobre como fazer os cálculos de tamanho corretos?

partition parted
  • 2 2 respostas
  • 11442 Views

2 respostas

  • Voted
  1. Best Answer
    David
    2016-08-15T10:36:32+08:002016-08-15T10:36:32+08:00

    Os tamanhos relatados por dfserão incorretos, pois representam apenas blocos de dados e blocos perdidos usados ​​internamente pelo sistema de arquivos, bem como os blocos reservados.

    A maneira mais fácil é reduzir seu sistema de arquivos para ser menor do que você deseja em pelo menos 10%. Redimensione a partição para o tamanho desejado e aumente o sistema de arquivos com resize2fs.

    Se você quiser calculá-lo manualmente, precisará saber o tamanho do sistema de arquivos internamente. Verifique isso tune2fs -l /dev/sda2e multiplique a contagem de blocos pelo tamanho do bloco. Ao redimensionar a partição em parted, alterne as unidades para setores com unit se printa tabela para obter o setor inicial e o tamanho do setor lógico. Divida o tamanho total em bytes acima pelo tamanho do setor. Arredonde para o múltiplo mais próximo de 2048 e redimensione para este número de setores (setor final = tamanho nos setores + setor inicial - 1).

    Equação (executável em python, basta preencher os 4 primeiros valores):

    block_count = N
    block_size = N
    sector_size = N
    start_sector = N
    fs_size = block_count * block_size
    fs_sectors = fs_size/sector_size
    part_sectors = ((fs_sectors-1)/2048+1)*2048
    end_sector = start_sector + part_sectors - 1
    print "Partition start: %d end: %d size: %d"%(start_sector,end_sector,part_sectors)
    print "Resize in parted with: \nresizepart <number> %ds"%(end_sector)
    
    • 11
  2. Martin Hansen
    2020-07-12T05:21:18+08:002020-07-12T05:21:18+08:00

    Aqui está um exemplo de todo o processo.

    Este é o nosso disco rígido:

    root@debian:~# fdisk /dev/loop0
    
    Command (m for help): p
    Disk /dev/loop0: 4,9 GiB, 5243928576 bytes, 10242048 sectors
    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: dos
    Disk identifier: 0xc5127fad
    
    Device       Boot Start     End Sectors  Size Id Type
    /dev/loop0p1       8192 9765625 9757434  4,7G 83 Linux
    

    ele contém uma única partição (/dev/loop0p1) com 4,7 GB de tamanho. Este é o sistema de arquivos na partição:

    root@debian:~# df -h
    /dev/loop0p1    4,7G    2,1G     0  45% /mnt
    

    Por padrão, tem o mesmo tamanho da partição (4,7 GB). Mas apenas 2,1 GB (45%) do sistema de arquivos é usado. Isso significa que poderíamos reduzir o sistema de arquivos e a partição para apenas 2,1 GB sem perder nenhum dado.

    A primeira etapa é usar resize2fs com a opção -M na partição. Semelhante a um desfragmentador de disco, este comando tentará mover todos os arquivos para o início do sistema de arquivos para formar um bloco contíguo. Isso permite reduzir o sistema de arquivos ao menor tamanho possível.

    root@debian:~# resize2fs -M /dev/loop0p1
    

    O sistema de arquivos agora se parece com isso:

    root@debian:~# df -h
    /dev/loop0p1    2,1G    2,1G     0  100% /mnt
    

    O disco rígido agora contém uma partição de 4,7 GB com um sistema de arquivos de 2,1 GB que é 100% usado. A próxima etapa é reduzir o tamanho da partição para caber no sistema de arquivos menor.

    Para isso, precisamos calcular o tamanho do sistema de arquivos. A ferramenta dumpe2fs é muito útil para isso, pois mostra informações detalhadas sobre um sistema de arquivos.

    root@debian:~# dumpe2fs -h /dev/loop0p1
    dumpe2fs 1.43.4 (31-Jan-2017)
    Filesystem volume name:   <none>
    Last mounted on:          /
    Filesystem UUID:          7d5ec9a4-cc65-4433-95e2-6536e4fd56d6
    Filesystem magic number:  0xEF53
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file dir_nlink extra_isize
    Filesystem flags:         signed_directory_hash 
    Default mount options:    journal_data_writeback user_xattr acl
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              139392
    Block count:              565950
    Reserved block count:     7825
    Free blocks:              8611
    Free inodes:              2296
    First block:              0
    Block size:               4096
    

    Isso nos diz que existem 565.950 blocos e o tamanho do bloco é de 4.096 bytes. Isso nos permite calcular o tamanho do sistema de arquivos:

    565950 blocos * 4096 bytes = 2318131200 bytes

    A partir disso, podemos calcular o tamanho do sistema de arquivos em setores. Da saída do fdisk acima, sabemos que o tamanho do setor do disco rígido é de 512 bytes:

    2318131200 bytes / 512 = 4527600 setores

    Como a partição não inicia no setor 0, precisamos adicionar o setor inicial da saída do fdisk:

    4527600 + 8192 (setor inicial) = 4535792

    Este é o novo setor final para nossa partição. Apenas para jogar pelo seguro, adicione 10 setores (cerca de 5 KB) a esse número: 4535802

    Agora podemos usar parted para encolher a partição para este novo setor final. O comando "unidade s" é usado para alternar as unidades para setores.

    root@debian:~# parted
    GNU Parted 3.2
    Using /dev/sda
    
    (parted) select /dev/loop0   
                                             
    Using /dev/loop0
    
    (parted) p
    
    Model: Loopback device (loopback)
    Disk /dev/loop0: 5244MB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start   End     Size    Type     File system  Flags
     1      4194kB  5000MB  4996MB  primary  ext4
    
    (parted) unit s                                                           
    (parted) p
    
    Model: Loopback device (loopback)
    Disk /dev/loop0: 10242048s
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start  End       Size      Type     File system  Flags
     1      8192s  9765625s  9757434s  primary  ext4
    
    (parted) resizepart 1 4535802  
                                           
    Warning: Shrinking a partition can cause data loss, are you sure you want to
    continue?
    Yes/No? yes      
                                                         
    (parted) p     
                                                           
    Model: Loopback device (loopback)
    Disk /dev/loop0: 10242048s
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start  End       Size      Type     File system  Flags
     1      8192s  4535802s  4527611s  primary  ext4
    

    Ele nos avisa sobre uma possível perda de dados, mas como movemos todos os dados para o início da partição antes, isso pode ser ignorado com segurança. Feito! Agora temos uma partição de 2,1 GB com um sistema de arquivos de 2,1 GB que está 100% ocupado.

    • 5

relate perguntas

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

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