recuperação tabela mysql a partir do arquivo *.frm

September 10, 2014 1 comment

Ola pessoal, sempre coloco post com nomes intuitivo ou sugestivo hoje como estou com pressa fui bem direto :D. Tive um problema com meu cacti que a tabela poller_output estava dando erro no cacti mesmo um recover me informava a seguinte mensagem.

mysql> repair table poller_output USE_FRM;
+———————+——–+———-+——————+
| Table | Op | Msg_type | Msg_text |
+———————+——–+———-+——————+
| cacti.poller_output | repair | Warning | Can’t open table |
| cacti.poller_output | repair | status | Operation failed |
+———————+——–+———-+——————+
2 rows in set (0.00 sec)

mysql>

Mesmo tentando recuperar não foi possivel olhando os arquivos fisicamente no disco notei que somente existia um arquivo somente chamado poller_output.frm. Para ser bem resumido existem 2 engine de armazenamento: MyISAM, InnoDB. O InnoDB joga tudo em um arquivo somente. Já o MyISAM utiliza três arquivos:

 

Extensão do arquivo Finalidade
.frm Definicao de tabela
.MYD Tabela de dados
.MYI Tabela de índices

No meu caso o cacti utiliza tabelas em MyISAM, então dos três arquivos somente tinha 1 o .frm :D. Para recover da definicao de tabela você precisa utilizar o utilitário mysqlfrm que vem no pacote mysql-utilities disponivel em http://dev.mysql.com/downloads/utilities/. Aí você me diz? mas para saber a definição da tabela e so ir na console do mysql e digitar o comando desc poller_output! que burro ricardo 😀 Aí te digo foi a primeira coisa que tentei 😀

mysql> desc poller_output;
ERROR 1017 (HY000): Can’t find file: ‘poller_output’ (errno: 2)
mysql>

Entao baixe o mysql-utilities instale e rode o comando.

root@apolo:/var/lib/mysql/cacti# mysqlfrm –diagnostic poller_output.frm
# WARNING: Cannot generate character set or collation names without the –server option.
# CAUTION: The diagnostic mode is a best-effort parse of the .frm file. As such, it may not identify all of the components of the table correctly. This is especially true for damaged files. It will also not read the default values for the columns and the resulting statement may not be syntactically correct.
# Reading .frm file for poller_output.frm:
# The .frm file is a TABLE.
# CREATE TABLE Statement:

CREATE TABLE `poller_output` (
`local_data_id` mediumint(8) unsigned NOT NULL,
`rrd_name` varchar(19) NOT NULL,
`time` datetime NOT NULL,
`output` text,
PRIMARY KEY `PRIMARY` (`local_data_id`,`rrd_name`,`time`)
) ENGINE=MyISAM;

#…done.
root@apolo:/var/lib/mysql/cacti#

Pronto de posse da definição da tabela recrie a tabela na console do mysql. Mas e os dados? bem não sei que quedas dágua deu que sumiu meu .MYD, como são dados de monitoramento e “aceitavel”, caso contrario eu teria um backup 😀

Vlw

Telemetria para nerd

July 25, 2014 1 comment

 

Ola pessoal, venho aqui novamente postar algo que eu considero relativamente importante, iremos aprender como criar ou plotar graficos. O título talvez nao tenha nada haver apesar que eu discordo. O software que iremos estudar é o rrdtool. RRDtool é um banco de dados Round Robin. A tecnologia Round robin funciona com uma quantidade pre-determinada de dados, e um ponteiro para a posicao atual. Imagine um anel ou circulo com posições, onde cada posicao no circulo armazena dados. Quando os dados são lidos posição por posicao os dados podem ser armazandos ou lidos. Depois de um tempo, todas as posiçoes disponíveis serão reutilizados e o processo continua. RRDtool utiliza arquivos rrd. RRDtool foi desenvolvido por Tobias Oetiker. Para o nosso exemplo vamos imaginar o circuito de Monaco, e vamos coletar os km percorridos.

monaco3

Como a formula 1 pra mim ultimamente anda sem emoção e sem graça, vamos ser praticos, digamos que a mclaren percorre o circuito e coletamos os seguintes dados a cada passagem pela linha de chegada:

 

Horário Timestamp Distancia(m)
 11:47  1406303220  4000
 11:51  1406303460  7400
 11:56  1406303760  11200
 12:02  1406304120  15230
 12:07  1406304420  18000
12:12  1406304720  21400
12:17  1406305020  25400
12:22  1406305320  28600
12:27  1406305620  32100
12:32  1406305920  35700
12:37  1406306220  39000
12:42  1406306520  43150
12:47  1406306820  47001
12:52  1406307120  50600
12:57 1406307420  54000

Após a coleta vamos criar nosso arquivo rrd. Criamos com o comando rrdtool,iremos criar um arquivo rrd chamdo monaco.rrd, que inicia no dia 2014/07/25 as 11:47:00 no qual e utilizado timestmap ou epoch unix se voce nao sabe do que eu estou falando leia meu post sobre epoch. Para nosso arquivo rrd iremos criar um datasource ou DS de nome dados e tipo COUNTER o qual é um contador, o qual é lido a cada 5 minutos que é o padrão, na mesma base de dados criamos 1 conjunto de dados RRA. A “amostra” RRA ira conter a média(AVERAGE) e contém 24 amostras( 24 vezes amostras de 5 minutos totalizando 2 horas). Segue comando

rrdtool create monaco.rrd –start 1406303220 DS:dados:COUNTER:600:U:U RRA:AVERAGE:0.5:1:24

Fico muito confuso né, vamos tentar melhorar isso digamos que mude e deixar a parte RRA assim

RRA:AVERAGE:0.5:6:10

O restante do comando definiremos abaixo

  • –start: define o inicio do arquivo rrd quando ele começa
    DS: datasource existe alguns tipo nao vou mencionar isso e um inicio fico para vc olhar no site RRDTool, mas alguns deles que posso citar são COUNTER, ABSOLUTE, etc.
  • O DS tem um formato:
  • DS:nomedoDS:heartbeat:Min:Max
  • NomedoDS: nome quaisquer para o DS
  • Heartbeat: Se em 300 segundos conforme nosso exemplo e o comportamento default, e esperar 300 segundos(5 minutos), para receber uma coleta, caso contrario nao receba nenhum dado ele ira esperar mais heartbeat segundos.
  • Min: Valor minimo da coleta
  • Max: Valor maximo da coleta

Isso diz para armazenar 6 coletas de 5 minutos(que é o período de coleta), tipo depois de 6 coletas vc guarda uma como a média, e guarde 10 valores de média. Acho que agora ficou bom né 🙂

Bom vamos agora colocar dados no nosso banco de dados RRD, novamente com o comando rrdtool

rrdtool update monaco.rrd 1406303220:4000 1406303460:7400 1406303760:11200
rrdtool update monaco.rrd 1406304120:15230 1406304420:18000 1406304720:21400
rrdtool update monaco.rrd 1406305020:25400 1406305320:28600 1406305620:32100
rrdtool update monaco.rrd 1406305920:35700 1406306220:39000 1406306520:43150
rrdtool update monaco.rrd 1406306820:47001 1406307120:50600 1406307420:54000

Vamos visualizar o que foi inserido com o comando “rrdtool fetch”.

 

[ricardobarbosa@shark ~]$ rrdtool fetch monaco.rrd AVERAGE –start 1406303400 –end 1406307900
dados

1406303700: -nan
1406304000: -nan
1406304300: 9.2333333333e+00
1406304600: 1.0493333333e+01
1406304900: 1.2533333333e+01
1406305200: 1.1733333333e+01
1406305500: 1.1266666667e+01
1406305800: 1.1866666667e+01
1406306100: 1.1400000000e+01
1406306400: 1.2700000000e+01
1406306700: 1.3235333333e+01
1406307000: 1.2332666667e+01
1406307300: 1.1598666667e+01
1406307600: -nan
1406307900: -nan
1406308200: -nan
[ricardobarbosa@shark ~]$

O que são esses dados? vamos pegar o primeiro caso para entender. Vamos fazer o delta ou calculo de uma velocidade média

 11:47  1406303220  4000
 11:51  1406303460  7400

Tempo

1406303220-1406303460=240

Distância

7400-4000=3400

Velocidade média = 3400/240 aproximamente 10 por ele faz a média entre os 300 segundos ele normaliza os dados, um detalhe, quando crio o arquivo por default ele usa o intervalo de captura como 300 segundos o que acontece se nesses 300 segundos não for detectado nenhum dado? ele espera mais 300 segundos devido a configuração de heartbeat(DS:dados:COUNTER:600:U:U)

Agora vamos gerar o gráfico.

rrdtool graph monaco.png –start 1406303400  –end 1406307900 DEF:dadosgraph=monaco.rrd:dados:AVERAGE LINE2:dadosgraph#FF0000

 

Temos várias opções de grafico como LINE2, GAUGE, etc assim como DST e tipos de DS

Veja o gráfico

monaco

 

O rrdtool e muito extenso cheio de detalhes que seria dificil falar tudo aqui, caso tenha dúvidas de uma olhada no site rrdtool ou comments 😀

Categories: Uncategorized

Desativar IPV6

Ola um post rápido e que não acho interessante mas já tive que fazer isso por necessidade. Desativar o IPv6. Para desativar o suorte IPv6 no Ubuntu e na maioria das distros, edite o aqruivo /etc/sysctl.conf.

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

Estas linha adicionadas desativarão o suporte IPv6 em loopback, no padrão por todas as interfaces eth disponíveis. Um reinicio das interfaces redes é necessária:

/etc/init.d/networking restart

Ele modifica na realidade os seguintes arquivos modificando o conteúdo de 0 à 1 :

/proc/sys/net/ipv6/conf/lo/disable_ipv6
/proc/sys/net/ipv6/conf/all/disable_ipv6

/proc/sys/net/ipv6/conf/default/disable_ipv6

Comandos :

echo ‘1’ > /proc/sys/net/ipv6/conf/lo/disable_ipv6
echo ‘1’ > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo ‘1’ > /proc/sys/net/ipv6/conf/default/disable_ipv6

Att.

Categories: Uncategorized

Medindo o tempo de cada volta :P

June 10, 2014 1 comment

Nesse post e mais uma referência e um pre-requisito para um futuro post sobre RRDTool, Estou criando um sistema de monitoramento para plataforma GEPON(um outro post explico o que é GEPON), e estou fazendo uso do RRDTool, e aprender como o tempo flui num sistema Linux/Unix e primordial. Algumas documentações descrevem que o tempo no UNIX e um contador que iniciou no primeiro minuto do dia 01 de janeiro de 1970, de lá pra cá esse contador somente vem aumentando. Como podemos ver esse contador ? Bom existe várias formas, várias linguagem de programação nos dão essa informação mas para começar vamos pro bash. Para visualizar o epoch(é o nome dado a esse sistema de contagem de tempo no Unix, algumas literaturas utilizam o nome timestamp para representar) pode ser visualizado com o comando “date”.

root@shark ~# date +%s
1402330971
root@shark ~# date +%s
1402330972
root@shark ~# date +%s
1402330973
root@shark ~# date +%s
1402330974
root@shark ~# date +%s
1402330975
root@shark ~# date +%s
1402330977
root@shark ~#

 

É possivel obter o epoch de determinado período:

root@apolo:~# date -d “2014/07/25 12:57” “+%s”
1406307420
root@apolo:~#

Repare que o valor final começou em 971 e foi incrementando até 977 e isso pro resto da vida ate completar todas os 32 bits que é um numero inteiro utilizado para representar o epoch. Existe uma expectativa para o epoch durar até 2038. Mas até lá talvez teremos um novo bug do milênio :P.
Existe um site que permite você converter facilmente entre um formato para humanos lerem e outras para as máquinas, http://www.epochconverter.com/ no site também ele possue como obter o valor em algumas
linguagens de programação, vou colocar aqui para referência:

Para obter o epoch em algumas linguagem:

PHP time()
Python import time first, then time.time()
Ruby Time.now (or Time.new). To display the epoch: Time.now.to_i
Perl time more …
Java long epoch = System.currentTimeMillis()/1000;
C# var epoch = (DateTime.UtcNow – new DateTime(1970, 1, 1)).TotalSeconds;
Objective-C [[NSDate date] timeIntervalSince1970]; (returns double) or NSString *currentTimestamp = [NSString stringWithFormat:@”%f”, [[NSDate date] timeIntervalSince1970]];
C++11 double now = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count();
VBScript/ASP DateDiff(“s”, “01/01/1970 00:00:00”, Now())
AutoIT _DateDiff(‘s’, “1970/01/01 00:00:00”, _NowCalc())
Delphi Epoch := DateTimetoUnix(Now); Tested in Delphi 2010.
R as.numeric(Sys.time())
Erlang calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.
MySQL SELECT unix_timestamp(now()) more …
PostgreSQL SELECT extract(epoch FROM now());
SQLite SELECT strftime(‘%s’, ‘now’);
Oracle PL/SQL SELECT (SYSDATE – TO_DATE(’01/01/1970 00:00:00′, ‘MM-DD-YYYY HH24:MI:SS’)) *
24 * 60 * 60 FROM DUAL
SQL Server SELECT DATEDIFF(s, ‘1970-01-01 00:00:00’, GETUTCDATE())
JavaScript Math.round(new Date().getTime()/1000.0) getTime() returns time in milliseconds.
Visual FoxPro DATETIME() – {^1970/01/01 00:00:00} Warning: time zones not handled correctly
Adobe ColdFusion
Tcl/Tk clock seconds
Unix/Linux Shell date +%s
PowerShell get-date (get-date).touniversaltime() -uformat “%s”
Other OS’s Command line: perl -e “print time” (If Perl is installed on your system)

Existe também no site a opção para conversão de um formato para outro em python

>>> import time
>>> int(time.mktime(time.strptime(‘2000-01-01 12:34:00’, ‘%Y-%m-%d %H:%M:%S’)))
946740840
>>> time.strftime(“%a, %d %b %Y %H:%M:%S +0000”, time.localtime(946740840))
‘Sat, 01 Jan 2000 12:34:00 +0000’
>>>

Primeiro convertemos o formato humando para epochs e depois de epoch para formato humando 😀
Vou deixar aqui também para referencia as conversões

Converter a partir do formato humano para epoch:

PHP strtotime(“15 November 2012”) (converts most English date texts) or:
date_create(’01/15/2010′)->format(‘U’) (PHP5 DateTime class)
Python import time first, then int(time.mktime(time.strptime(‘2000-01-01 12:34:00’, ‘%Y-%m-%d %H:%M:%S’))) – time.timezone
Ruby Time.local(year, month, day, hour, minute, second, usec ) (or Time.gm for GMT/UTC input). To display add .to_i
Perl Use the Perl Epoch routines
Java long epoch = new java.text.SimpleDateFormat(“MM/dd/yyyy HH:mm:ss”).parse(“01/01/1970 01:00:00”).getTime() / 1000;
VBScript/ASP DateDiff(“s”, “01/01/1970 00:00:00”, time field) More info
AutoIT _DateDiff(‘s’, “1970/01/01 00:00:00”, “YYYY/MM/DD HH:MM:SS”)
Delphi Epoch := DateTimeToUnix(StrToDateTime(myString));
C Use the C Epoch Converter routines
R as.numeric(as.POSIXct(“MM/dd/yyyy HH:mm:ss”, origin=”1970-01-01″))
MySQL SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD
More on using Epoch timestamps with MySQL
PostgreSQL SELECT extract(epoch FROM date(‘2000-01-01 12:34’));
With timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE ‘2001-02-16 20:38:40-08’);
With interval: SELECT EXTRACT(EPOCH FROM INTERVAL ‘5 days 3 hours’);
SQLite SELECT strftime(‘%s’,timestring);
SQL Server SELECT DATEDIFF(s, ‘1970-01-01 00:00:00’, time field)
JavaScript Use the JavaScript Date object
Unix/Linux Shell date +%s -d”Jan 1, 1980 00:00:01″ Replace ‘-d’ with ‘-ud’ to input in GMT/UTC time.

Converter a partir da epoch para formato humano:

PHP date(output format, epoch); Output format example: ‘r’ = RFC 2822 date
Python import time first, then time.strftime(“%a, %d %b %Y %H:%M:%S +0000”, time.localtime(epoch)) Replace time.localtime with time.gmtime for GMT time.
Ruby Time.at(epoch)
Java String date = new java.text.SimpleDateFormat(“MM/dd/yyyy HH:mm:ss”).format(new java.util.Date (epoch*1000));
VBScript/ASP DateAdd(“s”, epoch, “01/01/1970 00:00:00”)
AutoIT _DateAdd(“s”, $EpochSeconds , “1970/01/01 00:00:00”)
Delphi myString := DateTimeToStr(UnixToDateTime(Epoch)); Where Epoch is a signed integer.
C Use the C Epoch Converter routines
Objective-C NSDate * myDate = [NSDate dateWithTimeIntervalSince1970:epoch]; NSLog(@”%@”, date);
R as.POSIXct(epoch, origin=”1970-01-01″, tz=”GMT”)
MySQL FROM_UNIXTIME(epoch, optional output format) Default output format is YYY-MM-DD HH:MM:SS. If you need support for negative timestamps: DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(0), interval -315619200 second),”%Y-%m-%d”) (replace -315619200 with epoch)
PostgreSQL PostgreSQL version 8.1 and higher: SELECT to_timestamp(epoch); More info Older versions: SELECT TIMESTAMP WITH TIME ZONE ‘epoch’ + epoch * INTERVAL ‘1 second’;
SQLite SELECT datetime(epoch_to_convert, ‘unixepoch’); or local timezone: SELECT datetime(epoch_to_convert, ‘unixepoch’, ‘localtime’);
Oracle PL/SQL SELECT to_date(’01-JAN-1970′,’dd-mon-yyyy’)+(1326357743/60/60/24) from dual
Replace 1326357743 with epoch.
SQL Server DATEADD(s, epoch, ‘1970-01-01 00:00:00’)
Microsoft Excel =(A1 / 86400) + 25569 Format the result cell for date/time, the result will be in GMT time (A1 is the cell with the epoch number). For other time zones: =((A1 +/- time zone adjustment) / 86400) + 25569.
Crystal Reports DateAdd(“s”, {EpochTimeStampField}-14400, #1/1/1970 00:00:00#) -14400 used for Eastern Standard Time.
JavaScript Use the JavaScript Date object
Tcl/Tk clock format 1325376000
Unix/Linux Shell date -d @1190000000 Replace 1190000000 with your epoch, needs recent version of ‘date’. Replace ‘-d’ with ‘-ud’ for GMT/UTC time.
PowerShell Function get-epochDate ($epochDate) { [timezone]::CurrentTimeZone.ToLocalTime(([datetime]’1/1/1970′).AddSeconds($epochDate)) }, then use: get-epochDate 1279152364. Works for Windows PowerShell v1 and v2
Other OS’s Command line: perl -e “print scalar(localtime(epoch))” (If Perl is installed) Replace ‘localtime’ with ‘gmtime’ for GMT/UTC time.

E para finalizar o post programadores e desenvolvedores quando vale 1 ano em segungos, 1 mês, etc

 

Formato humano Seconds
1 hora 3600 segundos
1 dia 86400 segundos
1 semana 604800 segundos
1 mês (30.44 dias) 2629743 segundos
1 ano (365.24 dias)  31556926 segundos

Att.

Categories: Uncategorized

Contruindo pontes com teclado e mouse :P

April 11, 2014 1 comment

Ola pessoal vocês já sabem, a mesma ladainha de sempre. Após longo período sem postar aqui venho novamente depois de um LONGOO, mas bem LOONNGGOO tempo sem postar vamos a um micro, flash tutorial, how-to porque quebrei a cabeça e se não fosse um amigo “garga” do canal #freebsd-br, rede freenode não tinha colocado meu FreeBSD em bridge para funcionar. Obrigado “garga”.

Primeiramente vamos a topologia bem rápido e sem delongas. Segue abaixo.

bridge_freebsd

Iremos colocar um freeBSD para funcionar em bridge por enquanto esse server não tem uma finalidade especifica mas posteriormente ele sera um servidor proxy com tproxy, seja lá como vou fazer isso 🙂

 

Para montar a bridge são utilizados alguns comandos bem simples. Rápido e fácil

Criando a ponte

# ifconfig bridge0 create

Definindo as interfaces membros da ponte

# ifconfig bridge0 addm lr0 addm lr1

Visualizando

root@proxy:/root # ifconfig bridge0
bridge0: flags=8843 metric 0 mtu 1500
ether 02:41:a8:eb:20:00
nd6 options=29
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: rl0 flags=143
ifmaxaddr 0 port 3 priority 128 path cost 200000
member: rl1 flags=143
ifmaxaddr 0 port 4 priority 128 path cost 200000
root@proxy:/root #

Para remover as interfaces membros

# ifconfig bridge0 deletem lr0 deletem lr1

Vamos configurar para toda inicialização do FreeBSD ele já montar minha ponte. Para quem não sabe toda a configuração de inicializacção e feita no arquivo rc.conf. Uma observação somente vou colocar a parte que diz respeito a bridge.

ifconfig_rl0=”up”
ifconfig_rl1=”up”
cloned_interfaces=”bridge0″
ifconfig_bridge0=”addm rl1 addm rl0 up”

Uma configuração de brinde a configuração de um endereço IP na interface bridge aqui tem um pulo do gato, que graças ao Garga funcionou. Inicialmente tentei a configuração assim:

ifconfig_rl0=”up”
ifconfig_rl1=”up”
cloned_interfaces=”bridge0″
ifconfig_bridge0=”addm rl1 addm rl0 up”
ifconfig_bridge0=”inet 192.168.1.11 netmask 255.255.255.0 up”
defaultrouter=”192.168.1.1″

Mas não funciona, como o rc.conf é um script a variavel “ifconfig_bridge0” era sobrescrita porque ele esta descriminada duas vezes então o pulo do gato esta aqui. Preciso criar um alias

ifconfig_rl0=”up”
ifconfig_rl1=”up”
cloned_interfaces=”bridge0″
ifconfig_bridge0=”addm rl1 addm rl0 up”
ifconfig_bridge0_alias0=”inet 192.168.1.11 netmask 255.255.255.0 up”
defaultrouter=”192.168.1.1″

Assim rolou, abaixo coloquei o bate-papo com o “garga” 🙂

 

<garga> ricardobarbosams: ahhhh cara lembrei
<garga> pqp
<garga> ja passei por isso
<garga> maldita bridge
<garga> como o ifconfig nao aceita tudo ao mesmo tempo agora
<garga> vc tem que fazer um cambalacho
<garga> nao sei se isso é o certo
<garga> mas sei que funciona
<garga> faz assim
<garga> ifconfig_bridge0=”addm rl0 addm rl1″
<garga> ifconfig_bridge0_alias0=”inet 192.168.11.1 netmask 255.255.255.0″
<garga> 🙂
<porks> aeouahe
<porks> ORA PORRA. QUE QUE ? ISTO PORRRAAAAAAAAAAAAAA ?!?!?!?!
<garga> no fim das contas o ifconfig vai fazer o que eh pra fazer
<porks> tem que dividir a pica
<porks> senao ele nao aguenta
<garga> eu sei la se isso eh o jeito correto de fazer,mas ja fiz e deu certo
<garga> LOL
<ricardobarbosams> hum
<ricardobarbosams> kkkk
<ricardobarbosams> dexa eu tentar
* Agent_Smith_BR has quit (Read error: No route to host)
<ricardobarbosams> garga, aeee
<ricardobarbosams> funfo
<ricardobarbosams> vou documentar isso
<ricardobarbosams> vlw garga
<ricardobarbosams> 🙂

Vlw pessoal, espero que se algum dia alguém precisar criar um bridge lembre desse pulo do gato.

Categories: Uncategorized

Na velocidade da luz

November 13, 2013 1 comment

Bom, agora estou com mais tempo venho postar assuntos que eu considero interessante, um deles é para falar sobre internet de alta velocidade, ninguém como eu sabe o que é sofrer com uma conexão lenta(Diga eu e meu xbox), quem nunca esteve num jogo online e ser morto porque sua conexão não foi rapida o bastante ou travamento e lags( quem nunca jogou online, deveria experimentar e uma atividade desestressante :P). Enfim pretendo falar da tecnologia que faz uso da fibra óptica, tecnologia essa que nem eu conhecia, FTTX(Fiber-To-The-X) o x pode ser home, desktop, building, etc. E uma tecnologia que faz uso da fibra óptica acabando com o gargalo da última milha, ou seja, ao invês de termos cabos metálicos até sua residência por exemplo, teremos uma fibra óptica até sua casa. Confesso que não acreditei muito nessa tecnologia devido aos altos custos, mas creio que essa reviravolta esta se dando pela falta de recursos que a nossa infra-estrutura de rede atual nós dá, e os gargalos nos grandes backbones, alem do fato competitivo e evolução. Tudo tem que evoluir a evolução gera concorrência forçando as empresas atuais a evoluir. Quando fui chamado para trabalhar num provedor de fibra óptica, não acreditei, meu chefe falando que estava passando fibra em toda a cidade nos postes, etc. Eu pensei comigo esse cara e maluco, piro na batatinha 😛 mas eu vi que o negócio era sério. Descobri que existe uma luz no fim do tunel. 😛 Vou as poucos expondo a tecnologia, colocando as expectativas que ela traz e benefício e funcionamento. Com o crescimento exponencial da necessidade de velocidade cada vez maiores de internet, devido a quase tudo hoje estar conectado, celular, computador, tablets, etc. A demanda por conexões de alta velocidade traz uma nova tendência e a tecnologia FTTX/GEPON vem para atender essa demanda. O último relatório do akamai revelou que a média de internet no mundo fica entre 2M sendo a coreia do sul é o top do mundo, sendo que eles possuem uma rede toda FTTX.

http://www.akamai.com/stateoftheinternet/

speed_internet_world

O sistema com fibra óptica consiste de um equipamento que recebe os sinais opticos chamado OLT(Optical Line Terminator) na ponta ou na casa do assinante temos outro equipamento chamado ONU ou ONT(Optical Network Unit / Optical Network Terminator). Através de um dispositivo SPLITTER e possível dividir um fio de fibra em x clientes. O objetivo da rede FTTX e reduzir a quantidade de fibras, Um exemplo uma única porta da OLT pode atender 64 clientes com uma única fibra óptica capaz de atender até 2G de velocidade, e esta vindo no mercado OLT de 10G não homologado pelo Anatel(ainda). Sendo assim o futuro dos jogos online e promissor  🙂 .

A tecnologia FTTX também recebe o nome de PON ( Passive Optical Network ) uma rede multiponto usando fibra óptica. Existem tipos de PON(Segundo a maioria das documentações).

  • EPON
  • GPON
  • GEPON

EPON

É um padrão IEEE(802.3ah) que usa Ethernet para o envio de pacotes de dados.Transporta os dados encapsulados em quadros ethernet. velocidades de até 1G/s.

GPON

GPON (Gigabit PON) é a evolução da banda larga EPON padrão. Consegue taxas de 1G/s full duplex, Alcance de 20Km, multiplexação ate 64 usuários.

GEPON

GEPON (Gigabit Ethernet PON) é um padrão IEEE que usa Ethernet para o envio de pacotes de dados, o GEPON e equivalente ao EPON uma evolução assim como ethernet e fastethernet, gigabitethernet. GEPON usa 2,5 G/s taxas de upstream e downstream.

Diferenças entre GEPON and GPON:

A principal diferença que faz o GEPON ser a melhor escolha, é a velocidade de simetria. A velocidade GPON é em torno de 1.25 Gbps de upload e 2.25 Gbps de download, já o padrão GEPON opera com taxa de 2.5 Gbps simétricos.

             GPON é baseado na tecnologia ATM, GPON utiliza tecnologia Ethernet e GEPON suporta ATM, Ethernet and WDM.

GEPON ainda está evoluindo, é amplamente utilizado na Ásia e usa Ethernet como meio, o qual simplifica tempo e reduz os custos, A complexidade e o custo são mais baixo é inferior a GPON. GEPON tem uma vantagem de custo de instalação (acho que por isso a tecnologia DOCSIS, utilizada por operadoras como a NET não se adotam em larga escala, o custo é um fator impactante, e o FTTX e custo é menor, sendo por isso a adoção nos países da ásia e europa).

            GEPON Suporta Class of Service (CoS) para transferencia de video e voz.

Quando comparado ao GPON, o GEPON e altamente escalavel e flexivel, existe relato de serviços operando com GEPON com mais de 2.300 clientes.

tabela_xponssite telecom.com.br

VANTAGENS DO GEPON:

  • Atenuação baixa;
  • Altas taxas de transmissão;
  • Imunidade contra interferência eletromagnética;
  • Acoplamento óptico, eliminando a necessidade de aterramento entre o transmissor e receptor;
  • Bom nível de segurança e privacidade da informação transmitida;
  • Boa relação custo por unidade de informação transmitida.

Topologia de uma rede FTTX. Um detalhe a OLT é uma placa que acoplaca ao chassis.

rede_fttx

Att.

Categories: Uncategorized

VMWare arrumando o guarda roupa

Ola como ultimamente estou com um pouco de tempo vou colocar aqui as tecnologias que sempre preciso relembrar 🙂

Nesse post vamos verficiar como o vmware faz o armazendo dos seus dados, os tipos de discos. Aprendi muito graças ao post do blog do Igor Seiji(Valeu Seiji) http://igorseiji.info/2012/02/15/qual-tipo-de-disco-escolher-para-criar-uma-maquina-virtual-no-vmware-vsphere-5/

Bom eu sou bem direto, vamos ao que interessa, o vmware trabalha com 2 tipos de discos(não diria bem tipos :P):

  • Thin – Aloca espaço do disco somente o que precisa, se criarmos um disco virtual de 200G para uma maquina virtual onde vou instalar um linux e a instalação do linux ocupar 10G, meu disco virtual irá ocupar somente 10G no meu HD ou storage.
  • Thick – Aloca tudo mesmo não precisando, ou seja se criar um disco virtual de 200G para uma máquina virtual o tamanho no HD ou storage do disco virtual será de 200G, mesmo a instalação utilizando apenas 10G.

O tipo Thick ainda possue 2 tipos subtipos:

  • Thich Lazy Zeroed – É o modo padrão utilizado pelo vmware, ele ocupa somente o espaço utilizado. Vamos a um exemplo: Se criarmos um disco virtual de 200G para uma maquina virtual qualquer, e a instalação ocupar 10G, temos disponivel para o sistema operacional da máquina virtual ainda 190G, conforme for sendo utilizado os 190G ele vai fazendo o zeroing(Ato de escrever o disco virtual com zeros para garantir que não dados escritos no disco).
  • Thick Eager Zeroed – Este metodo e parecido com o lazy zeroed com a diferença que ele faz o zeroing na criação na máquina virtual, isso consequentemente deixa a criação da máquina virtual mais demorada, em contrapartida terei mais performance, visto que não terei que fazer o zeroing na escrita de dados.

Att.

Categories: Uncategorized