🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217361

Re: Przenośny, uproszczony filesystem

#217361
From: heby
Date: Tue, 06 Apr 2021 08:58
122 lines
6099 bytes
On 05/04/2021 23:55, J-23 wrote:
>> Zostało to wyjaśnione.
> Nie zostało

Więc jeszcze raz: chciałbym kilka plików, któe generuje apliakcja, 
zawszeć w jednym. W przewieństwie do pakowania a'la zip, to ma być 
dostepne jak normalne pliki, czyli mogę do niczh coś dopisać, trimować, 
tworzyć i kasować.

Unikam wtedy bałaganu w postaci katalogu z plikami, w których user może 
coś uszkodzić. Praktyka pokazała że to *krytyczne*.

>> Więc jak?
> Możesz to zrobić na co najmniej dwa sposoby
> 1. Korzystając ze strumieni i pliku binarnego

Omijasz podstawowy problem. Strukturę tego pliki "binarnego". Skupiasz 
się na trzecirzędnych duprelach.

> 2. Wykorzystując formaty tj VDI
> https://www.arysontechnologies.com/blog/how-to-open-vdi-file/#:~:text=VDI%20or%20Virtual%20Drive%20Format,Windows%20and%20other%20operating%20systems. 

To bardzo milutkie, ale to tylko 1/10 sukcesu. Co z filesystemem? Mam 
sobie skombinować skądś ext4 w wersji bez kernela?

> Dostęp do źrodeł masz opisy formatu znajdziesz też w sieci

Ale to nie jest format zapisu plików, tylko format zapisu *dysku*. 
Brakuje tej warstwy o której mowa w temacie.

>> *DOSKONALE* wiem co.
> Bez szyderstwa. Napisz więcej co to ma robić bo mam wrażenie że 
> strzelasz z armaty do wróbla

Napisałem wyżej.

>>> Chcesz budować Filesystem to pochwal się jak masz to ogarnięte do tej 
>>> pory
> Bo to co chcesz zbudować jest formatem pliku emulującym działanie 
> systemu plików a to różnica

Nie, to nie jest róznica, dokładnie to chce uzyskać od samego początku.

> Napisałem już w pierwszym moim poście że musisz zbudować odpowiedni 
> format pliku

Świetnie:

Pacjet: Panie doktorze co dalej?
Doktur: Powinien pan wyzdrowieć, od tego proszę zacząć.

> Nawet przywołane przeze mnie VDI jest formatem pliku a nie systemem plików

No własnie, dlatego jest poza tematem. Ogólnie jeśli mam już bloki, to 
abstrakcja zapisująca je do pliku jest mało istotną duperelą. Skupiasz 
się na nieistotnym technicznie detalu.

>> Poczytaj wątek. Mam możliwosć schowania tego za abstrackją i aktualnie 
>> używam database. Ale database jest marną emulacją.
> Po co ci Database?

Aby emulować filesystem w pliku na potrzeby unit testów.

>> Bardzo dobra rada. Problem w tym, że kod do większości filesystemów 
>> jest przesadnie zagmatwany aby można było wyłuskać z niego sensowne 
>> abstrakcje. A wiele oglądałem. Najzwyczajniej, produkcyjne filesystemy 
>> są optymalizowane a nie pisane po to aby je podziwiać.
> Teraz jak wiem o co ci chodzi to odpowiem tak. Przejrzyj formaty które 
> to umożliwiają przechowywać obraz dysku np wspomniany przeze mnie VDI

Formaty maszyn wirtualnych służa tylko do tego aby gołe sektory trzymać 
w jakiś mniej-wiecej optymalny sposób w jednym pliku.

Niejak nie pomagają mi w wyższej warstwie abstrackji typu "jak trzymać 
pliki w tym pliku".

> bo 
> System plików będzie faktycznie mocno zagmatwany bo ty potrzebujesz 20% 
> tego co w systemie plików jest zawarte

Raczej 80%. Poza katalogami i atrybutami, ale oba to chyba jakieś mało 
istotne rzeczy.

>> Ma pracować na 1 pliku, a w środku ma pozwalać na operowanie nieznaną 
>> iloscią plikó wirtualnych, dynamicznie je tworząc, kasując, 
>> powiększając, nadpisując. Mniej więcej to co robi normalny filesystem 
>> na normalnym dysku.
> Kluczowe pytanie do czego ci to potrzebne bo nadal przy tej "dawce 
> wiedzy" będę sie upierał że wystarczą ci strumienie by to napisać

Nie, nie wystarczą. Aplikacja jest komercyjna.

> Strumienie nie dadzą rady w momencie gdy potrzebujesz z tego wycisnąć 
> max wydajności

Dalej nie pojmuje co niby te strymienie mają mi dopomóc w problemie? 
std::fstream i co dalej? jest jakis std::filesystem?

> Zasugerowałem format VDI lub zbuduj własny format co nie jest takie 
> trudne jak zglebisz temat formatu plików pozwalający przechowywać obraz 
> dysku.

Ale to są tylko trywialne translatory blok wirtualny->pozycja w pliku + 
trim.

> Moim zdaniem błędnie się zasugerowałeś że to ma być FileSystem

To ma być filesystem, bo w API mowa o plikach a bie blokach na dysku.

> Moja rada poczytaj o tym jak się konstruję formaty plików

A jak się konstruuje formaty plików? Jest jakiś poradnik do tego?

> Pytanie czy da się strumieniami twoim zdaniem zapakować kilka plików do 
> jednego pliku?

Da się, ale nie da się potem na tym pracować. Zwiększ rozmiar środkowego.

> Zadaje to pytanie nie po by się z Ciebie nabijać tylko po to by 
> zrozumieć czemu sądzisz ze pliki typu qcow2/vdi są systemami plików.

Nie sądzę tak.
Technical Details
Message-ID: <s4h7rd$n3v$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
References: <rtpdik$cge$1@dont-email.me> <606a6d41$0$522$65785112@news.neostrada.pl> <s4elb8$cni$3@dont-email.me> <606b5698$0$542$65785112@news.neostrada.pl> <s4fu13$s6b$1@dont-email.me> <606b876c$0$517$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: Przenośny, uproszczony filesystem
Date: Tue, 6 Apr 2021 10:58:17 +0200
Organization: A noiseless patient Spider
Lines: 122
Message-ID: <s4h7rd$n3v$1@dont-email.me>
References: <rtpdik$cge$1@dont-email.me> <606a6d41$0$522$65785112@news.neostrada.pl> <s4elb8$cni$3@dont-email.me> <606b5698$0$542$65785112@news.neostrada.pl> <s4fu13$s6b$1@dont-email.me> <606b876c$0$517$65785112@news.neostrada.pl>
Mime-Version: 1.0
Injection-Date: Tue, 6 Apr 2021 08:58:21 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="76ac3790277d741921ae0d316a6d6019"; logging-data="23679"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+mR+UgFx4OIdU2ZbmYWGqX"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0
Cancel-Lock: sha1:7Ptl2kaDu/yFG/P40M+TdDVM5xg=
In-Reply-To: <606b876c$0$517$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit