Como ativar o TRIM no Linux para sua unidade SSD

O TRIM é um recurso fundamental para quem tem uma unidade SSD no seu sistema e deseja garantir o máximo de eficiência deste tipo de dispositivo.
O recurso já vem incluído nas versões do kernel linux superiores a 2.6.33 e, no Ubuntu 14.04 LTS Trusty Tahr, ele é padrão do sistema — ou seja, você não precisa fazer nada.
Contudo, se você deseja verificar se o recurso está em funcionamento ou se você usa outro sabor do Linux, vou mostrar como dominar este recurso neste artigo.
Já expliquei anteriormente o principal motivo de um drive SSD apresentar problemas acentuados de lentidão — o que pode comprometer o desempenho de todo o sistema.

O que é o TRIM

Quando um arquivo é removido de uma mídia, quase todos os sistemas operacionais removem as referências a ele e não os blocos de dados do arquivo na mídia.
Para as unidades SSD, isto acaba por deixar blocos de dados supérfluos na mídia que, eventualmente precisarão ser sobrescritos.
O SSD TRIM é um função da interface SATA, que diz à interface SSD para esvaziar definitivamente os blocos sem uso.

O TRIM é um comando SATA que habilita o sistema operacional a informar à unidade SSD quais blocos de dados gravados não são mais necessários, como resultado de terem sido apagados — com um “delete” ou com um “format”.
O resultado da execução do TRIM é que o dispositivo de estado sólido ganha mais espaço livre, o que melhora a performance de sua escrita.
O comando TRIM precisa ser suportado pela controladora SSD — caso contrário, os LBAs (endereçamento lógico de blocos ou Logical Block Address) que receberem o comando não irão ser marcados como inválidos e o drive irá continuar a coleta de lixo de dados, como se ainda fosse válidos.

Possíveis problemas

Apenas quando o sistema operacional gravar novos dados nestes LBAs, é que a unidade SSD irá saber que eles são inválidos — e aí, o problema, descrito aqui, já estará criado: o processo de gravação se torna progressivamente mais lento.
Se a sua controladora não tem suporte ao TRIM, há 2 formas de solucionar o problema — se disponível, fazer atualização do firmware da controladora SSD. Se não, executar periodicamente um aplicativo utilitário, que realize o TRIM na unidade.
No Linux, o comando que realiza o TRIM é o fstrim.
Ainda que a controladora da unidade SSD suporte o comando TRIM, isto não significa que ela voltará à sua velocidade máxima imediatamente.
O espaço a ser liberado pelo TRIM está espalhado aleatoriamente na unidade — serão necessárias algumas execuções até que o processo se consolide e a performance seja restabelecida.

Limitações do TRIM

Há algumas limitações, mais ou menos, óbvias.
Se você tem um espaço total de 100 Gb no seu SSD e já ocupou 95 Gb — O TRIM não vai lhe adicionar espaço significativo ao drive.
sandisk ssd issd 128 gbEu sugiro que você leia este texto, para entender por que.
Unidades SSD mais antigas podem não ser muito eficientes com recursos de coletar lixo ou suporte ao TRIM.
A Kingston oferece, para as suas unidades mais antigas alguns aplicativos que melhoram a performance dos drives SSD.
O Ubuntu 14.04 LTS, tem suporte automático a unidades SSD Intel e Samsung.
Mas é possível executar o comando TRIM em unidades SSD de outras marcas também — veja, no próximo tópico como fazer isto.

Como obter informações sobre o seu drive SSD

Há várias formas de obter informações sobre o seu dispositivo.
Se você quiser se certificar de que ele é um SSD, use o comando SMARTCTL:

sudo smartctl -a /dev/sdb | grep -i rotation
Rotation Rate:    Solid State Device

Para saber a marca, tente isto:

sudo smartctl -a /dev/sdb | grep -i device

Repare na linha em destaque (no meu resultado):

Device Model:     SanDisk SSD i100 24GB
LU WWN Device Id: 5 001b44 7bae1fb91
Rotation Rate:    Solid State Device
Device is:        Not in smartctl database [for details use: -P showall]
SMART support is: Available - device has SMART capability.

O comando LSHW, também pode dar informações mais detalhadas sobre o seu sistema:

sudo lshw | less

No Linux, há inúmeras outras formas de obter informações sobre o seu drive. Se quiser, sinta-se à vontade para dar sua contribuição nos comentários.

Como executar o TRIM no Linux

O comando fstrim-all é um frontend pro fstrim. O primeiro, executa o TRIM em todos os dispositivos SSD presentes no seu sistema — o segundo precisa que você indique o diretório em que você quer que o TRIM seja aplicado.
É necessário que os dispositivos estejam montados, para que o fstrim funcione.
Veja como rodar o fstrim em um diretório local, montado em uma unidade de estado sólido:

sudo fstrim -v /usr/

Se tudo der certo, você vai obter uma mensagem semelhante a esta:

/usr/: 20903276544 bytes were trimmed

Com o uso da opção -v o fstrim vai exibir o número de bytes fornecidos pelo sistema de arquivos para descarte.
Este número é o máximo a ser descartado, na perspectiva do dispositivo de armazenamento.
Se você repetir o comando, em seguida, obterá o mesmo número.
Acontece que o fstrim irá mostrar a mesma quantidade de bytes, em potencial, a ser descartada no dispositivo. Este valor ainda poderá sofrer ajustes pelo kernel, mais a frente, antes que o TRIM seja efetivamente aplicado.
Se quiser, use o fstrim-all — o aplicativo detecta sozinho quais unidades são SSD.
O desenvolvedor alerta para o fato de que ele só tem suporte a drives Intel e Samsung.
Você pode usar a opção --no-model para executá-lo em drives de outras marcas, mas pode sofrer perda de dados, ao rodar o fstrim em um sistema com alta carga de entrada/saída de dados.

sudo fstrim-all --no-model

O fstrim-all não costuma dar retorno de suas atividades ao usuário —. Lembre-se: estes aplicativos são feitos para rodar em silêncio, nos bastidores.
Veja como inserir o comando TRIM no cron, para que ele seja realizado periodicamente no seu sistema, sem verificar o modelo do seu drive:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

Mais opções de uso do fstrim

O site oficial Askubuntu recomenda 3 formas de uso do fstrim:

  • manual — esta é a forma mais fácil e pode ser executada diretamente no terminal (como já foi visto, acima):
    sudo fstrim /nome_diretório

    Contudo, ela é desnecessária, se você estiver usando o comando agendado ou automatizado;

  • agendada e
  • automatizada (não recomendada nos sistemas atuais e, portanto, não será abordada neste texto).

Como agendar a execução do fstrim

Este é o método recomendado e, no Ubuntu 14.04, ele já ocorre por padrão.
Ao agendar a tarefa, você não precisa mais se preocupar com o problema — o sistema se encarregará de cuidar dele periodicamente.
Veja como agendar uma tarefa para execução semanal do fstrim no cron:
sudo nano gedit /etc/cron.weekly/fstrim
No exemplo, acima, usei o nano. Se você preferir, pode usar outro editor de textos — mas precisa executá-lo com privilégios administrativos.
Copie e cole o seguinte código no arquivo:

#! /bin/sh  

# Este script pressupoe que o diretório /usr está em uma unidade SSD.
# Altere o ponto de montagem de acordo com sua realidade
# Voce pode adicionar outros pontos de montagem, separados por espacos.
# Certifique-se de que todos os pontos de montagem estejam entre as aspas
# simples, conforme o exemplo abaixo:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/usr'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Agora, torne o script executável:

sudo chmod +x /etc/cron.weekly/fstrim

Agora, teste-o:

sudo /etc/cron.weekly/fstrim

Se você não obtiver mensagens de erro, o seu cron job estará funcionando bem.

Referências:

en.wikipedia.org/wiki/Write_amplification
http://askubuntu.com/questions/18903/how-to-enable-trim
http://www.kingston.com/us/support/technical/products?model=sv300s3

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! 😉