|
![]() ![]() |
E-mail: contato@tmsoft.com.br Copyright: Proibida a cópia ou reprodução do conteúdo ou parte dele, exceto se o nome do autor, e-mail e este aviso constarem na cópia. Particionar um disco e montar suas partições pode parecer fácil, mas se mal operado pode destruir todo os sistema de arquivos de um servidor. No tutorial usarei como exemplo a utilização de um disco de 1.5 Teras dividido em 3 partições de 500 Gigas cada um (500 Gigas para /cache, 500 Gigas para /supercache e 500 Gigas para /supercache/youtube). Leia o tutorial com atenção e não execute nenhuma operação em caso de dúvidas. 1 - Como funciona o particionamento de discos Discos rígidos e memórias sólidas (memória flash) são constituidos por um longo meio magnético onde os bytes serão armazenados. No entento, os bytes não poderão simplesmente serem gravados no meio. Será necessário organizar logicamente o meio antes de utilizá-lo. Para explicar melhor o funcionamento, vou usar numa analogia simples: imagine que você tem um disco de 500 Gigabytes recem adquirido que totalmente limpo, sem nenhum byte gravado. Esse disco será como uma planicie totalmente capinada de 500 Hectares onde se criará vários tipos de animais. Como não podemos misturá-los, delimitaremos áreas específicas para cada tipo de gado. Bois serão criados com limites de 200 Hectares, ovelhas serão criadas com 100 Hectares a os demais hectares (200) serão usados para plantio. A delimitação dessas áreas de acordo com seu tipo é o que chamamos de tipo de partição. Há vários tipos de partições, pois cada tipo tem um algorítmo próprio e uma maneira diferente de organizar os arquivos no espaço físico, assim como criar bois requer cuidados diferentes de criar ovelhas. Uma partição precisa ser associada a um caminho lógico para que os arquivos sejam acessíveis pelo usuário: - O sistema operacional Microsoft Windows usa o tipo de partição NTFS e normalmente formata o disco inteiro com uma única partição, atribuindo a essa partição um nome lógico: uma letra (C:, D:, E:) - No Linux há vários tipos de partições (Ext2, Ext3, Ext4, ReiserFS), cada partição é associada a uma pasta, e normalmente a partição principal é montada na pasta "/" O Linux permite que uma pasta seja montada dentro de outra pasta, separando assim os volumes. Exemplo: - Possuimos 2 discos de 100 Gigas. - O primeiro disco (disco 1) foi particionado com um única partição, montada no "/" - O segundo disco (disco 2) foi particionado com duas partições de 50 Gigas cada uma, a primeira foi montada na pasta /var/ e a segunda em /var/cache/ Veja como os arquivos serão direcionadas para seus respectivos discos: - A pasta "/var/" é uma sub-pasta de "/", porem seu conteúdo ficará na primeira partição do disco 2, pois "/var" está montada na primeira partição do disco 2 - A pasta "/var/cache/" é uma subpasta de "/var", porem seu conteúdo ficará na segunda partição do disco 2. 2 - Como particionar um disco Todo disco rígido tem um espaço inicial que é reservado para armazenar informações sobre as partições que foram criadas e seus tipos. Esse espaço se chama MBR (Master Boot Record). Quando se particiona um disco, mesmo que ele tenha 1 Tera, o unico lugar que realmente é alterado é a MBR. Apagar a MBR significa perder os limites de cada partição, e usando a antiga analogia, bois e ovelhas se misturariam. Os dois comandos mais simples para particionar discos em Linux são: - cfdisk - possui interface de menus, mais amigável para usuários iniciantes - fdisk - interface completa e rápida, em linha de comandos simples (cada comando tem apenas 1 caracter) Atenção: nunca particione um disco onde uma de suas partições estejam em uso. No próximo boot o sistema poderá ficar indisponível. Antes de particionar, é necessário listar os discos disponíveis. Veja o exemplo: root@servidor:~# fdisk -l Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000080 Device Boot Start End Blocks Id System /dev/sda1 1 124 995998+ 83 Linux /dev/sda2 125 9242 73240335 83 Linux /dev/sda3 9243 9434 1542240 82 Linux swap /dev/sda4 9435 19457 80509747+ 83 Linux Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes 255 heads, 63 sectors/track, 182401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xfa861828 Device Boot Start End Blocks Id SystemNote que o primeiro disco (/dev/sda - 160 Gigabytes) possui 4 partições, e o segundo disco (/dev/sdb - 1500 Gigabytes ou 1.5 Terabytes) não possui nenhuma partição. Neste exemplo, iremos particionar o segundo disco (/dev/sdb) para ser utilizado como cache de arquivos. Para particioná-lo, é necessário digitar o comando de particionamento seguido da referência do arquivo. Usarei o fdisk para exemplificar. Comandos básicos do fdisk p Exibir lista de partições d Deleta uma partição, se houver apenas uma ela será deletada w Grava as alterações realizadas e finaliza o fdisk n Criar nova partição t Alterar tipo da partição (códigos comuns: 82=swap, 83=linux) q Finalizar o fdisk sem salvar as últimas alteraçõesUtilizando a ajuda acima, particionaremos o disco de 1.5 Teras com 3 partições de 500 Gigas cada. Veja os comandos utilizados (comandos digitados estão em vermelho, onde aparecer <ENTER>, apenas aperte a tecla ENTER): root@servidor:~# fdisk /dev/sdb The number of cylinders for this disk is set to 182401. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p<ENTER> Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes 255 heads, 63 sectors/track, 182401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xfa861828 Device Boot Start End Blocks Id System Command (m for help): n<ENTER> Command actionParticionamento concluido. O comando "w" é responsável por gravar na MBR do disco /dev/sdb o novo esquema de partições. Agora que as partições foram criadas com o tipo "Linux", será necessário escolher o sistema de arquivos que irá gerenciar o espaço particionado. As opções de comandos para formatação do sistema de arquivos são: mkfs.reiserfs Particiona com sistema de arquivos ReiserFS (recomendado) mkfs.ext2 Particiona com sistema de arquivos Ext2 mkfs.ext3 Particiona com sistema de arquivos Ext3 mkfs.ext4 Particiona com sistema de arquivos Ext4Vamos formatar as 3 partições com ReiserFS: root@servidor:~# mkfs.reiserfs /dev/sdb1 mkfs.reiserfs 3.6.19 (2003 www.namesys.com) A pair of credits: Joshua Macdonald wrote the first draft of the transaction manager. Yuri Rupasov did testing and benchmarking, plus he invented the r5 hash (also used by the dcache code). Yura Rupasov, Anatoly Pinchuk, Igor Krasheninnikov, Grigory Zaigralin, Mikhail Gilula, Igor Zagorovsky, Roman Pozlevich, Konstantin Shvachko, and Joshua MacDonald are former contributors to the project. Alexander Zarochentcev (zam) wrote the high low priority locking code, online resizer for V3 and V4, online repacker for V4, block allocation code, and major parts of the flush code, and maintains the transaction manager code. We give him the stuff that we know will be hard to debug, or needs to be very cleanly structured. Guessing about desired format.. Kernel 2.6.21.5-smp is running. Format 3.6 with standard journal Count of blocks on the device: 2441504 Number of blocks consumed by mkreiserfs formatting process: 8286 Blocksize: 4096 Hash function used to sort names: "r5" Journal Size 8193 blocks (first block 18) Journal Max transaction length 1024 inode generation number: 0 UUID: a05d06c2-3ad1-442c-b8a3-1178f19912ee ATTENTION: YOU SHOULD REBOOT AFTER FDISK! ALL DATA WILL BE LOST ON '/dev/sdb1'! Continue (y/n):y<ENTER> Initializing journal - 0%....20%....40%....60%....80%....100% Syncing..ok Tell your friends to use a kernel based on 2.4.18 or later, and especially not a kernel based on 2.4.9, when you use reiserFS. Have fun. ReiserFS is successfully created on /dev/sdb1.Exemplo de particionamento sem mensagens de aviso: root@servidor:~# mkfs.reiserfs -q /dev/sdb2 root@servidor:~# mkfs.reiserfs -q /dev/sdb3Agora as 3 partições estão prontas para serem utilizadas. 3 - Como montar partições em pastas Ao montar uma partição em uma pasta, todos os arquivos gravados nessa sub-pasta serão salvos a partir do momento da montagem. As regras para montar uma partição em uma pasta são: 1 - a pasta tem que estar vazia no momento da montagem. 2 - a partição deve estar devidamente formatada e integra. Exemplo de montagem: root@servidor:~# mkdir /supercache root@servidor:~# mount /dev/sdb1 /supercacheExplicação: o primeiro comando criou uma pasta vazia, o segundo comando montou a primeira partição do disco /dev/sdb nessa pasta. Para verificar se a montagem aconteceu, use o comando "df" root@servidor:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 69G 24G 42G 37% / /dev/sdb1 500G 0G 500G 0% /supercache tmpfs 994M 0 994M 0% /dev/shmNos dois exemplos acima, a pasta foi montada manualmente. Montar manualmente uma pasta significa que se o servidor for reiniciado o Linux perderá a informação sobre a montagem. Há um arquivo cujo caminho é "/etc/fstab" cuja responsabilidade é montar corretamente as partições durante o processo de boot. Para que a montagem seja perfeita, é necessário cadastrá-lo nesse arquivo. Atenção: muito cuidado ao alterar o /etc/fstab, danos nesse arquivo causam erro no boot e são muito difíceis de corrigir. Exemplo de /etc/fstab imitando a montagem realizada acima (observe apenas a linha destacada da pasta /supercache, ignore as demais): /dev/sda2 / ext3 defaults 1 1 /dev/sdb1 /supercache reiserfs defaults 1 1 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 Para concluir nosso exemplo. Vamos finalizar a montagem das partições restantes nas pasta /cache e /arquivos: root@servidor:~# mkdir /cache root@servidor:~# mkdir /supercache/youtubeEditando o /etc/fstab para as 2 partições restantes: /dev/sda2 / ext3 defaults 1 1 /dev/sdb1 /supercache reiserfs defaults 1 1 /dev/sdb2 /cache reiserfs defaults 1 1 /dev/sdb3 /supercache/youtube reiserfs defaults 1 1 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0Como não fizemos a montagem manual das pasta /cache e /supercache/youtube, podemos utilizar o comando a seguir para montá-las automaticamente: root@servidor:~# mount -aResultado das montagens: root@servidor:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 69G 24G 42G 37% / /dev/sdb1 500G 0G 500G 0% /supercache /dev/sdb2 500G 0G 500G 0% /cache /dev/sdb3 500G 0G 500G 0% /supercache/youtube tmpfs 994M 0 994M 0% /dev/shm |