Servidor de Mídia com 128 MB de RAM
Aqui, vamos nós nesse novo desafio, criar um servidor de mídia para ser acessado por vários dispositivos, como Xbox, PS3, celular, Laptop, TV, etc. Vamos fazer stream de vídeos, fotos e áudio na rede com um computador limitado a 128 MB de RAM, Pentium-3 850Mhz e 20 GB de HD.
Parte 5: HD como dispositivo permanente
Depois de configurado, devemos colocar os HDs como dispositivos permanentes no computador, assims sempre que o MySQL procurar pelos arquivoss ele vai encontrars já que o HD não é móvel, porém, instalado dentro do computador.
Caso você não tem a coragem de abrir a capa do seu HD externo e ligar ele como interno, ou se você está no meu caso, você tem um Laptop e não há espaço físico para HDs internos, gracas a Deus você usa o GNU/Linux, então, você pode fazer o computador reconhecer o seu HD e montar ele automaticamente na pasta correta.
Como fazer isso?
Primeiro, vamos descobrir o número único de identificação do seu HD. Ao conectar o USB do HD no computador, será designado um dispositivo para ele.
Para descobrir qual é, digite no terminal, logo depois de conectar o USB:
# dmesg | grep sd | grep GB
Você verá algo identificando seu HD como sdX, onde X é uma letra qualquer selecionada pelo sistema. Para o nosso exemplo, sdb.
* CUIDADO: você pode cometer algum erro nessa parte e identificar o HD errado, portanto, preste atenção qual é o dispositivo correto para os seus HDs. Veja o tamanho de cada um listado, para saber com certeza qual é qual.
No terminal, digite:
# blkid /dev/sdb1
Esse comado deve retornar algo como:
/dev/sdb1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
Algumas distros só autorizam os administradores do sistema usarem blkid, caso sua distro seja uma delas, digite o sudo antes do comando.
A parte importante aqui, é o UUID do seu HD, vamos usar ele no /etc/fstab. Na última linha do arquivo /etc/fstab, digite:
O formato é:
[UUID] [pasta para montar] [sistema de aquivo] [opções] [backup] [checar o sistema durante inicialização]
Considere que o meu HD já está formatado em ext4, assim sendo, eu coloquei o sistema de arquivos como ext4. Caso você não queira formatar o seu HD, por padrão, ele deve ter o sistema de arquivos como NTFS. Assim, a entrada no fstab deveria ser assim:
Permissões para NTFS e VFAT, devem ser configuradas por opções de dmask, fmask and umask.
Onde:
Um truque para saber o valor numérico das permissões para NTFS e VFAT: retire do valor 777, o valor da permissão que você quer no GNU/Linux.
Por exemplo, rwx para o dono dos arquivos e rw para os outros, em GNU/Linux seria 755, então, para o Windows, o equivalente seria:
777 - 755 = 022
Para fazer você ser o dono do dispositivo, use o UID e GID para usuários e grupos. Você pode achar o seu UID com o comando echo $UID. Para encontrar o GID, use cat /etc/group. Esses valores são geralmente 1000, para o seu usuário padrão.
Um ajuste muito comum para NTFS, é: uid=1000,gid=1000,dmask=027,fmask=137. Esse ajuste te faz o dono do drive, e dão as permissões drwxr-x---.
Agora você entende porque eu prefiro deixar o meu HD como ext4? Claro que, deixando ele como ext4, o meu HD só será reconhecido por sistemas como GNU/Linux. Se eu colocar ele em um Windows, o mesmo vai pedir de cara para você formatar o drive (nunca faça isso, ou você perde tudo em seu HD). Já no Mac, ele nem reconhece, salvo se o seu Mac tem drivers para ext* instalados.
Para evitar problemas como esse, quando eu coloco algum arquivo vindo de origem Windows ou Mac, eu acesso o meu HD pelo SSH. Já que SSH e SFTP, são tecnologias presentes em todos os três sistemas.
Para saber mais sobre o SSH, veja o artigo que eu escrevi sobre ele:
Você pode, então, usar programas como o FileZilla para transferir os seus arquivos; outra opção muito viável, se você tem outros computadores com o Windows ou Mac, é fazer uma pasta compartilhada usando o Samba.
Não vou entrar em detalhes nesse assunto, porque aí já seria um outro artigo dentro desse artigo. Mas a ideia, é a seguinte:
Monte os seus HDs em pastas criadas pelo root em /media/NN onde NN é o nome qualquer das pastas:
sudo mkdir -p /media/HD1
Mude a permissão para rwx (ler, escrever e executar) nessas pastas para todos os usuários e grupos:
sudo chmod 777 /media/HD1
Aponte o SSH, FTP ou Samba, para essas pastas:
SSH e FTP: Edite o arquivo /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Certifique que esta linha esteja presente:
E adicione estas linhas para o seu usuário:
Se você tem vários usuários, não precisa fazer um por um, apenas adicione o grupo ao qual eles todos pertencem.
Samba: edite o /etc/samba/smb.conf:
sudo nano /etc/samba/smb.conf
No final do arquivo, onde você deve criar o compartilhamento, escreva:
Essas opções são para tornar o seu HD público na rede, assim, todos têm acesso a ele.
Caso você queira modificar alguns detalhes, como guest ok = no, create mask, etc, fique à vontade. Como eu disse, não vou me aprofundar nestes detalhes, uma procura aqui no VOL vai dar as respostas que você quer. Ou mande uma mensagem neste artigo e eu vou tentar te ajudar no que estiver a meu alcance.
Agora, o passo final. :)
Caso você não tem a coragem de abrir a capa do seu HD externo e ligar ele como interno, ou se você está no meu caso, você tem um Laptop e não há espaço físico para HDs internos, gracas a Deus você usa o GNU/Linux, então, você pode fazer o computador reconhecer o seu HD e montar ele automaticamente na pasta correta.
Como fazer isso?
Primeiro, vamos descobrir o número único de identificação do seu HD. Ao conectar o USB do HD no computador, será designado um dispositivo para ele.
Para descobrir qual é, digite no terminal, logo depois de conectar o USB:
# dmesg | grep sd | grep GB
Você verá algo identificando seu HD como sdX, onde X é uma letra qualquer selecionada pelo sistema. Para o nosso exemplo, sdb.
* CUIDADO: você pode cometer algum erro nessa parte e identificar o HD errado, portanto, preste atenção qual é o dispositivo correto para os seus HDs. Veja o tamanho de cada um listado, para saber com certeza qual é qual.
No terminal, digite:
# blkid /dev/sdb1
Esse comado deve retornar algo como:
/dev/sdb1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
Algumas distros só autorizam os administradores do sistema usarem blkid, caso sua distro seja uma delas, digite o sudo antes do comando.
A parte importante aqui, é o UUID do seu HD, vamos usar ele no /etc/fstab. Na última linha do arquivo /etc/fstab, digite:
UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" /media/HD ext4 defaults,nobootwait,noatime 0 0
O formato é:
[UUID] [pasta para montar] [sistema de aquivo] [opções] [backup] [checar o sistema durante inicialização]
Considere que o meu HD já está formatado em ext4, assim sendo, eu coloquei o sistema de arquivos como ext4. Caso você não queira formatar o seu HD, por padrão, ele deve ter o sistema de arquivos como NTFS. Assim, a entrada no fstab deveria ser assim:
UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" /media/HD ntfs defaults,uid=1000,gid=1000,dmask=022,nobootwait 0 0
Permissões para NTFS e VFAT, devem ser configuradas por opções de dmask, fmask and umask.
Onde:
- dmask controla as permissões dos diretórios.
- fmask controla as permissões dos arquivos.
- umask controla os dois.
Um truque para saber o valor numérico das permissões para NTFS e VFAT: retire do valor 777, o valor da permissão que você quer no GNU/Linux.
Por exemplo, rwx para o dono dos arquivos e rw para os outros, em GNU/Linux seria 755, então, para o Windows, o equivalente seria:
777 - 755 = 022
Para fazer você ser o dono do dispositivo, use o UID e GID para usuários e grupos. Você pode achar o seu UID com o comando echo $UID. Para encontrar o GID, use cat /etc/group. Esses valores são geralmente 1000, para o seu usuário padrão.
Um ajuste muito comum para NTFS, é: uid=1000,gid=1000,dmask=027,fmask=137. Esse ajuste te faz o dono do drive, e dão as permissões drwxr-x---.
Agora você entende porque eu prefiro deixar o meu HD como ext4? Claro que, deixando ele como ext4, o meu HD só será reconhecido por sistemas como GNU/Linux. Se eu colocar ele em um Windows, o mesmo vai pedir de cara para você formatar o drive (nunca faça isso, ou você perde tudo em seu HD). Já no Mac, ele nem reconhece, salvo se o seu Mac tem drivers para ext* instalados.
Para evitar problemas como esse, quando eu coloco algum arquivo vindo de origem Windows ou Mac, eu acesso o meu HD pelo SSH. Já que SSH e SFTP, são tecnologias presentes em todos os três sistemas.
Para saber mais sobre o SSH, veja o artigo que eu escrevi sobre ele:
Você pode, então, usar programas como o FileZilla para transferir os seus arquivos; outra opção muito viável, se você tem outros computadores com o Windows ou Mac, é fazer uma pasta compartilhada usando o Samba.
Não vou entrar em detalhes nesse assunto, porque aí já seria um outro artigo dentro desse artigo. Mas a ideia, é a seguinte:
Monte os seus HDs em pastas criadas pelo root em /media/NN onde NN é o nome qualquer das pastas:
sudo mkdir -p /media/HD1
Mude a permissão para rwx (ler, escrever e executar) nessas pastas para todos os usuários e grupos:
sudo chmod 777 /media/HD1
Aponte o SSH, FTP ou Samba, para essas pastas:
SSH e FTP: Edite o arquivo /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Certifique que esta linha esteja presente:
Subsystem sftp /usr/lib/openssh/sftp-server
E adicione estas linhas para o seu usuário:
Match User mauricio
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Se você tem vários usuários, não precisa fazer um por um, apenas adicione o grupo ao qual eles todos pertencem.
Match Group users
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Samba: edite o /etc/samba/smb.conf:
sudo nano /etc/samba/smb.conf
No final do arquivo, onde você deve criar o compartilhamento, escreva:
[HD1]
comment = Primeiro HD
path = /media/HD1
force user = nobody
force group = nogroup
read only = No
create mask = 0664
directory mask = 0775
guest ok = Yes
comment = Primeiro HD
path = /media/HD1
force user = nobody
force group = nogroup
read only = No
create mask = 0664
directory mask = 0775
guest ok = Yes
Essas opções são para tornar o seu HD público na rede, assim, todos têm acesso a ele.
Caso você queira modificar alguns detalhes, como guest ok = no, create mask, etc, fique à vontade. Como eu disse, não vou me aprofundar nestes detalhes, uma procura aqui no VOL vai dar as respostas que você quer. Ou mande uma mensagem neste artigo e eu vou tentar te ajudar no que estiver a meu alcance.
Agora, o passo final. :)
Ótimo artigo. À medida em que lia, já esquematizava minha instalação aqui.
Grato pela ideia, vou poder guardar as pilhas de cds e dvds (acho até que vou digitalizar alguns VHSs familiares).
Só não tenho um Nobo/Lap "Véio".
Mesmo assim vou montar numa VB e depois que arrumar
um hardware (Lap ou Desk) passo para ele.
Vou seguir os mesmos passos usando o Debian.
Dica para o config do Apache (roda assim em 2 servers de produção):
MaxSpareServers 3
MinSpareServers 1
StartServers 1
Essa config atende um escritório com 8 estações.
Quanto aos aplicativos clientes pretendo utilizar tambem o Audacious e o Kaffeine.
Acredito que voce tenha despendido de 2 a 3 semanas de tempo no seu projeto.
Na medida em que o tempo me permitir passarei os resultados, penso que demorarei uma ou duas semanas.
Abraço