3 maneiras de verificar o desempenho do HD no Linux

Vou mostrar como determinar a velocidade do seu disco rígido no Linux com um aplicativo de linha de comando e um app gráfico.
Na linha de comando, é possível usar o hdparm e, para quem usa o Ubuntu, é só abrir o dash e procurar pelo “gnome-disks” — trata-se de um aplicativos padrão do sistema .
Quem usa outro sistema operacional, pode instalar o aplicativo, conforme irei mostrar depois.

Como verificar o desempenho do HD com o hdparm

O comando hdparm faz parte de qualquer distro Linux e pode ser usado, dentre outras coisas, para determinar as taxas de transferência de dados que o seu disco consegue alcançar.
Ele provê uma interface de linha de comando para diversos tipos de dispositivos, seja ATA, IDE, SATA etc.
Aqui é importante ter um dos kernels mais atuais, com suporte aos recursos mais avançados do aplicativo.
Aqueles que precisam de resultados mais precisos podem compilar o hdparm com os arquivos include do código fonte da última versão do kernel.
Para medir velocidade de transferência de dados do disco rígido, abra um terminal e execute o seguinte comando:

sudo hdparm -tT /dev/sda

O resultado deve ser parecido com este aqui:

/dev/sda:
 Timing cached reads:   6754 MB in  2.00 seconds = 3378.67 MB/sec
 Timing buffered disk reads: 314 MB in  3.01 seconds = 104.33 MB/sec

Para ter dados mais próximos da realidade, a documentação do hdparm recomenda repetir o procedimento duas ou três vezes.
As opções -t e -T pode ser usadas individualmente também.
Veja a função de cada uma:

  • -t — realiza leituras periódicas para obter benchmarks, dados de referência e sobre o desempenho do dispositivo.
    Esta opção exibe o desempenho da leitura através do buffer cache, sem fazer caching de dados.
    Esta opção mostra a velocidade que o drive consegue manter durante a leitura sequencial de dados no Linux, sem sobrecarregar o sistema de arquivos.
  • -T — realiza a avaliação do tempo de leitura do cache — mostra a velocidade de leitura diretamente do cache de buffer Linux sem acesso ao disco. Esta medida é, essencialmente, uma indicação do desempenho do processador, cache e memória do sistema em teste.
  • /dev/sda — este é o dispositivo (disco rígido) do nosso exemplo.

Se você preferir, pode automatizar a execução de 3 testes seguidos, dentro de um loop. Veja como:

for i in 1 2 3; do hdparm -tT /dev/hda; done

Use o comando grep para obter apenas os dados que te interessam. Por exemplo, para ver apenas a velocidade do disco rígido, use-o assim:

sudo hdparm -I /dev/sda | grep -i speed
   *	Gen1 signaling speed (1.5Gb/s)
   *	Gen2 signaling speed (3.0Gb/s)

O resultado, acima, indica que o meu HD (SATA II) tem condições de alcançar as duas velocidades — 1.5Gb/s ou 3.0Gb/s speed —. Para tanto, é necessário que a BIOS e a placa-mãe tenham suporte a SATA II.
Com as opções -t --direct o hdparm lê os dados diretamente do disco. Os resultados podem demorar um pouco mais a aparecer (alguns segundos), mas ao menos você verá o valor da taxa de transmissão de dados pura, sem interferência do buffer:

sudo hdparm -t --direct /dev/sda1
/dev/sda1:
 Timing O_DIRECT disk reads: 132 MB in  3.04 seconds =  43.44 MB/sec

Tente o offset!

O hdparm sempre começa a leitura dos dados a partir do começo do dispositivo de armazenamento.
O fato é que a leitura dos discos rígidos (eles são circulares, afinal) tende a ser mais lenta na parte externa dos pratos magnéticos.
A opção --offset num permite estabelecer um número (em gigabytes) a ser pulado.
Se você tem um disco de 500 Gb, o exemplo abaixo faz o hdparm pular os primeiros 250 GB — ou seja, vai mostrar o desempenho de leitura, da metade do disco pro fim:

sudo hdparm -t --offset 250 /dev/sda1
/dev/sda1:
 Timing buffered disk reads (offset 100 GB):  78 MB in  3.01 seconds =  25.90 MB/sec

Estas amostras podem dar uma idéia da velocidade do seu HD — mas só se referem ao desempenho de leitura.
Para ter fazer uma análise mais completa, você precisa determinar o desempenho de escrita do seu dispositivo.
Para isto, recomendo usar o comando dd.

Use o dd para determinar a velocidade de gravação do drive

Informações sobre o desempenho de escrita de dados, podem ser obtidas com o comando dd.
O seguinte teste, vai retornar, ao final, a velocidade de gravação no dispositivo:

dd if=/dev/zero of=/tmp/output.img bs=8k count=10k; rm -vf /tmp/output.img

Aguarde alguns instantes…

10240+0 registros de entrada
10240+0 registros de saída
83886080 bytes (84 MB) copiados, 0,084371 s, 994 MB/s
removido “/tmp/output.img”

O desempenho de leitura e gravação pode variar em função do sistema de arquivos usado no seu dispositivo.

Determine o desempenho do disco com o gnome-disks

Embora o aplicativo faça parte do pacote padrão do Ubuntu, em outros sabores do Ubuntu, ele pode não estar disponível — este é o caso do Xubuntu.
Neste caso, você pode baixar o aplicativo pelo Software Center, clicando no botão abaixo:
Clique para baixar e instalar o aplicativo
Ou, se preferir, use o terminal:

sudo apt-get install gnome-disks

No Ubuntu, acione o Dash e encontre o utilitário Discos, ou dê o comando gnome-disks no terminal.
Em seguida, selecione o disco a ser analisado, na lista à esquerda (se houver mais de um).
Para começar a analisar o disco selecionado, clique no botão do canto superior direito, para abrir um menu de opções (Mais ações).
gnome-disks-escolha-do-dispositivo
No menu de opções, selecione Avaliação de desempenho.
Para começar o processo, agora clique em Iniciar a avaliação de desempenho….
Na próxima tela, desmarque a opção Executar avaliação de desempenho de escrita.
Agora, clique no outro botão Iniciar avaliação de desempenho e observe o gráfico.

gnome-disks desempenho disco rigido
Clique para detalhes.

LEIA MAIS

Mais referências:
http://www.linux-magazine.com/Online/Features/Tune-Your-Hard-Disk-with-hdparm
https://wiki.archlinux.org/index.php/hdparm#Writing_speed

Como formatar um drive no Linux, com mkfs

O mkfs torna fácil formatar drives de vários tipos, no Linux, tais como pendrives, cartões de memória, HDs, SSDs etc.
O aplicativo permite várias opções e parâmetros de uso, que lhe conferem grande versatilidade para realizar a tarefa.
O mkfs pode criar uma variedade de sistemas de arquivos em um dispositivo — usualmente (mas não exclusivamente) um disco rígido.
sistema de arquivos - disco rígido - usb - pendrive

Como usar o mkfs

É importante ser cuidadoso.
— não é possível desfazer a formatação depois. Portanto tenha sempre a certeza de que está formatando o drive certo.
O nome (endereço) do drive vai ser algo parecido com “/dev/hda1” ou “/dev/sdc2”.
Você pode também formatar e criar um sistema de arquivos em um arquivo — semelhante a um disco rígido virtual.
Para formatar um pendrive, localizado em /dev/sdc1, comece por desmontar o dispositivo:

sudo umount /dev/sdc1

Agora já é possível criar um sistema de arquivos nele.
O comando, a seguir, formata e apaga todo o conteúdo do dispositivo — e cria um sistema de arquivos vfat nele:

sudo mkfs -t vfat -n pendrive -I /dev/sdc1

Sistemas de arquivo suportados pelo mkfs

Os sistemas de arquivos (filesystems) mais usados, são suportados pelo mkfs:

  • xfs,
  • ext2, ext3, ext4,
  • xia,
  • xfs
  • vfat, msdos, dos,
  • minix,
  • bfs etc.

O aplicativo tem opções apropriadas a cada sistema de arquivos em particular. Ele é um frontend para estes outros programas:

  • mkdosfs
  • mke2fs
  • mkfs.bfs
  • mkfs.ext2
  • mkfs.ext3
  • mkfs.ext4
  • mkfs.minix
  • mkfs.msdos
  • mkfs.vfat
  • mkfs.xfs
  • mkfs.xiafs

