BOA! um boa pergunta para um domingo a noite. Eu nunca tinha tentado fazer acontecer o seu problema, mas vamos ver o que da, se segura que vai comessa a baixaria hehehe
O disco utilizado é uma partição em que eu guardo o ports, é a /dev/ad0s4f, o tamanho dela é: 3145728000 bytes ----- 1. Criar um concat com só um disco, de forma "manual", desta forma os meta dados ficam em memoria e nenhum meta-dado é gravado no disco, entao o sistema de arquivos/disco não é alterado. # gconcat create teste1 /dev/ad0s4f desktop# gconcat list Geom name: teste1 State: UP Status: Total=1, Online=1 Type: MANUAL ID: 1060847703 Providers: 1. Name: concat/teste1 Mediasize: 3145728000 (2.9G) <----- Tamanho do novo privider (/dev/concat/data) Sectorsize: 512 Mode: r1w1e1 Consumers: 1. Name: ad0s4f Mediasize: 3145728000 (2.9G) <----- Tamanho do consumidor (/dev/ad0s4f) Sectorsize: 512 Mode: r1w1e2 Start: 0 End: 3145728000 # mount /dev/concat/teste1 /usr/ports/ # df | grep ports /dev/concat/teste1 2971278 2715162 18414 99% /usr/ports # ls /usr/ports/ [conteudo inalterado] Como nenhum meta-dado foi escrito no disco, o FS não foi alterado, então tudo continua como estava antes, apenas com um novo "label". Resutado: Funcionou ----- Teste 2: Fazer o mesmo teste de cima, porém, criar o provider de forma automática. #gconcat label teste2 ad0s4f # gconcat list Geom name: teste2 State: UP Status: Total=1, Online=1 Type: AUTOMATIC ID: 3377459459 Providers: 1. Name: concat/teste2 Mediasize: 3145727488 (2.9G) <--- Tamanho do novo provider < 512k que o antigo Sectorsize: 512 Mode: r1w1e1 Consumers: 1. Name: ad0s4f Mediasize: 3145728000 (2.9G) <--- Tamanho do consumidor Sectorsize: 512 Mode: r1w1e2 Start: 0 End: 3145727488 Agora um bloco de meta-dados foi escrito no ultimo bloco da particao, veja que o Midiasize do consumidor tem 3145728000 bytes, mas ele inicia em, 0 e termina em 3145727488, os 512k (3145728000 - 3145727488 = 512) que faltam, estão sendo utilizados pelos meta-dados, assim estão disponiveis apenas 3145727488 para o provider. # mount /dev/concat/data /usr/ports/ # df | grep ports /dev/concat/teste2 2971278 2715162 18414 99% /usr/ports # ls /usr/ports/ [conteudo inalterado] Observer que o df(8) nas duas ocasiões retornou o mesmo tamanho do disco, isto por que o df(8) utiliza as informações do sistema de arquivos, e não do geom(4). Como o meta-dado do gconcat(8) foi gravado no ultimo setor, o superbloco do FS ficou como estava antes, assim o sistema de arquivos vai funcionar. mais um teste: vou tentar enxer o sistema de arquivos: # ls -lh /home/bristot/OOo_2.1.0_FreeBSD62Intel_install_pt-BR.tbz -rw-r--r-- 1 bristot wheel 115M Feb 3 21:49 /home/bristot/OOo_2.1.0_FreeBSD62Intel_install_pt-BR.tbz # df -h | grep ports /dev/concat/teste2 2.8G 2.6G 18M 99% /usr/ports # cp /home/bristot/OOo_2.1.0_FreeBSD62Intel_install_pt-BR.tbz /usr/ports/ # df -h | grep ports /dev/concat/teste2 2.8G 2.7G -97M 104% /usr/ports Funcionou! Funciou?? Aqui pode dar um problema, o sistema de arquivos pode sobrescrever o ultimos 512k que ele acreditava ser o final do disco, assim ele sobre escreve os meta-dados, mas cara, isso vai entras em FS, ai não me garanto muito, mas para ter uma noção da probabilidade de ser escrito nestes 512k, levando em conta que 512k é um quarto de fragmento(padrão), que por sua vez é um oitavo de um bloco(padrão), isso diminui as chances dele ser sobrescrito, nun fiz estes testes, mas assim que sobrar um tempo vou faze-los :D. se voce assina a lista freebsd-geom deve ter visto uma thread a uma duas semanas atraz, falando sobre o problema do ultimo bloco em classes aplicadas de uma "quente", o assunto da thread erra: "New g_part class", bom no final o phk da uma pincelada sobre isto. 3: criar um concat com dois discos. # gconcat teste3 /dev/ad0s4f /dev/ad0s3 # gconcat list Geom name: teste3 State: UP Status: Total=2, Online=2 Type: AUTOMATIC ID: 3747211060 Providers: 1. Name: concat/teste3 Mediasize: 7003383296 (6.5G) Sectorsize: 512 Mode: r1w1e1 Consumers: 1. Name: ad0s4f Mediasize: 3145728000 (2.9G) Sectorsize: 512 Mode: r1w1e2 Start: 0 End: 3145727488 2. Name: ad0s3 Mediasize: 3857656320 (3.6G) Sectorsize: 512 Mode: r1w1e2 Start: 3145727488 End: 7003383296 Em numeros 44(Midia Size ad0s4f + Midia Size ad0s3)- Midia Size do concat/teste3 = blocos que foram utilizados por meta-dados (3857656320+3145728000)-7003383296 = 1024 Como podemos ver, os meta-dados foram gravados em ambos os discos. # mount /dev/concat/teste3 /usr/ports/ # df -h | grep ports /dev/concat/teste3 2.8G 2.6G 18M 99% /usr/ports OPA! o disco esta com o mesmo tamanho de antes??? sim, pois o sistema de arquivos apenas foi criado para o primeiro disco, assim ele não sabe nada sobre o outro. -- Então, se for criar um concat de UM disco de forma MANUAL, tudo blz, funciona sem formatar, mas acho que isso não é muito útil :D espero ter ajudado, e desculpe por alguma merd* que posso ter escrito, estou morto do sono :D gn8 -- Daniel Bristot de Oliveira ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd