Como trabalhar com vários arquivos ou partições de swap no Linux

Algumas pessoas precisam dividir seu espaço de troca ou memória virtual em diversos dispositivos físicos ou arquivos.
O recurso do swap, no Linux, é bastante maleável e flexível neste ponto.
É comum adquirir um computador e separar uma partição para o swap baseado na quantidade de memória presente no sistema.

Acrescentar um disco rígido ou um outro pente de memória, podem motivar a alteração na sua configuração de swap.

Por outro lado, fazer upgrade de hardware também é comum para muitos usuários.
Ao acrescentar memória RAM, suas necessidades para swapping mudam.
Instalar um SSD no sistema, ao lado do HDD, torna possíve aproveitar o recurso de hardware novo para obter melhor desempenho em tarefas pesadas.
Por estes e outros motivos você pode se ver forçado ou tentado a querer alterar a configuração do seu sistema de memória virtual.


Por favor, leia o artigo Perguntas e respostas sobre o swap, caso ainda restem dúvidas sobre o assunto.
Naquele artigo, há uma tabela com a relação entre quantidade de memória e tamanho de swap adequado — caso você tenha dúvidas sobre este quesito também.

Como configurar o fstab para as suas partições de swap

Não há segredo para configurar o swap no fstab.
Trata-se de um tipo especial de sistema de arquivos e geralmente segue a mesma configuração em todos os sistemas.
Esta é uma configuração modelo do swap, no fstab:

/dev/hda6   swap     swap   defaults        0   0

É seguro adotar este modelo para todas as partições e arquivos swap presentes no seu sistema. Faça apenas as alterações necessárias para refletir a sua situação.
Para fazer com que o fstab tenha efeito, você precisa reiniciar o sistema ou usar o comando mount:


sudo mount -va

Você também pode usar o comando swapon para ativar imediatamente um arquivo ou partição swap:


sudo swapon /dev/sdb2 /dev/sda2

Indique, para o swapon, todas as partições/arquivos swap presentes, que você queira usar.
No exemplo, acima, relacionei as minhas duas partições em ordem, começando pela mais prioritária.
Mas lembre-se que os ajustes feitos com o mount e swapon se perdem após reiniciar o sistema.
É necessário editar o fstab, para ter uma configuração persistente.
Sempre é possível usar o swapon, também para verificar a sua configuração de espaço de troca atual:


sudo swapon -v

[sudo] senha para justincase: 
NAME      TYPE      SIZE USED PRIO
/dev/sdb2 partition   3G   0B   -1
/dev/sda2 partition 8,8G   0B   -2

Leia mais sobre como criar um arquivo de swap.

Como dar mais prioridade a uma partição ou arquivo de swap

Se uma partição swap estiver em um drive mais rápido que os outros (um SSD, por exemplo), pode ser interessante configurar o sistema para começar a fazer o swapping por este dispositivo, que vai oferecer tempo de resposta muito menor.
Veja como especificar as prioridades de swap, no fstab:

/dev/sdb2   none    swap    sw,pri=2    0   0
/dev/hda2   none    swap    sw,pri=1    0   0

Com esta configuração (acima), o kernel irá priorizar a partição /dev/sdb2 (pri=2) — com o maior valor de prioridade da lista.
Assim que sua capacidade se esgotar, o kernel passará a usar a partição /dev/hda2 (pri=1), com valor de prioridade menor.
O valor da prioridade pode variar entre 0 e 32767.
0 é a menor prioridade possível e 32767 é a máxima.

Dê prioridade máxima ao arquivo ou partição swap que se encontrar no dispositivo de armazenamento mais rápido.
Esta configuração irá minimizar a perda de desempenho causada pelo uso do swap.

Configuração de RAID no swap

É possível fazer uso simultâneo de todas as partições swap disponíveis no seu sistema.
Para obter esta configuração, basta dar o mesmo nível de prioridade a todas elas.
Veja um exemplo:

/dev/hdb3   none   swap   sw,pri=1   0   0
/dev/hdd3   none   swap   sw,pri=1   0   0
/dev/hdc3   none   swap   sw,pri=1   0   0

Para obter um desempenho melhor, o ideal é que cada partição esteja em um drive físico diferente.

Conclusão

Na imagem, abaixo, você pode ver como configurei o meu swap
configuração do swap no linux fstab
Com 8 GiB de memória RAM e um SSD de 24 GiB, julguei interessante distribuir o espaço de troca recomendado, de 11 GiB entre o SSD e o HDD.
Assim, deixei 3 GiB de swap na unidade de estado sólido e o restante no disco rígido — dando maior prioridade à primeira.
Houve ganho de performance no sistema, toda vez em que foi necessário fazer uso da memória virtual.
Infelizmente, a unidade SSD já tem mais de 5 anos e eu espero que esta configuração tenha algum impacto negativo na sua durabilidade.
Tudo tem um preço, não é?

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

http://www.tldp.org/HOWTO/Partition/setting_up_swap.html.

Como criar um drive virtual, usando o comando dd no Linux

Drives virtuais podem ter várias utilidades.
Podem funcionar como partições separadas ou simples pastas — só que apartadas do sistema de arquivos hospedeiro ou host.
Um uso comum para um sistema de arquivos virtual é fazer dele um espaço de troca ou SWAP.
Você também pode clonar ou transferir o conteúdo de um drive físico para um drive virtual, como backup ou um armazenamento intermediário a ser transferido para outro drive físico.
Como ferramenta, o comando dd é muito flexível e pode ter uma gama variada de aplicações.
Se você fizer uma busca por “comando dd”, vai encontrar vários artigos mencionando alguma tarefa a ser realizada com ele. Se quiser, você também pode clicar na tag dd, para dar uma olhada no que a gente já andou falando sobre o assunto.

Crie um drive virtual com um tamanho determinado

Vamos começar por criar um espaço (arquivo), dentro do qual vamos inserir o nosso sistema de arquivos mais tarde.
No meu exemplo, vou mostrar como criar um arquivo com 700 MB (mais ou menos o tamanho de um CD de dados):


dd if=/dev/zero of=meudrive700 bs=4K count=175000

175000+0 records in                                                 
175000+0 records out                                                
716800000 bytes (717 MB, 684 MiB) copied, 4,84865 s, 148 MB/s

Note que o tamanho final do arquivo é mostrado em MB (megabytes) e MiB (mibibytes).
Veja o que foi feito:

  • if=/dev/zero — abreviatura de input file (ou arquivo fonte), pega caracteres 0x00 para preencher o espaço do novo drive.
  • of=meudrive700 — abreviatura de output file (ou arquivo de destino), nomeia o arquivo que vai receber o novo drive virtual. Use o nome que vocẽ quiser aqui.
  • bs=4K — abreviatura de block size (ou tamanho de cada bloco de dados), fornece o tamanho a ser usado para cada bloco. No nosso caso, 4096 bytes.
  • count=175000 — conta cada inserção de blocos 175000 vezes e encerra o comando.
    Para chegar a este número fizemos um cálculo: 700.000 Kb / 4 Kb (blocksize)

O /dev/zero é um arquivo especial, que provê caracteres ‘null’ (0x00).
Uma de suas funções é prover uma string de caracteres “neutros” para inicializar um sistema de armazenamento

Com o comando ls, já é possível observar o nosso novo arquivo:


ls -lh meudrive*

-rw-rw-r-- 1 justincase justincase 684M Mai 30 18:22 meudrive700 

Como criar um sistema de arquivos dentro do drive virtual

Para poder ser visto como “verdadeiro drive”, ele precisa comportar um sistema de arquivos.
Para isto, vamos usar o comando mkfs (make filesystem), que também aceita várias configurações e parâmetros de execução.
Se você deseja um sistema de arquivos swap, use o mkfs assim:


mkfs.btrfs --label="meudrive700" meudrive700

btrfs-progs v4.4                                                    
See http://btrfs.wiki.kernel.org for more information.              
                                                                    
Label:              meudrive700                                     
UUID:               8acf7d75-935c-4713-b211-aeeb0c7597ce            
Node size:          16384                                           
Sector size:        4096                                            
Filesystem size:    683.59MiB                                       
Block group profiles:                                               
  Data:             single            8.00MiB                       
  Metadata:         DUP              42.12MiB                       
  System:           DUP              12.00MiB                       
SSD detected:       no                                              
Incompat features:  extref, skinny-metadata                         
Number of devices:  1                                               
Devices:                                                            
   ID        SIZE  PATH                                             
    1   683.59MiB  meudrive700

Se você prefere o sistema de arquivos padrão de muitas distribuições, o ext4, use o comando assim:


mkfs.ext4 -L="meudrive700" meudrive700

mke2fs 1.42.13 (17-May-2015)                                        
meudrive700 contains a btrfs file system labelled 'meudrive700'     
Proceed anyway? (y,n) y                                             
fs_types for mke2fs.conf resolution: 'ext4'                         
Discarding device blocks: done 
Creating filesystem with 175000 4k blocks and 43776 inodes          
Filesystem UUID: 52117614-5508-4e8e-866a-1f9684410582               
Superblock backups stored on blocks:                                
        32768, 98304, 163840                                        
                                                                    
Allocating group tables: done                                       
Writing inode tables: done                                          
Creating journal (4096 blocks): done                                
Writing superblocks and filesystem accounting information: done    

Como já havia um sistema de arquivos habitando aquele espaço, o mkfs faz uma advertência e pede confirmação (y/n) para continuar.
Há várias outras possibilidades de formatação, com o mkfs. Leia mais sobre sistemas de arquivos no Linux para descobrir mais.
Leia também sobre as diferenças entre os sistemas de arquivos BTRFS e EXT4.

Como montar o meu novo drive virtual


sudo mount -t ext4 meudrive700 /mnt/
ls -lah /mnt/                         

total 20K                                                           
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .                          
drwxr-xr-x 1 root root  258 Mai 28 10:05 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

O Linux enxerga este arquivo como um dispositivo físico. Você pode gravar o que quiser dentro deste drive.

Para o UNIX (e o Linux também, claro), tudo é arquivo.

Como automatizar a montagem do meu drive virtual

Se você reiniciar a máquina, neste momento, não vai perder os eventuais dados que tiver gravado lá.
Contudo, vai precisar montar o drive, novamente, toda vez que bootar a máquina — caso queira usá-lo.
Se vocẽ acha incômodo fazer o procedimento manualmente, talvez prefira automatizá-lo. Para isso, basta inscrever o comando de montagem no fstab.
Abra o arquivo /etc/fstab e adicione as linhas


# montando o meu drive virtual
/home/justincase/meudrive700    /mnt/meudrive700        ext4    default     0     2

Acima, é necessário informar no fstab o caminho completo do arquivo que contém o meu drive (/home/justincase/meudrive700).
Optei também por criar um subdiretório dentro do /mnt para abrigar um ponto de montagem para o meu drive virtal (/mnt/meudrive700) — apenas achei que ficaria mais organizado assim.
O restante dos parâmetros na linha de comando, foram copiados da linha que monta o meu diretório /home: ext4 default 0 2.
Grave as alterações feitas no fstab e saia do editor.
Use o comando mount -a (para montar todas entradas do fstab, que ainda não estejam montadas):


sudo mount -a

[sudo] password for justincase:                                     

Ao rodar o ls, no drive, é possível notar que os arquivos dele pertencem ao root e, portanto, não será possível gravar nada lá dentro.


ls -lah /mnt/meudrive700/

total 20K
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .
drwxr-xr-x 1 root root   22 Mai 31 09:38 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

Use o chown para atribuir o drive ao seu usuário:


sudo chown justincase:justincase /mnt/meudrive700/
# agora, crie um arquivo em branco, só para testar:
touch /mnt/meudrive700/apague.me