Cada um deles tem uma página de manual e um sistema de ajuda próprio — que vale a pena consultar sempre.
Você pode ver a relação deles no seu PC com o comando ls:

ls /sbin/mk*

Linux mkfs
Se você não especificar o sistema de arquivos a ser construído no dispositivo, o mkfs vai usar o ext2 como padrão.

Como verificar se há setores ruins no drive, antes de formatar

Alguns dos aplicativos, da lista acima, tem opções mais avançadas, que permitem verificar a saúde do dispositivo de armazenamento antes de formatar e criar um sistema de arquivos nele.
Para criar um sistema de arquivos VFAT em um pendrive que você pretenda usar para ver filmes, proceda da seguinte forma, para fazer uma checagem no sistema de arquivos do dispositivo após a formatação:

sudo mkfs -t vfat -c -v -n "meus_filmes" /dev/sdc1

O que produzirá uma saída semelhante a esta:

mkfs.fat 3.0.26 (2014-03-07)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
Auto-selecting FAT32 for large filesystem
/dev/sdc1 has 124 heads and 62 sectors per track,
hidden sectors 0x0002;
logical sector size is 512,
using 0xf8 media descriptor, with 7870462 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 7671 sectors, and provides 981886 clusters.
There are 32 reserved sectors.
Volume ID is aafb6b57, volume label meus_filmes.
Searching for bad blocks 106080... 212192... 318560... 424288... 530272... 636624... 743008... 849248... 955360... 1061472... 1167968... 1275104... 1381728... 1488096... 1594336... 1701200... 1808480... 1916256... 2022496... 2128864... 2234976... 2341344... 2448096... 2554720... 2661584... 2768864... 2875488... 2981984... 3087968... 3194208... 3300832... 3407456... 3514192... 3620576... 3727824... 3834080... 

Na linha de comando, acima:

  • a opção -c, pede para que o aplicativo faça uma checagem no drive, após a formatação.
  • a opção -v, liga a “verbosidade”.
  • a opção -n, nomeia o novo dispositivo (no máximo 11 letras)

Uma forma alternativa e equivalente de execução é a seguinte:

sudo mkfs.vfat -c -v -n "meus_filmes" /dev/sdc1

Os resultados são os mesmos.

Qual o sistema de arquivos mais recomendado

Se você tentar esta busca no Google, vai encontrar inúmeros fóruns, onde esta questão é debatida, às vezes intensamente e quase nunca com resultados 100% conclusivos.
O fato é que o tipo mais adequado de sistema de arquivos varia de acordo com o tipo de dispositivo — pendrive, HD, SSD etc —, de acordo com a aplicação — reproduzir filmes, guardar arquivos de backup etc —, entre tantos outros fatores.
Vou ser extremamente simplista na minha afirmação, a seguir, apenas para não te deixar sem resposta — mas você deve pesquisar antes de decidir, sempre.

Sistemas de arquivos mais indicados para pendrive

Se o seu dispositivo removível for para armazenar filmes em mp4, mkv etc., para assistir na TV, você vai precisar que ele use um sistema de arquivos reconhecido pelo aparelho: os mais comuns, portanto, são VFAT e NTFS.
Em pendrives maiores que 16 Gb, vá de NTFS.
Se não vai depender da compatibilidade com outros sistemas operacionais, pode usar o ext2 ou ext3 para pendrives ou cartões de memória de baixa capacidade e ext4 em dispositivos mais novos e com maior capacidade de armazenamento.
O ext4 é recomendado também para unidades SSD.

Como usar o ext4

Use a versão mais nova, ext4, sempre — a menos que você tenha motivos especiais para usar uma versão mais antiga.
As equipes de desenvolvimento do Fedora e do Red Hat têm optado pelo XFS — se uma destas é sua distro, mantenha a opção das equipes de desenvolvimento, por que você terá mais suporte.
O uso básico do mkfs, para formatar uma partição com o tipo ext4 é assim:

sudo mkfs -t ext4 /dev/sdd3

Tenha em mente que uma partição precisa estar desmontada sempre, antes de ser formatada — creio que o sistema irá lembrá-lo disto.

LEIA MAIS

Como desmontar um drive ocupado em 2 passos

Se você está tentando desconectar um dispositivo USB, um pendrive ou remover um DVD e ele demora muito (e, aparentemente, nada acontece) é por que algo errado pode estar acontecendo.
Há várias situações em que um dispositivo pode parar de responder às suas tentativas de remoção (desmontar, ejetar etc.) — a mais comum é que ele esteja sendo retido por algum programa (processo).
usb flash media pendriveSe um processo ainda estiver escrevendo/lendo dados, ele vai “tentar” impedir que você desconecte o dispositivo — seja um CD/DVD/Blu-Ray, um pendrive, um cartão de memória, um HD externo etc.
O ideal é esperar — se você estiver lidando com transferências volumosas entre dispositivos, boa parte destes dados pode estar armazenada no cache do sistema, aguardando disponibilidade para concluir a transação.
Ou seja, mesmo que você não perceba qualquer atividade de tráfego de dados no sistema, ela pode, sim, ainda estar ocorrendo — e desconectar um drive nestas condições é extremamente arriscado.
Neste post, vou mostrar como lidar, de forma segura, com esta situação.

Feche os programas relacionados ao dispositivo

Você está ouvindo música no pendrive ou no cartão de memória?
Está editando algum texto ou planilha armazenada no dispositivo?
Em casos assim, o dispositivo está em uso pelo programa em execução e impedir que ele seja retirado é uma medida de segurança do sistema — para evitar que você perca os seus dados e/ou danifique o sistema de arquivos do dispositivo.
Feche todos os programas abertos e aguarde uns instantes — e tente ejetar novamente.
Se isto ainda não resolveu, prossiga a leitura.

Como resolver o problema

A minha primeira opção é o comando sync. Sua função é escoar os dados retidos no buffer do sistema de arquivos, pro dispositivo de destino.
Na maioria das vezes, tudo se resolve com este comando.
Comece por abrir um terminal e execute o comando:

sudo sync

Aguarde alguns instantes.
Se isto não resolver, tente o que segue:
Localize o dispositivo, com o comando mount:

mount
/dev/sda2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/pstore type pstore (rw)
/dev/sda1 on /home type ext4 (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw, noexec, nosuid, nodev, none, name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw, nosuid, nodev, user=justincase)
/dev/sdc1 on /mnt type ext4 (rw)

Vou usar como exemplo o dispositivo destacado acima /dev/sdc1, que está montado na diretório /mnt.
Para tentar desmontá-lo, use o seguinte comando:

sudo umount /dev/sdc1

comandos mount umount linux ubuntu
comando mount retornou erro
Se este método não funcionou, você vai precisar descobrir qual(is) processo(s) está(ão) retendo o dispositivo — e decidir o que fazer com ele(s).

Como determinar qual processo está ocupando o dispositivo

A idéia é justamente esta: identificar quem está ocupando o drive e “pedir para ele parar”.
Neste artigo, vou abordar 3 métodos para identificar e resolver o problema:

  • pseste comando exibe um relatório instantâneo sobre os processos em execução.
  • lsof — este comando é usado para listar os arquivos em aberto. Ele pode apontar se há algum programa mantendo um arquivo aberto em seu pendrive.
  • fuser — identifica processos que estejam usando arquivos ou sockets.

O comando PS

O ps, em conjunto com o comando grep, pode resolver esta situação em um piscar de olhos.
Adéque a linha de comando, abaixo, à sua realidade:

ps aux | grep -i "/mnt"

No exemplo acima, eu inquiri o sistema sobre os processos em execução com ps aux e filtrei o resultado, para ver apenas o que se referia à pasta em que o dispositivo /dev/sdc1 está montado: /mnt. Veja o resultado:

justinc+  8233  2.8  0.1  83016  3012 pts/30   Sl   20:06   0:04 mpg123 /mnt/Música/REO Speedwagon - discography/1971 R.E.O. Speedwagon/01 Gypsy Woman's Passion.mp3
justinc+  8264  0.0  0.0   4956   848 pts/30   S+   20:09   0:00 grep --color=auto -i /mnt

Quem está mantendo o meu dispositivo ocupado é o player mpg123 — e a identificação do processo 8233.
Para interromper este aplicativo, use o comando kill:

kill -9 8233

Use lsof para listar os arquivos abertos (opened files)

Vou usar um método semelhante ao que usei antes com o comando ps, combinando-o com um filtro grep:

lsof | grep -i "/mnt/"

Tenha um pouco de paciência — este comando pode demorar um pouco para apresentar os seus resultados.
Novamente, o player de músicas mpg123 aparece na lista, com o seu PID. Veja:

mpg123    13424       justincase    8r      REG       8,33    9695544  5505285 /mnt/Música/REO Speedwagon - discography/1971 R.E.O. Speedwagon/02 157 Riverside Avenue.mp3
threaded- 13424 13427 justincase    8r      REG       8,33    9695544  5505285 /mnt/Música/REO Speedwagon - discography/1971 R.E.O. Speedwagon/02 157 Riverside Avenue.mp3

Use o comando kill para terminar o processo (note que o PID – Process IDentification – mudou):

kill -9 13424

Use o fuser para encontrar o processo que está usando o seu dispositivo

O último método é o meu preferido.
O comando fuser pode ser usado para identificar processos que estejam mantendo arquivos abertos ou ocupando sockets. Veja como usar:

fuser -m /dev/sdc1

O resultado, no meu sistema foi o seguinte:

/dev/sdc1:            6740c 13702

O último número, é o do PID — que vamos informar ao comando kill:

kill -9 13702

como usar o comando fuser
Se necessário, preceda o comando kill com o sudo — para ter privilégios administrativos:

sudo kill -9 13702

Outras soluções com umount

Se o problema persistir, você pode tentar “remontar” um dispositivo em modo “somente leitura” (read-only) – o que causará menos danos ao seu sistema de arquivos, se for removido arbitrariamente (use o sudo, se necessário):

sudo umount -rv /dev/sdc1
[sudo] password for justincase: 
umount: /dev/sdc1 está ocupado - remontado somente para leitura

Se você obtiver sucesso nisto, já pode desconectar o drive ou a mídia.
As soluções que seguem são variantes do comando umount e você combinar os parâmetros e as opções para obter o melhor resultado.
Elas não funcionam não funcionam em kernels anteriores ao 2.4:
Para forçar a remoção:

sudo umount -vf /dev/sdc1

Remover imediatamente o sistema de arquivos do dispositivo junto a todas as referências, tão logo ele se desocupe:

sudo umount -l /dev/sdc1

Combinando as duas:

sudo umount -lf /dev/sdc1

Espero que uma destas soluções funcione para você. 😉

4 comandos fatais e proibidos pro Linux.

Há comandos que são extremamente danosos pro seu sistema operacional Linux, se executados inadvertidamente.
Felizmente, nenhum deles pode ser executado sem privilégios administrativos — mas você deve ser cuidadoso, mesmo assim.
Captura_de_tela-Breaking.Bad.S01E04.avi-1Se o seu objetivo é o aprendizado, o ambiente mais seguro para testar estes e muitos outros comandos é o virtual. Aprenda a criar uma máquina virtual e vá brincar com segurança dentro dela.

O comando que apaga tudo

A função do comando rm é remover arquivos — e ele pode remover diretórios inteiros também, sem pedir qualquer confirmação.
Ao executar o comando rm -rfv /, com privilégios de root todos os arquivos e diretórios do seu sistema serão eliminados.
Veja o que ele faz:

  • r — indica a recursividade. Todos os arquivos do diretório atual e seus subdiretórios sofrerão a ação do comando;
  • f — indica a ‘forçabilidade’. Todos os arquivos serão forçosamente removidos, independente de suas permissões;
  • v — liga a ‘verbosidade’. Torna tudo mais lindo ao exibir os arquivos à medida em que são eliminados no seu terminal;
  • / — indica o local em que a operação ocorrerá. Neste caso, a raiz. É isto que torna o comando todo tão perigoso;

Se você executar a linha sem privilégios administrativos, só os arquivos nos quais você tem permissão de escrita serão afetados.

