Tipos de formatação para sistema de arquivos Linux - Parte 04

Aula 37 · GNU/Linux para Servidores

Transcrição do áudio

É coleguinha, tipo os de sistemas de arquivos, hum, que gostosinho, nós vamos falar agora sobre XXT2, XXT3, 4JFS, o RazeFS, entre outros, eu costumava falar também sobre FET e sobre NFS, mas eu fui parando de falar sobre isso ao longo do tempo, principalmente sobre NFS. O FET ainda ele pelo menos ele é aderente, imagine que você tem uma TV, que você tem um XXT que você tem um celular e aí você tem uma memória M2, uma mini SD, mini, certo? E a mini SD ele vai naturalmente e é colocar aqui, e aí uma hora você decide pegar o teu Linux, pegar esse cartão e colocar aqui para você pegar algum arquivo, colocar algum arquivo, não sei, tá bem? Então esses mini SDs ele é interessante que você formate então no padrão FET, o FET32 e o FET agora, 6 quattos no fórum memória. Eu acho que eles criaram uma extensão, um 4 mais aqui gente. Justamente por causa das câmeras, as câmeras que trabalham em alta resolução, porque com 32 você pode ter no máximo um arquivo com 2,3.8 giga, não é isso? E aqui você teria arquivos porra e vou colocar infinito aqui, tá cara? Bom, seriam arquivos monstruosos, certo? E você tem hoje a câmera digital do seu celular que grava em altíssima definição, então ele geralmente gera arquivos muito maior que 3.8 giga. Então nós temos esse problema aí no FET, legal? Beleza, então ele é muito bom porque o FET é um padrão aberto para escrita e leitura. Como assim? O NTFS é um padrão aberto para leitura. O NTFS é um padrão fechado para o fabricante para escrita. Por isso que você vê o MacOS lendo um disco NTFS mas não escreve. Você pode até ver um Linux lendo um NTFS, mas não deve escrever, porque esse código é da Microsoft, entendeu? Já o FET não. O FET é um padrão público para escrita e leitura, então por isso que as câmeras utilizam FET. Por isso que as televisões utilizam FET em geral, legal? Bom, e aí nós precisamos de criar padrões. Então o nosso fabricante, ele faz aqui, vamos imaginar então que o nosso fabricante, ele então pega teu disco, certo? É verdade, eu estou aponhando a ferramenta. Ele pega teu disco e faz aqui gominhos de, por exemplo, 512, 512, 512 sem nenhum tipo de estrutura. Esses gominhos de 512, 512, 512 é a formatação física lá do fabricante, certo? E ele vai fazendo isso aqui. E aí o sistema operacional, ele precisa naturalmente, preste atenção, o que o sistema operacional faz? Ele precisa naturalmente fazer uma formatação com sua estrutura, ou seja, tem um sistema, vou exemplificar uma coisa bem esquisita, tá? Em um tipo e versão do formato, em dois, usuário, dono desse bloco de dados, em três, o dono desse arquivo de dados, quatro, quando foi criado e aqui então eu tenho os dados. Então digamos que eu estou aqui nesse sistema de arquivo escruto pra caramba, tá? Que tem essa formatação e eu tenho que seguir essa formatação. E que daqui aqui são dois K, beleza? Eu estou exemplificando, não existe isso aqui, essa estrutura, tá? Então como que eu faço isso aqui? Me pare que eu faço um mecanismo de formatação que vai sobre escrever sobre a formatação física do fabricante, essa minha formatação lógica. Então naturalmente que o fabricante, ele fez mais quatro bloquinhos, quatro bloquinhos, estou ferrado pra fazer isso vermelho, hein cara? Aqui eu criei um bloquinho, um gominho, outro gominho, certo? Todos esses gominhos têm essa estrutura, todos os gominhos têm essa estrutura, todos esses gominhos, certo? Que são os pequenos blocos, certo? Lá do disco. Essa é a formatação lógica, em vermelho é a formatação lógica e em preto é a formatação física. E aí o fabricante faz de 512 em 512 em 512 e aí o cara do sistema operacional. Ele que pega quantos ele quiser e cria o formato dele, tá? Hoje nós trabalhamos com formato, XXT4, aqui ele tem 4 cabais. Ele poderia, na verdade, o XXT4 trabalha de 1 cabaite a mais, tá? O default são 4 cabais. Então ainda dá pra você customizar essa parte azul aqui, tá vendo essa parte azul? Dá pra você expandir isso aqui, certo? Aqui eu exemplifiquei o tamanho fixo de 2 cabais. Mas o XXT4, por exemplo, eu posso ter gombos de 1 cabaite, que seriam 2 bloquinhos, até de 8 cabaites, que seriam bastante gominhos. Legal? Pegou a ideia, né? Lá depender. Eu acho que é um 8, não lembro. Agora o padrão é 4. Eu esqueci qual é o máximo. Bom, também não importa. O importa que é o mínimo, que é 1 cabaite. Legal. E aí eu escolho um padrão de formatação. Então tem particularidades do XXT2 pro XXT3 principalmente, tá? Daqui pra cá tem uma mudança drástica que nós vamos falar, beleza? Mas nós também temos uma mudança drástica daqui pra cá. Vamos lá. Então nós usamos um comando chamado MKFS. E com MKFS nós podemos formatar patições. Passar o rodo em cima. Apaga, não apaga. Tem um TCC que eu quero trazer pra vocês, é que os alunos não terminaram. Vocês não são me orientando, mas eu tô na banca deles, que é sobre recuperação de arquivos, tá? Recuperação de arquivos. E nesse negócio de recuperação de arquivos, você vê claramente que os dados não são apagados. Beleza? Eles ficam lá mesmo depois de uma formatação. Então, porque o MKFS vai matar as tabelas de partição, mas os arquivos ainda estão lá. Isso aqui é interessante. Quando você deleta um arquivo, você não apaga ele do disco. Você deleta o link de uma tabela para a sua existência de bits no bloco. De blocos. Os blocos continuam lá. O que você matou foi o link da sua existência. Mas ele ainda tá lá. Se você procurar fazer uma pesquisa profunda nessa estrutura do disco, você vai achar os arquivos apagados. Beleza? Que isso é um papo lá em forense, que é um curso que nós vamos montar aqui pra vocês. Legal? Na verdade, eu tô até pensando em chamar esses caras pra gravar esse curso e eu pago pra eles em bitcoin. Lógico, nada de real. Nada fiduciário. Então, nós temos também o comando MKF, aonde eu coloco o ttype e eu escrevo o type que eu quero. Mas com o passar do tempo, a galera MKFS, espaço, traço t, xt2, xt3, a galera criou uns links pra facilitar a vida. Olha o minix do tanybo aqui. Rapaz, isso aqui dá uma confusão. Isso aqui deu processo nos Estados Unidos. Rapaz, isso aqui deu merda pro Linux. O tanybo fudeu Linux. O tanybo é um cara mal, tá? É um cara bonzinho, não. Repare. Tem MKFS, você tem um comando, comando, comando. Agora olha só, dois, três, quatro, eles são tipo links, links para arquivos executáveis que utilizam MKFS. Tá? O bacana, né? E aí, é só um facilitador. E MKFS no Debian, tá? No pacote o Tios Linux. E lá você encontra todas esses formatações básicas. Hoje um Linux, ele também sai com um padrão de formatação chamado Lux, que nós usamos muito aqui no curso. O Lux, ele é criptografado lá no disco. Só que não é como no Windows, que a chave de criptografia fica no próprio disco. É uma criptografia que você tem que digitar quando inicializa o Linux. Digitar, digitar. Beleza? Entendeu? Então nós temos essa brincadeira aí. Se você quiser trabalhar com o comando, com mais parâmetros, você tem, você pode trabalhar com isso aqui. Legal? É comum utilizar, quando eu utilizo esse comando assim, é porque eu quero trabalhar com block size. Quando eu quero usar o padrão do Linux, quando eu quero usar o padrão do Linux, eu já uso comando assim. Beleza? Eu uso comando assim porque é mais fácil. Eu não digito, faz nada. Beleza? Padrão, segue o padrão. Foda-se. Então, quando eu quero fugir do padrão, então eu trabalho com esse comando aqui, porque eu preciso do block size geralmente. O block size, o mínimo, é 1 kb. E isso impacta para caramba. Quanto mais você reduz o block size, você aumenta a tabela inode. Preste atenção. Se você aumenta o block size, você reduz a tabela inode. Então vamos lá. Como estamos em médio de um arquivo no seu computador? Já pensou nisso? Imagine um servidor. Um servidor que guarda o arquivo JSON de dados. É bytes, 500 bytes, 200 bytes, 300 bytes. E por que você vai usar um block? Preste atenção. De 4 kb para armazenar 200 bytes. Você concorda que é uma enorme burrice? Então quando eu vou formatar um servidor, eu pergunto como serão os arquivos lá dentro. E aí, como eles me falam os arquivos que tem lá dentro, como serão, o que serão e tudo mais? Então eu penso no block size. Ah, se é um servidor web comum, eu deixo o padrão. Porque vai trabalhar com banco de dados. Ah não, se ele vai trabalhar muito com JSON, vai guardar fragmentos de dados, trabalhar com ciência de dados, engenharia de inteligência artificial, essas coisas, é que eu estou com a cabeça lá engenharia e estou fazendo um negócio. Aí eu já penso no block size, beleza? Parte são x2, parte são x3, vamos lá. No início, acho que é o Linux, o Linux 0.632. O Linux roubou o Minix FS do tannibal e colocou no Linux. Lá em 92, cara, isso rendeu por Linux um puta problema de roubo de código. O roubo de código é crime, galera, por que isso parecia? E isso deu um puta problema na vida do Linux. Então um parinho francês chamado Remy alguma coisa dele, Remy alguma card, ele criou então se você quiser, tem aqui mais informações sobre esse caso, na referência 31, ele criou um padrão de formatação chamado Xt2 para o mundo Linux. Cara, por que que Linux é muito bom para dar aula de engenharia de software? O Linux é muito bom para dar aula de engenharia de software, porque eu vou explicar. Sempre que você tem um problema complexo, puta problema complexo pra caralho. Qual a melhor arquitetura para se utilizar? Camadas. Camadas. Camadas, camadas, camadas. Eu não vou fazer camada até lá em cima, não, tá? Eu tô cagando. Vou colocar camada até lá em cima, foda-se. Camada bem grande, não importa. Não necessariamente tem que ter mesmo tamanho. Disclaimer realizado. Mas por que isso, cara? Por um motivo simples, em arquitetura em camada, preste atenção. A camada de cima é mais abstrata que a anterior. A camada de cima é mais abstrata que a anterior. A camada de cima é mais abstrata que a anterior. Mas por que isso? Ah, você segmenta os problemas de cada camada na camada. E a camada de cima sempre é mais fácil de ser utilizada que a camada de baixo. A camada de baixo é mais técnica, é mais difícil de usar. É mais diabrada. Ou seja, então quer dizer que se essa camada não tá operando como eu queria, eu tiro ela. E construo uma camada com a mesma interface de entrada e as mesmas chamadas de saída. Eu crie uma nova camada. Desde que aqui, eu vou fazer o seguinte. Eu vou supor que aqui tinha uma função write, certo? Que tinha bytes de array. E que tinha um point, um endereço, certo? E que essa por fosse void. Legal. Eu tenho que manter isso. Era assim, né? Aquela camada que eu removi. E eu tenho que manter aqui essa camada. E ela vai chamar a função da camada inferior passando os mesmos parâmetros. Então eu posso trocar camadas desde que eu mantenho os endereços. Desculpe, as assinaturas. Aqui é assinatura, tá? Falei endereço, desculpa. Assinatura. Desde que eu mantenho as mesmas assinaturas. E eu posso trocar o que eu quiser no mundo lindo, desde que eu mantenho essas assinaturas. Legal. Então o cara vai lá, pega as assinaturas de função do Minix FS e cria o HT2. Legal. Então agora é só você tirar o Minix FS e colocar o HT2. FS, acabou. Acabou. Fala da pra caralho esse negócio. Por isso que eu gosto dos operacionais, cara. É arquitetura, é programação, é security, é teoria de sistemas operacionais. Cara, o sistema operacional é, como eu posso dizer, é a mais bela arte humana. E vou te falar, ela é artesanal. Ou seja, é um quadro. Tá ok? E aí, só que o HT2, ele tinha um problema. Todos os arquivos, eles eram escritos diretamente no arquivo, né? Então você tem lá... É... Desculpa, cara, foda pra caralho, mano. Tô apanhando essa porra pra caralho. Por isso eu não vi desculpa na Udemy. Então você tem aqui um arquivo, certo? E você tem um processo. Quase que eu falei o palavra um pior ainda. E aí você tem um processo, um processo dois. Tanto o processo um, o processo dois, eles escrevem no mesmo arquivo, certo? No mesmo arquivo. E isso gerava um problema, porque a questão do disco ser pre-impetivo, o disco com agulha não é pre-impetivo. Porque agulha tem que estar na posição. Então ele é não pre-impetivo, certo? Já o item que me levaria ao deadlock, pra chegar num deadlock, eu preciso de satisfazer quatro situações. E em uma dessas situações é trabalhar com dispositivos não pre-impetivos. Legal? Então, o que eles fizeram? O que o mundo Linux fez? Na verdade, estamos opressionados e fizeram. No momento, criaram o Dimon. Um Dimon. Quase que eu falei um palavrão. Eu não sei o porquê, cara. Eu estou com um problema de clica e do mouse. Então eles escrevem um arquivo pro Dimon. E o Dimon, então, ele persiste aqui. Pra tentar evitar deadlock, corrupção de arquivos. Legal? Isso se tornou assim uma solução, mas não muito legal. Reduziu a taxa de erro, mas ainda ficou uma bosta. No Xt3, nós vamos ter uma melhoria muito grande com relação a isso. Já vamos falar do Xt3. Então, estamos em máximo do arquivo. Por exemplo, quando o gominho, quadrão, 4k bytes, falei pra vocês, bloquinho, ele pode ir a arquivos de 4, tera e um disco de 16, cara, isso 1992. Isso 1992. Tudo bem que até 2005 o padrão era um kbyte, bloquinho, certo? Mudou pra 4k bytes. 16 giga, 2020. Cara, feliz era o cara que tinha um disco de 40 meg. 42 meg. Uma Winchester de 42 meg. Entende? Cara, era brutal o tamanho daqui, mas hoje em dia, se você sabe que, cara, não é bem assinado hoje, nós temos backups gigantescas de banco de dados, né? Eu já vi backup, já presencei backup sendo restaurada e demorar uma semana. Seguinte, Xt3 vem e eles adicionam o jornallin. Jornallin é a grande mudança do Xt2 pro Xt3, o uso do jornallin. No jornallin funciona assim. Ah, eu vou simplificar. Então imagine que processo 1, processo 2, o que eles escrevem é o que? Notícias de alteração do arquivo. Eles não escrevem o arquivo. Eles escrevem notícias do que tem que alterar no arquivo. E ele vai, em uma área, temporária, ele vai colocando isso lá. E alguma coisa vai consolidar essa alteração de arquivo no disco. Então isso é o jornallin. Então eu imagine que você tem... porque o jornallin, porque eu imagino que você tem notícias. Eu vi uma notícia. Ah, o IED, ele... Pô, cara, nunca tem notícia nada sobre mim boa, né? Só notícia ruim, né? Pô, notícias do Botafogo. Fomei, não que é muito boa, né? Ah, o Botafogo vai contratar o Jobson. Aí no outro dia, o Botafogo contratou o Jobson. Terceiro dia, ah, Jobson foi preso. Repare, são recordes de notícias. No passado tempo. Entenderam? Pô, cara, foi foda, cara. Pô, cara, eu tava tão feliz com o Jobson, quando o Jobson foi jogar no Botafogo, cara. Mas depois o Jobson se meteu um monte de problema, cara. Pô, cara, tristinho. Mas uma grande sacada é que o padrão XT, do 3x2, mudou a forma de fazer. Mas a estrutura do bloco se manteve. Vou repetir. Mudou a forma de fazer, mas manteve a estrutura do bloco. Então quer dizer que você tinha um disco XT2? Ah, e mudou por XT3. Então você não tinha que destruir as partições. Era só você trabalhar com XT3, em cima do XT2. Que dava certo. Entenderam a jogada? E isso foi muito importante. A jornalinha foi, ele foi depois também implementada em vários mecanismos de persistência. Desculpa, formatos de NFS, tuza, jornalinha, o XT4, JFS, entre outros trocentos, só usa jornalinha a partir de então. Legal? Outra coisa interessante que nós temos que falar também aqui, é que o XT2 é ideal para hackers, porque nós temos um comando que nós conseguimos zerar o arquivo. Lembra que eu falei que no XT2 nós trabalhamos diretamente em cima do arquivo? O XT2 você pode zerar o arquivo. Praticamente você zera o arquivo. No XT3, ou seja, qualquer coisa que usa jornalinha, são notícias de alteração, que ficam em uma área do disco. Então mesmo que você apague o arquivo original, mesmo que você sobre escreva o arquivo original, você não está sobre escrevendo o arquivo original. Você está criando notícias de que parte do arquivo tem que ser substituído. Mas se você voltar em todo o histórico, que fica nessas áreas temporárias, é possível se reconstruir parcialmente um arquivo, se você usa um sistema de arquivos que utiliza jornalinha. Foda, hein? Foda, é por isso que você, que trabalha no mundo HAC, no mundo da segurança, você, na tela do lado das trevas, quando não é na lua e sete, ou não, você tem que trabalhar com o disco criptografado, com o LUX, e jogar o XT4 ou 3 em cima do LUX, tá? Para você conseguir ficar seguro. Pense, pense em você, cara, você é o cara da segurança, o IT-HAT, o cara bonitinho, feliz, né? Vai para casa com o seu carro, todo branquinho, bonitinho, nenhuma sujeirinha bate nele, tá? Perfeito, sua vida magnífica. De repente, cara, você fez uma extração de um... e jogou em um pendrive, que é uma grande porrisse no caralho, faz uma porra dessa, e esse pendrive, você deixa cair, e ali dentro tem arquivos sensíveis da sua empresa, e quem acha justamente um hacker? Fudeu sua vida. Tô falando aqui, pode acontecer, tem que alinhar um monte de planeta para uma merda gigantesca desse acontecer, mas seu emprego já era. Entendeu? Você não vai arriscar sua vida em alinhamento de planeta. Beleza? Não tem não é jogada, né? Não, cara, merda, você fez bastante merda nesse caso, mas é comum a gente fazer merda de vez em quando, entendeu? X-T4, o X-T4 já é, ele muda o formato, ele é... ah, o X-T4 tem um coisa interessante, que ele permite o redimensionamento da partição do volume, cara. Isso é muito interessante, porque hoje em cloud, nós precisamos de maximizar ou reduzir discos, sem ter que recopiar todo disco. Então, imagina que você contrata um serviço e seja possível redimensionar o disco. Pensa assim. Isso, para mim, é fantástico, sem contar que ele muda a estrutura de dados do disco, dos blocos, e com isso, ele consegue chegar a arquivos monstruosos, monstruosos, monstruosos. Nós estamos falando de... ele usa a Gatui, ele usa, porra, dois níveis, 10 a 12 milhões de entradas. Cara, isso é coisa pra caraca! Isso é grande demais! Para data center, para processamento de inteligência artificial, para a ciência de dados que trabalha com 1 e bytes. É coisa pra caraca! Coisa gigantesca! Entenderam? Lógico, não é? Tem outros tipos de formatação, mas esses aqui são os clássicos do mundo Linux. No próximo vídeo, nós vamos falar sobre alguns comandos para se observar essas informações. Até mais! Tchau!
Voltar ao curso