Como criar e ajustar uma partição ext4 na linha de comando?

41

Particionando (por exemplo fdisk)
Quais são alguns comandos úteis usados ​​para particionar um disco rígido adicional a partir da linha de comando? Como a maioria dos guias publicados direciona-se para o GParted e outros utilitários gráficos, um resumo de algumas seqüências de linha de comando seria útil.

TUNING - ESPAÇO RESERVADO, GRAVAÇÃO E TEMPO DE ACESSO
Como remover o espaço em disco reservado reservado (por padrão), caso a unidade fique 100% cheia. Como eu sou uma unidade secundária simplesmente para 'dados', a remoção da área reservada garante que toda a unidade esteja disponível para uso.

Também estou curioso sobre write-through vs. write-back e pule a atualização dos tempos de acesso (em arquivos e diretórios) para melhorar o desempenho.

gth
fonte

Respostas:

64

Primeiro e mais importante:

!! ATENÇÃO !!

Esses comandos são EXEMPLOS . EXCLUIR partições, MODIFICAR e FORMATAR sistemas de arquivos destrói dados e / ou pode impedir a inicialização da máquina. Faça backups. Use por sua conta e risco. Experimente uma máquina na qual você não se importa de perder todos os dados. advertência de administrador.


Para configurar rapidamente uma unidade como uma única partição ext4 ...

  1. Ver dispositivos detectados da classe "DISK"

    lshw -C disk
    
  2. Exibir tabela (s) de partição existente

    fdisk -l
    
  3. Edite a tabela de partição para o meu dispositivo escolhido (neste caso, "sdx")

    fdisk /dev/sdx
    

    No FDISK, pressione:

    • d... para d elete a partição atual

    • n... para criar um n partição ew

    • p... para especificá-lo como uma partição P RIMARY

    • 1... para defini-lo como a partição primária 1 ST

    • w... para w rito as alterações.

  4. Exiba a nova tabela de partição:

    fdisk -l
    
  5. Formate o sistema de arquivos da nova partição como tipo ext4

    mkfs -t ext4 /dev/sdx1
    
  6. Crie um novo diretório no qual a nova unidade será montada:

    mkdir /storage
    mount /dev/sdx1 /storage
    

TUNING

  1. Remova os blocos reservados (ou seja, defina como 0%), pois esta unidade é apenas para dados do usuário

    tune2fs -m 0 /dev/sdx1
    
  2. Como o servidor está no no-break, defina write-back para que os aplicativos não esperem pelas gravações reais no disco

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. Monte na inicialização usando /etc/fstabe também defina a política de write-back

    vi /etc/fstab
    
  4. Encontre (ou adicione) a linha relevante fstabpara sua unidade. Os parâmetros no fstab são separados por espaços em branco, por exemplo, a unidade descrita acima pode aparecer como:

    /dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
    
    • O primeiro parâmetro identifica a partição (por / dev / ou um UUID longo);
    • O segundo parâmetro é o caminho no qual a partição será montada;
    • Terceiro é o tipo de sistema de arquivos;
    • O quarto parâmetro contém as opções;
    • Quinto é o dumpcronograma para backups; e,
    • O sexto parâmetro é o número de passe (usado para controlar a fsckordem).

Altere as opções (quarto parâmetro) para:

noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro

Reinicie para verificar se tudo correu bem.
Lembre-se de que esses comandos são destrutivos! Tenha backups e tenha cuidado!

gth
fonte
3
Deve haver um espaço entre armazenamento e ext4. Assim, o comando é como relatime ext4 / dev / sdx1 / armazenamento, erros = remount-ro 0 1
Ganesh Krishnan
Ótimo guia! Seria bom ter algumas referências aqui sobre como determinar opções fstab apropriadas (apenas um link para alguma lista seria ótimo)
Sander
13

Usando parted

Abaixo das instruções para criar uma nova partição ext4 em um novo disco rígido com parted(testado no Ubuntu 14.04.4 LTS x64). partedsuporta GUID Partition Table (GPT) e, posteriormente, pode ser usado para partições acima de 2 TB, ao contrário fdisk.

Use sudo lshw -C disk *-diskpara ver o nome lógico do seu novo disco rígido:

   description: ATA Disk
   product: ST6000NM0024-1HT
   vendor: Seagate
   physical id: 0.0.0
   bus info: scsi@1:0.0.0
   logical name: /dev/sdb
   version: SN05
   serial: Z4D30T30
   size: 5589GiB (6001GB)
   configuration: ansiversion=5 sectorsize=4096

O nome lógico é /dev/sdb. Podemos começar:

sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)

Com sudo parted /dev/sdb print, podemos ver que a GPT foi criada:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

Também precisamos saber o tamanho do disco (usaremos o MB como unidade):

sudo parted /dev/sdb print unit MB print free

O que indica:

Disk /dev/sdb: 6001175MB

Agora podemos criar a partição primária para ocupar todo o espaço do disco rígido. Para definir o rótulo da partição:

sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB 

(consulte https://unix.stackexchange.com/a/49274/16704 se você quiser saber por que usamos --align optimal)

Com sudo parted /dev/sdb print, podemos ver que o rótulo da partição principal foi criado:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB  xfs          primary

Em seguida, precisamos usar mkfs para criar a partição:

sudo mkfs.ext4 /dev/sdb1

A partição está criada, precisamos montá-la. Para fazer isso, sudo nano /etc/fstabe adicione a seguinte linha ( /crimeaé a pasta na qual escolhemos montar a nova partição):

/dev/sdb1       /crimea ext4 defaults   0       0      

Criamos a pasta e recarregamos /etc/fstab:

sudo mkdir /crimea
sudo mount -a # Remount /etc/fstab without rebooting in Linux

Você pode ver a nova partição montada usando df -h:

/dev/sdb1                      5.5T   58M  5.2T   1% /crimea

Em sudo nano /etc/fstab, em vez de usar, /dev/sdb1você pode usar o seu UUID, que você pode encontrar com sudo lshw -C volume:

*-volume
       description: EXT4 volume
       vendor: Linux
       physical id: 1
       bus info: scsi@1:0.0.0,1
       logical name: /dev/sdb1
       logical name: /crimea
       version: 1.0
       serial: c3559307-795b-66db-9844-8e974c88a1cf
       size: 200MiB
       capacity: 5589GiB
       capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
       configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted

Caso contrário, você poderia simplesmente fazer sudo blkid /dev/sdb1:

/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"

A nova linha /etc/fstabserá:

UUID=c3559307-795b-66db-9844-8e974c88a1cf          5.5T   58M  5.2T   1% /crimea

https://unix.stackexchange.com/a/137868/16704 explica por que é melhor usar UUID (liquidat, cc by-sa 3.0):

A vantagem de usar o UUID é que ele é independente do número real do dispositivo que o sistema operacional fornece ao seu disco rígido. Imagem que você adiciona outro disco rígido ao sistema e, por algum motivo, o sistema operacional decide que seu disco antigo está agora em sdbvez de sba. Seu processo de inicialização seria errado se o fstab apontasse para o nome do dispositivo. No entanto, no caso dos UUIDs, tudo bem.


Resumo:

sudo lshw -C disk                # Checking the location of the new drive. It is /dev/sdb.     
sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
sudo parted /dev/sdb print       # Checking that the GPT has been created
sudo parted /dev/sdb print unit MB print free # see 6001175MB size
sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label
sudo mkfs.ext4 /dev/sdb1         # Creating the partition
sudo nano /etc/fstab             # Add line `/dev/sdb1 /crimea ext4 defaults 0 0`
sudo mount -a # Remount /etc/fstab without rebooting
Franck Dernoncourt
fonte
em vez disso, dizendo ao MB final sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MBque seria melhor ext4 0% 100%evitar o aviso: a partição resultante não está alinhada corretamente para obter o melhor desempenho.
Pablo Marin-Garcia