Como executar uma fork bomb

Esta é uma das formas de se fazer um ataque de negação de serviços, que consiste em, basicamente, saturar os recursos de um servidor ao ponto de torná-lo indisponível.
A fork bomb apresentada a seguir faz com que o Linux ou o Unix opere definindo uma função, chamada ‘:’ e que refira-se a si mesma duas vezes – em background e foreground:

: (){ : | : & };:

No Linux, o administrador pode prevenir este tipo de ataque com o comando ulimit que impõe restrições à quantidade de processos simultâneos por usuário.

Formatar uma partição

Qualquer instalação decente do Linux estará distribuída em várias partições. O comando:

mkfs.ext4 /dev/sdaX</code>

vai aplicar uma formatação completa à partição /dev/sdaX.
Formatar um disco completamente, desta forma, pode ser útil no caso de se estar repassando a máquina para uma outra pessoa.

Escrever diretamente no disco rígido

Ao enviar a saída de um comando diretamente pro endereço do dispositivo de disco rígido não é apenas desaconselhável. É uma ação muito perigosa e danosa pro sistema de arquivos, em sua máquina.
Pode ser feito da seguinte forma:

ls > /dev/sda

Há várias outras formas de se danificar um sistema Linux/Unix — e, na maior parte delas, é necessário ter privilégios especiais para ter sucesso.
Distribuições Linux voltadas para usuários com menor nível de conhecimento costumam vir com algumas configurações que previnem a maior parte dos acidentes.

Seja responsável! 😉

Como montar um sistema de arquivos FTP remoto com o curlftps

É possível montar nativamente um sistema de arquivos FTP remoto, com o uso de um gerenciador de arquivos gráfico, presente em qualquer distribuição Linux — todos eles permitem acessar servidores remotos, através de diversos protocolos.
Se você precisa de mais recursos de conectividade, vou descrever, neste post, uma solução mais flexível e completa para a realização da tarefa — para quem não tem medo digitar (ou copiar e colar) alguns comandos no console.

Como instalar o curlftps no Debian ou Ubuntu

Vamos precisar instalar pelo menos um pacote de softwares, o curlftps – sistema de arquivos para acessar hosts FTP baseado em FUSE e cURL.
Comece abrindo um terminal (Ctrl+Alt+T, no Ubuntu). Agora, use o apt, para instalar:

sudo apt-get install curlftpfs

Após a instalação, vamos criar um diretório local dentro do qual vamos montar o diretório remoto via FTP:

sudo mkdir /mnt/meu_ftp

Para executar o curlftps, você precisa saber 3 coisas:

  • endereço do Servidor FTP
  • Nome de usuário;
  • Sua senha;

Substitua, no comando que segue, os valores pelos que se adequam ao seu caso:

sudo curlftpfs endereco_ftp.com /mnt/meu_ftp/ -o user=meuNomeDeUsuario:MinhaSenha -o allow_other

A opção -o allow_other serve para permitir que outros usuários na rede também tenham acesso a este diretório. Se isto não te interessa, basta remover do comando.
A esta altura você já pode acessar o seu diretório:

ls /mnt/meu_ftp/

Quer que este diretório seja montado já na inicialização do sistema ou da sessão?

Superfácil.
Abra e edite o arquivo /etc/fstab:

sudo editor /etc/fstab

Agora vá até a última linha do arquivo aberto no seu editor e insira o seguinte comando:

curlftpfs#ftp://username:password@ftp.myhost.com/ /meu_ftp fuse defaults 0 0

Captura de tela - 13-06-2013 - 20:23:31
Não esqueça de substituir

  • username, pelo seu nome de usuário no servidor;
  • password, pela senha correspondente ao usuário no servidor;
  • ftp.myhost.com, pelo endereço do seu servidor;
  • e meu_ftp pelo diretório local em que você pretende montar o diretório remoto.

Para montar tudo agora, execute o comando:

sudo mount -a

Para desmontar o diretório, a qualquer momento, use o comando:

sudo umount /mnt/meu_ftp

LEIA MAIS!

Além dos artigos sugeridos, abaixo, você pode realizar uma busca neste site, por qualquer assunto — na caixa de busca, no canto superior direito do site.