Liste os arquivos do diretório, para ver se houve sucesso:


ls -lah /mnt/meudrive700/


total 20K
drwxr-xr-x 3 justincase justincase 4,0K Mai 31 10:24 .
drwxr-xr-x 1 root       root         22 Mai 31 09:38 ..
-rw-rw-r-- 1 justincase justincase    0 Mai 31 10:24 apague.me
drwx------ 2 root       root        16K Mai 30 18:37 lost+found

Se quiser entender melhor o funcionamento da ferramenta de criação de arquivos de sistemas, leia o post Como formatar drives com o mkfs.

Como aplicar compressão a partições btrfs

O Btrfs é um dos sistemas de arquivos mais importantes, com suporte incluído na maioria das distribuições Linux atuais.
Desde a versão do kernel Linux 2.6.38, ele passa a permitir a escolha do algoritmo de compressão: zlib ou lzo.
Este texto é voltado a quem já está usando o Btrfs em algum volume ou partição e deseja obter um melhor aproveitamento do espaço em disco, com o uso de seus recursos nativos de compressão.
Se você ainda não decidiu sobre o sistema de arquivos a usar, leia o artigo Qual sistema de arquivos escolher para meu novo drive SSD, onde faço uma comparação entre Btrfs, XFS, JFS e o tradicional EXT4.
Sistema de arquivos Btrfs - logo
Se você tem interesse específico no sistema de arquivos Btrfs, leia o texto Introdução ao sistema de arquivos Btrfs — Parte 2, onde abordamos na prática, outros recursos básicos deste sistema de arquivos.
Você ainda tem a opção de usar a caixa de busca do site para ler outros artigos sobre os sistemas de arquivos suportados no Linux (tem bastante coisa!) 😉

Os algoritmos de compressão do Btrfs

Este post baseia-se na minha experiência com o Btrfs instalado em um SSD, sob o sistema operacional Debian 8.3 “Jessie”, rodando o kernel 4.3, instalado a partir dos backports.
As opções de compressão do sistema de arquivos Btrfs, atualmente, são as seguintes:

  • compress=zlib — Oferece melhor taxa de compressão. Padrão do sistema.
  • compress=lzo — Método de compressão desenvolvido nos laboratórios da Fujitsu, oferece um nível de compressão mais baixo. É projetado para oferecer melhor desempenho de acesso e menos sobrecarga à CPU.
  • compress=no — indica que a compressão está desabilitada no sistema.
  • compress-force=<method> – Habilita o recurso até mesmo para arquivos que não respondem completamente ao processo de compressão — tais como imagens dd de disco, vídeos, arquivos mp3 etc.
    Esta opção pode ser usada a partir do kernel 2.6.38.
    A opção <method> pode ser zlib ou lzo.

Uma destas opções deve ser fornecida ao montar o seu sistema de arquivos ou pode ser inscrita no seu arquivo /etc/fstab.
Veja um exemplo de configuração de uma unidade SSD, usando Btrfs e compressão lzo:

cat /etc/fstab | grep btrfs

UUID=d36af294-1e99-4e60-af85-fd9964135dcf /               btrfs   defaults,compress=lzo        0       1

A menos que você use ‘compress-force’, o Btrfs não irá afetar arquivos que já tenham passado por algum processo de compressão anterior, tais como vídeos, músicas, imagens, backups etc.
Volumes com grande quantidade de arquivos multimídia, portanto, terão baixa taxa de compressão.
Você pode montar um sistema de arquivos Btrfs com compressão lzo, com o seguinte comando:

sudo mount -o compress=lzo /dev/sdb /mnt

Se você preferir o algoritmo de compressão zlib, use o seguinte:

sudo mount -o compress=zlib /dev/sdb /mnt

Uma vez que o zlib já é o padrão, ele não precisa ser mencionado. Por isto, o comando acima, também pode ficar assim:

sudo mount -o compress /dev/sdb /mnt

O mesmo se aplica ao fstab — se você não mencionar o algoritmo que deseja usar, o sistema irá escolher o lzo.
Leia o artigo Sobre o comando mount, se quiser saber mais sobre seu funcionamento.

Referências

Introdução ao sistema de arquivos ZFS.
https://btrfs.wiki.kernel.org/index.php/Mount_options.
https://wiki.archlinux.org/index.php/Btrfs.

Como usar o comando mount para visualizar, montar e desmontar sistemas de arquivos no Linux

O comando mount permite ver rapidamente e com riqueza de detalhes todos os sistemas de arquivos montados na sua máquina Linux.
Sua função primordial, contudo, não é essa.
Ele é muito mais usado para montar novos sistemas de arquivos.
Para desmontar, usa-se o comando umount.
comando-findmnt-para-listar-sistemas-de-arquivos-ativos

O modo listagem do comando mount

O modo de listagem do comando é mantido por questões de compatibilidade. Há outros métodos recomendados para listar os file systems ativos — como veremos, ainda neste texto.
Para usar o modo listagem, basta executar o comando sozinho:

mount

Ao usar o comando desta maneira, você vai notar que a quantidade de informações pode ser muito grande e, para quem só quer saber quais sistemas de arquivos estão ativos, este método não é mesmo o melhor.
Uma solução rápida para isto, compreende o uso do comando grep:

mount | grep -i '/dev/sd'

A saída deste comando é mais sucinta — inclui o os nomes dos sistemas de arquivos ativos e as opções de montagem, como você pode ver abaixo:

/dev/sdb1 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
/dev/sda2 on /home type ext4 (rw,relatime,data=ordered)
/dev/sdc on /media/justincase/BLUE type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

Você pode também especificar exatamente quais tipos de sistemas de arquivos deseja ver na sua listagem:

mount --types btrfs,ext4
/dev/sdb1 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/) [utraSSD]
/dev/sda2 on /home type ext4 (rw,relatime,data=ordered)

A documentação do comando mount, no entanto, sugere que se use o findmnt para listar os sistemas ativos.
Veja como o resultado é mais organizado:

findmnt | grep -i '/dev/sd'
/                                     /dev/sdb1  btrfs           rw,relatime,ssd,space_cache,subvolid=5,subvol=/
├─/home                               /dev/sda2  ext4            rw,relatime,data=ordered
└─/media/justincase/BLUE              /dev/sdc   vfat            rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro

Se você quiser, pode usar esta sequência dentro de um só comando ou alias, basta incluí-lo na ultima linha do arquivo .bashrc:

alias montados="findmnt | grep -i '/dev/sd'"

Com isto, toda vez em que você digitar ‘montados’, a linha de comando findmnt | grep -i '/dev/sd' é que será executada.
Não esqueça de reiniciar o Bash, para o alias funcionar — com ‘logout’ ou ‘exit’.

Os arquivos /etc/fstab, /etc/mtab and /proc/mounts

Cada um destes arquivos tem sua função dentro do sistema.
O arquivo /etc/fstab conterá linhas descrevendo quais dispositivos podem ser montados no seu sistema, aonde e de que modo podem ser montados.
Leia o artigo Como montar um drive pelo nome de volume para saber mais sobre o fstab.

Use também a caixa de busca deste site, para encontrar outros artigos que envolvem o uso do fstab e do mount.

Por fim, todos os sistemas de arquivos mencionados no fstab são montados na inicialização do sistema — desde que descritos apropriadamente e não tenham a tag noauto em sua linha descritiva.
O arquivo /etc/mtab contém a lista de sistemas de arquivos montados no sistema.
Embora ele ainda seja suportado na maioria das distribuições Linux, a documentação sugere que você busque estas referência no arquivo /proc/mounts.
Isto ocorre por que o arquivo mtab, mantido no espaço do usuário, não consegue trabalhar com confiabilidade com namespaces, contêineres e outros recursos avançados do Linux.
Combine os comandos cat e grep, para ver o conteúdo parcial deste arquivo:

cat /proc/mounts | grep -i /dev/sd

Se quiser entender melhor o funcionamento do sistema de arquivos proc, leia o artigo Como obter informações do sistema através do /proc.

Como montar dispositivos usando o mount

Nos dias atuais, é muito incomum o usuário ou o sysadmin ter que “mountar” manualmente algum dispositivo conectado ao sistema.
Pendrives, CDs, DVDs, cartões de memória flash etc. todos já entram funcionando e exibindo seu conteúdo.
Dispositivos locais podem ser montados seguindo a regra de indicar o endereço ao qual o dispositivo está conectado, ponto de montagem desejado e o tipo de sistema de arquivos.
Por exemplo, para montar um drive de CD (com a mídia dentro), use o seguinte comando:

sudo mount -t iso9660 /dev/cdrom /cdrom

O ISO 9660 também conhecido como ECMA-119 ou CDFS (Compact Disc File System) por alguns provedores de hardware e software, é uma norma de sistema de arquivos, publicado pela International Organization for Standardization, a ISO, para mídias de disco ótico — Wikipedia.

Para montar um drive flash externo, ligado à sua porta USB, com o sistema de arquivos VFAT, no endereço ‘/dev/sdc’, sob o ponto de montagem ‘/mnt’, use a seguinte linha de comando:

sudo mount -t vfat /dev/sdc /mnt/

Se você já tem alguma linha no seu fstab, descrevendo aquele dispositivo especificamente, você pode montá-lo informando apenas o ponto de montagem: mount /cdrom, por exemplo.
Todas as opções da linha, referente àquele dispositivo, serão usadas na montagem.
Há outros casos em que pode ser necessário usar o processo de montagem manual — quando queremos montar um sistema de arquivos remoto, via rede, por exemplo.
Há alguns exemplos disto no artigo Como montar e acessar o sistema de arquivos WebDAV, onde este processo é descrito.
Para desmontar um dispositivo, basta também fornecer apenas o nome do ponto de montagem:

sudo umount /cdrom

Como montar sistemas de arquivos sem ser superusuário

Como você deve ter notado, os exemplos mostram como montar dispositivos, acompanhados do comando sudo.
É possível dispensar isto, permitindo que qualquer usuário no sistema monte um dispositivo, sem a necessidade de invocar privilégios especiais.
Para isto, basta adicionar a opção ‘user’ à linha de opções de montagem daquele dispositivo no fstab.
Veja um exemplo:

/dev/cdrom  /cd  iso9660  ro,user,noauto,unhide

Com estas opções, é possível a qualquer usuário do sistema montar o cdrom, com o comando:

mount /cd

Note que a opção ‘user’ só vai permitir que o usuário que montou o dispositivo o desmonte posteriormente.
Se você quiser que todos os usuários possam desmontar aquele dispositivo, use a opção ‘users’ (no plural).

Como montar partições e drives NTFS no Linux

Qualquer distro Linux atual tem suporte completo a leitura e escrita em sistemas de arquivos Windows, o que inclui o NTFS.
Os exemplos que seguem, foram aplicados a uma máquina Ubuntu 14.04 LTS, mas valem para Debian, Fedora ou qualquer outra distro Linux popular e atualizada.
Como montar partição NTFS no Linux - capa do tutorial
Se você não estiver conseguindo realizar alguma operação com o drive, provavelmente falta algum módulo no seu kernel ou você não configurou algo adequadamente —. Neste texto, vou tentar mostrar algumas dicas de como montar partições NTFS, com todas as funções possíveis habilitadas.

Cuidados básicos ao montar drives ou partições NTFS ou FAT32

Uma vez montado o drive, o Linux irá mostrar arquivos e pastas (diretórios) que, no Windows, estariam escondidos — o que pode expor arquivos de sistema. Portanto, é importante ter cuidado para não apagar o que não deve.

O Windows 7 armazena o estado do sistema em um arquivo em disco, quando entra em hibernação.
Ao “acordar”, restaura seu estado a partir daquele arquivo.
Isto quer dizer que você pode perder alterações feitas, durante a hibernação, em um drive compartilhado em uma máquina Windows (versão 7 e superior). — Manual do Ubuntu.

Um típico HD Windows costuma ter uma partição chamada “SYSTEM“, com tamanho entre 100 e 200 megabytes. A menos que você saiba o que está fazendo, não há qualquer necessidade de montá-la no Linux. A mesma dica vale para partições de recuperação do sistema, que costumam ser chamadas de “RECOVERY“.

Sistemas de arquivos comuns no Windows

Basicamente, os sistemas de arquivos mais comuns em sistemas Windows são estes:

  • O Windows 7, Vista, XP 2000, antigos sistemas NT e o Windows Server 2003 e 2008, são formatados com NTFS. O FAT32 é raramente usado, como padrão, nestas versões.
  • As versões anteriores, raramente usam o NTFS — O padrão é o FAT32.
  • Drives e cartões flash (pendrives, cartões SD etc) são tipicamente formatados como FAT16. Em alguns casos, é usado o exFAT.

Você pode verificar quais sistemas de arquivos estão sendo usados nos drives e dispositivos conectados ao seu computador com o comando fdisk:

sudo fdisk -lu

A relação dos sistemas de arquivos conectados pode ser extensa. O exemplo abaixo, mostra informações de um pendrive, conectado em /dev/sdc1 (no meu sistema):

Disco /dev/sdc: 4009 MB, 4009754624 bytes
84 cabeças, 22 setores/trilhas, 4237 cilindros, total de 7831552 setores
Unidades = setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho da E/S (mínimo/ideal): 512 bytes / 512 bytes
Identificador do disco: 0x00054216

Dispositivo Boot      Início        Fim      Blocos   Id  Sistema
/dev/sdc1              62     7831551     3915745    7  HPFS/NTFS/exFAT

Use o comando grep para obter um resultado mais compacto:

sudo fdisk -l | grep -i ntfs
/dev/sdc1              62     7831551     3915745    7  HPFS/NTFS/exFAT

No decorrer deste artigo, vou usar este dispositivo como exemplo — não esqueça de adaptar os exemplos dados à situação do seu sistema.

Suporte a NTFS no Linux

O Linux usa o driver ntfs-3g para ler e alterar partições NTFS.
O driver vem pré-instalado em várias distribuições — no Ubuntu, ele é parte da distro desde a versão 11.10.
Se você estiver usando uma distro Linux atual, provavelmente não precisará fazer nada para trabalhar plenamente com dispositivos e partições NTFS.
Se você estiver tendo problemas para alterar dados em alguma partição NTFS, cheque se o pacote ntfs-3g se encontra instalado em seu sistema.

Configure o Linux para montar automaticamente os dispositivos e partições NTFS

Se você pretende manter o drive sempre conectado à sua máquina Linux e deseja que ele seja sempre montado na inicialização, configurar as opções de montagem no arquivo /etc/fstab é uma boa idéia.
Será necessário adicionar um linha para cada partição a ser montada, no arquivo fstab.
A documentação oficial do Ubuntu, enumera, pelo menos 3 razões para configurar o fstab, em vez de montar pelo seu gerenciador de arquivos (Nautilus, no Ubuntu):

  • Quando mais de uma conta de usuário estiver ativa durante uma sessão — com o uso do fstab, é possível montar uma vez só, para todo mundo poder usar.
  • Quando você tem softwares ou bibliotecas configurados para usar a partição ou o drive em questão, na inicialização, você vai querer que tudo esteja pronto para eles, sem a sua interferẽncia.
  • Conveniência de ter um procedimento a mais automatizado no seu sistema.

Como configurar o fstab

Uma das melhores formas de automatizar o processo de montagem de um drive ou partição no Linux é fazê-lo pelo seu nome de volume — isto é especialmente útil, quando se trata de um pendrive, que vai ser conectado/desconectado sempre.

Por ora, use o comando blkid, para saber mais sobre a localização das unidades que já se encontram conectadas ao seu sistema:

sudo blkid

No nosso exemplo, o dispositivo que interessa é o último da lista:

/dev/sda1: UUID="ce32e86c-e404-4f84-8125-74d0fc4897f7" TYPE="swap" 
/dev/sda2: UUID="a2ab821d-ae58-42fc-9384-f96dfcdc22cc" TYPE="ext4" 
/dev/sdb1: UUID="eb8e4cca-42c6-498d-b5ba-cd397096b3e9" TYPE="ext4" 
/dev/sdc1: LABEL="NTFS-FLASH" UUID="4D016F2B3DF4A3CE" TYPE="ntfs"

De acordo com a listagem, acima, a partição a ser configurada no fstab é a /dev/sdc1 que, neste caso, corresponde a um drive flash USB (pendrive) — note que o nome do volume (LABEL) é NTFS-FLASH e o seu UUID é 4D016F2B3DF4A3CE.
Comece por criar um ponto de montagem ou mountpoint para cada dispositivo, que você for configurar no fstab.
O ponto de montagem é um diretório, que pode ter qualquer nome. Eu gosto de usar um nome semelhante ao do volume a ser montado:

sudo mkdir /media/ntfsflash

A seguir, faça backup do fstab:

sudo cp /etc/fstab /etc/fstab.original

Agora, abra o fstab com o seu editor preferido (eu vou de nano:

sudo nano /etc/fstab

Agora adicione a seguinte linha ao arquivo do fstab, para montar o dispositivo pelo seu UUID:

UUID=4D016F2B3DF4A3CE  /media/ntfsflash  ntfs-3g  defaults,windows_names,locale=pt_BR.utf8  0 0

Não se esqueça de substituir o UUID e ponto de montagem /media/ntfsflash por valores adequados ao seu sistema.
Se o seu idioma não for português do Brasil, você vai precisar adequar esta variável também.
Use o comando locale para determinar qual o valor mais adequado para você:

locale | grep LANG

Quando terminar de editar o fstab, grave as alterações e feche o editor.
Para gravar as alterações no editor de textos nano, do Linux, use a combinação de teclas Ctrl+o. Para fechar e sair do editor, use Ctrl+x.

Exemplo de execução do comando blkid
Clique, para ver detalhes.

A nova configuração do fstab terá efeito na próxima inicialização do sistema.
Se você tiver pressa para ver o resultado, use o comando mount:

sudo mount -a

O comando, acima, monta todos (all) os dispositivos disponíveis que estejam citados no fstab.
Se quiser, use o comando mount, para verificar se o seu dispositivo foi montado:

mount
/dev/sdb1 on / type ext4 (rw,errors=remount-ro,discard)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)

...

/dev/sda2 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 /media/ntfsflash type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)

Como montar uma partição NTFS como apenas-leitura

Uma solução fácil para montar uma partição NTFS com restrição a escrita é usar driver NTFS antigo.
Substitua a linha que você adicionou ao fstab por esta:

UUID=4D016F2B3DF4A3CE  /media/ntfsflash  ntfs  defaults,umask=222  0 0

Novamente, não se esqueça de adequar o exemplo ao seu caso.
O método preferível é usar o driver atual e especificar que a partição deve permanecer apenas para leitura.
Coloque a cláusula ‘ro’, logo após ‘defaults’:

UUID=4D016F2B3DF4A3CE  /media/ntfsflash  ntfs-3g  defaults,ro,windows_names,locale=pt_BR.utf8  0 0

Isto irá permitir que o acesso ocorra em condições maiores de segurança ao sistema externo.

Como montar um drive ou partição NTFS na linha de comando do Linux

Para montar um dispositivo NTFS, usando um comando no terminal, use o exemplo abaixo.
Não esqueca de substituir os valores do exemplo dado pelos que se adequam ao seu sistema:

sudo mount -t ntfs-3g /dev/sdc1 /media/ntfsflash/

Você pode montar o dispositivo, com detecção automática do sistema de arquivos:

sudo mount -t auto /dev/sdc1 /media/ntfsflash/

Referências