-
21. Data: 2021-02-08 20:35:11
Temat: Re: Przenośny, uproszczony filesystem
Od: heby <h...@p...onet.pl>
On 08/02/2021 20:33, Piotr Chamera wrote:
> [ciach]
Dzieki.
-
22. Data: 2021-04-05 03:51:59
Temat: Re: Przenośny, uproszczony filesystem
Od: J-23 <B...@p...fm>
W dniu 2021.01.14 o 13:31, heby pisze:
> Cześć.
>
> Coś w ten deseń, czyli to ja dostaczam abstrakcje robiącą I/O na
> poziomie block/cluster a kod realizuje wysokopoziomowe operacje plikowe.
>
Ty musisz napisać własny format pliku. Tylko tyle i aż tyle. System
plików to zupełnie inna para butów.
Nie wiem w czym to docelowo będziesz pisał ale do tej operacji wystarczy
Ci znajomość Strumieni i przemyślany sposób jak to upakować wszystko.
Dla uproszczenia zrób sobie każdy element pliku (Formatu pliku) w
oddzielnej klasie będzie ci łatwiej okiełznać strukturę w późniejszym
etapie przy takim podejściu
Pozdrawiam
J-23
-
23. Data: 2021-04-05 11:30:12
Temat: Re: Przenośny, uproszczony filesystem
Od: heby <h...@p...onet.pl>
On 05/04/2021 03:51, J-23 wrote:
>> Coś w ten deseń, czyli to ja dostaczam abstrakcje robiącą I/O na
>> poziomie block/cluster a kod realizuje wysokopoziomowe operacje plikowe.
> Ty musisz napisać własny format pliku.
Dziekuję, to odkrywcze :D
> Tylko tyle i aż tyle. System
> plików to zupełnie inna para butów.
A ja myślałem że tam jest cała esencja.
> Nie wiem w czym to docelowo będziesz pisał ale do tej operacji wystarczy
> Ci znajomość Strumieni i przemyślany sposób jak to upakować wszystko.
O to przemyślenie chodzi. Strumienie ogarniam. Ba, ograniam nawet random
access.
> Dla uproszczenia zrób sobie każdy element pliku (Formatu pliku) w
> oddzielnej klasie będzie ci łatwiej okiełznać strukturę w późniejszym
> etapie przy takim podejściu
Genialne.
Jesteś pewny że wiesz o czym mówisz ;) ?
-
24. Data: 2021-04-05 20:27:33
Temat: Re: Przenośny, uproszczony filesystem
Od: J-23 <B...@p...fm>
W dniu 2021.04.05 o 11:30, heby pisze:
> Jesteś pewny że wiesz o czym mówisz ;) ?
Widać po twoich postach w tym wątku że próbujesz robić pewne rzeczy do
okola pytanie po co? Moim zdaniem sięgasz zbyt głęboko. To co opisujesz
według mnie da się prosto.
Słowa typu "ogarniam nawet random access" jest nieudaną próbą szyderstwa
z Twojej strony z tego co napisałem bo coś chcesz stworzyć ale sam do
końca nie wiesz co to ma być ale napewno nie będzie to nawet "wirtualny
filesystem" jak to sam nazwałeś
Chcesz budować Filesystem to pochwal się jak masz to ogarnięte do tej
pory lub podejrzyj jak to jest budowane np w kodzie open source
przykładów w sieci jest sporo.
Popraw mnie jeśli się myle ale twoja próbka kodu ma za zadanie (posłużę
się twoim nazewnictwem)
1. Utworzyć FileSystem
2. Zapisać jakieś dane
3. Wysłać do urządzenia
Tylko pytanie po co?
Niby coś tam wyjaśniasz niżej ale ja nadal nie widzę po tych
wyjaśnieniach powodu budowania własnego Filesystem
Zamiast wykorzystać już jakieś gotowe rozwiązanie
W tym co starasz się zbudować widzę sens grzebania w postaci nauki jak
działają Systemy plików skoro to jest twoim celem to ok
Ale jeśli twoim celem jest budowanie systemu plików by upakować kilka
plików w jedną strukturę jest pozbawione sensu bo to obecne systemy
plików robią bez problemu
Pozdrawiam
J-23
-
25. Data: 2021-04-05 23:04:30
Temat: Re: Przenośny, uproszczony filesystem
Od: heby <h...@p...onet.pl>
On 05/04/2021 20:27, J-23 wrote:
>> Jesteś pewny że wiesz o czym mówisz ;) ?
> Widać po twoich postach w tym wątku że próbujesz robić pewne rzeczy do
> okola
Tak, nie jest do zdecydowanie następna apliakcja do fakturowania.
> pytanie po co?
Zostało to wyjaśnione.
> Moim zdaniem sięgasz zbyt głęboko. To co opisujesz
> według mnie da się prosto.
Więc jak?
> Słowa typu "ogarniam nawet random access"
Nie, to jest zwrócenie uwagi że "strumieniami" tego się nie ogarnia. To
się ogarnia random access na rzeczywistym pliku. Razem z trim i kilkoma
sztuczkami jak garbage collecting czy kompaktacja.
> z Twojej strony z tego co napisałem bo coś chcesz stworzyć ale sam do
> końca nie wiesz co
*DOSKONALE* wiem co.
> to ma być ale napewno nie będzie to nawet "wirtualny
> filesystem" jak to sam nazwałeś
Możesz się podeprzeć jakimś powodem, dlaczego to nie będzie wirtualny
filesystem?
> Chcesz budować Filesystem to pochwal się jak masz to ogarnięte do tej
> pory
Poczytaj wątek. Mam możliwosć schowania tego za abstrackją i aktualnie
używam database. Ale database jest marną emulacją.
> lub podejrzyj jak to jest budowane np w kodzie open source
> przykładów w sieci jest sporo.
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ć.
> Popraw mnie jeśli się myle ale twoja próbka kodu ma za zadanie (posłużę
> się twoim nazewnictwem)
> 1. Utworzyć FileSystem
> 2. Zapisać jakieś dane
> 3. Wysłać do urządzenia
Nie.
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.
Mała uwaga: to nie to samo co zamontowanie ext4 na loop. To ma być
dynamicznie zmieniające rozmiar pliku rzeczywistego.
Najbliższy koncept z tej okolicy to np. qcow2.
> Tylko pytanie po co?
Odpowiedź padła w tym wątku.
> Niby coś tam wyjaśniasz niżej ale ja nadal nie widzę po tych
> wyjaśnieniach powodu budowania własnego Filesystem
Bo nie przeczytałeś uważnie.
> Zamiast wykorzystać już jakieś gotowe rozwiązanie
Zasugeruj jakie. Nie znajduje gotowych rozwiązań poza workaroudami jak
bloby w db.
> Ale jeśli twoim celem jest budowanie systemu plików by upakować kilka
> plików w jedną strukturę jest pozbawione sensu bo to obecne systemy
> plików robią bez problemu
Interesujące, podrzuć jakiś filesystem który pakuje pliki do jednego
pliku i pozwala na ich dynamiczne używanie jednoczesnie kompaktując plik
fizyczny.
-
26. Data: 2021-04-05 23:55:56
Temat: Re: Przenośny, uproszczony filesystem
Od: J-23 <B...@p...fm>
W dniu 2021.04.05 o 23:04, heby pisze:
> On 05/04/2021 20:27, J-23 wrote:
>>> Jesteś pewny że wiesz o czym mówisz ;) ?
>> Widać po twoich postach w tym wątku że próbujesz robić pewne rzeczy do
>> okola
>
> Tak, nie jest do zdecydowanie następna apliakcja do fakturowania.
Aplikacje do fakturowania są proste a i tak większość działa w "dziwny"
sposób bo co program to inne podejście :)
>
>> pytanie po co?
>
> Zostało to wyjaśnione.
Nie zostało to jednoznacznie wyjaśnione nawet osoba która dużo
dyskutowała z Tobą w tym wątku stwierdziła że cieżko się rozmawia bo nie
odpowiadasz na pytania
>
>> Moim zdaniem sięgasz zbyt głęboko. To co opisujesz według mnie da się
>> prosto.
>
> Więc jak?
>
Możesz to zrobić na co najmniej dwa sposoby
1. Korzystając ze strumieni i pliku binarnego
2. Wykorzystując formaty tj VDI
https://www.arysontechnologies.com/blog/how-to-open-
vdi-file/#:~:text=VDI%20or%20Virtual%20Drive%20Forma
t,Windows%20and%20other%20operating%20systems.
wiele innych jest tego sporo tylko ta opcja druga jest moim zdaniem w
Twoim przypadku na "wyrost"
Dostęp do źrodeł masz opisy formatu znajdziesz też w sieci
>> Słowa typu "ogarniam nawet random access"
>
> Nie, to jest zwrócenie uwagi że "strumieniami" tego się nie ogarnia. To
> się ogarnia random access na rzeczywistym pliku. Razem z trim i kilkoma
> sztuczkami jak garbage collecting czy kompaktacja.
>
>> z Twojej strony z tego co napisałem bo coś chcesz stworzyć ale sam do
>> końca nie wiesz co
>
> *DOSKONALE* wiem co.
Bez szyderstwa. Napisz więcej co to ma robić bo mam wrażenie że
strzelasz z armaty do wróbla
>
>> to ma być ale napewno nie będzie to nawet "wirtualny filesystem" jak
>> to sam nazwałeś
>
> Możesz się podeprzeć jakimś powodem, dlaczego to nie będzie wirtualny
> filesystem?
>
>> 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
Napisałem już w pierwszym moim poście że musisz zbudować odpowiedni
format pliku
Nawet przywołane przeze mnie VDI jest formatem pliku a nie systemem plików
>
> Poczytaj wątek. Mam możliwosć schowania tego za abstrackją i aktualnie
> używam database. Ale database jest marną emulacją.
>
Po co ci Database? Armata na wróbla chociaż podejrzewam że będzie i tak
bardziej wydajna niż to co stworzysz przynajmniej w pierwszych wersjach
>> lub podejrzyj jak to jest budowane np w kodzie open source przykładów
>> w sieci jest sporo.
>
> 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 bo
System plików będzie faktycznie mocno zagmatwany bo ty potrzebujesz 20%
tego co w systemie plików jest zawarte
>> Popraw mnie jeśli się myle ale twoja próbka kodu ma za zadanie
>> (posłużę się twoim nazewnictwem)
>> 1. Utworzyć FileSystem
>> 2. Zapisać jakieś dane
>> 3. Wysłać do urządzenia
>
> Nie.
>
> 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ć
Strumienie nie dadzą rady w momencie gdy potrzebujesz z tego wycisnąć
max wydajności
>
> Mała uwaga: to nie to samo co zamontowanie ext4 na loop. To ma być
> dynamicznie zmieniające rozmiar pliku rzeczywistego.
>
> Najbliższy koncept z tej okolicy to np. qcow2.
https://formats.kaitai.io/vdi/java.html
>
>> Tylko pytanie po co?
>
> Odpowiedź padła w tym wątku.
>
Dopiero teraz :)
>> Niby coś tam wyjaśniasz niżej ale ja nadal nie widzę po tych
>> wyjaśnieniach powodu budowania własnego Filesystem
>
> Bo nie przeczytałeś uważnie.
Przeczytałem tylko dopiero w odpowiedzi do mnie napisałeś to w jasny
sposób ale nie ma o co się spierać
>
>> Zamiast wykorzystać już jakieś gotowe rozwiązanie
>
> Zasugeruj jakie. Nie znajduje gotowych rozwiązań poza workaroudami jak
> bloby w db.
>
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.
Moim zdaniem błędnie się zasugerowałeś że to ma być FileSystem
>> Ale jeśli twoim celem jest budowanie systemu plików by upakować kilka
>> plików w jedną strukturę jest pozbawione sensu bo to obecne systemy
>> plików robią bez problemu
>
> Interesujące, podrzuć jakiś filesystem który pakuje pliki do jednego
> pliku i pozwala na ich dynamiczne używanie jednoczesnie kompaktując plik
> fizyczny.
wspomniany tu przeze mnie VDI to robi ale mam wrażenie że ty i tak tego
nie potrzebujesz.
Moja rada poczytaj o tym jak się konstruję formaty plików i odejść od
myślenia (na tym etapie) od tego że to jest system plików
Pytanie czy da się strumieniami twoim zdaniem zapakować kilka plików do
jednego pliku?
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.
Pozdrawiam
J-23
-
27. Data: 2021-04-06 00:31:43
Temat: Re: Przenośny, uproszczony filesystem
Od: J-23 <B...@p...fm>
W dniu 2021.04.05 o 23:04, heby pisze:
>> Słowa typu "ogarniam nawet random access"
>
> Nie, to jest zwrócenie uwagi że "strumieniami" tego się nie ogarnia. To
> się ogarnia random access na rzeczywistym pliku. Razem z trim i kilkoma
> sztuczkami jak garbage collecting czy kompaktacja.
Zapomniałem się odnieść do tego co wyżej. To zdziwisz się czym to jest
ogarnięte np w VirtualBox.
Mieszasz pojęcia nie rozumiesz co to jest format pliku. Mylisz go z
systemem pliku nawet mam wrażenie że nie ogarniasz tego co twierdzisz ze
ogarniasz
1. Random access - masz na myśli losowy dostęp? No i nie ma on nic
wspolnego ze strumeniami tak?
2. Trim - to nawet pozostawie bez komentarza
3. Gerbage Collector że tak zapytam co ma wspólnego z system plikow -
nic. Ma do czynienia z zarządzaniem pamięcią a zarządzanie pamięcią a
system plików to dwa odrębne tematy
Pozdrawiam
J-23
-
28. Data: 2021-04-06 10:58:17
Temat: Re: Przenośny, uproszczony filesystem
Od: heby <h...@p...onet.pl>
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%20Forma
t,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.
-
29. Data: 2021-04-06 11:06:31
Temat: Re: Przenośny, uproszczony filesystem
Od: heby <h...@p...onet.pl>
On 06/04/2021 00:31, J-23 wrote:
> Zapomniałem się odnieść do tego co wyżej. To zdziwisz się czym to jest
> ogarnięte np w VirtualBox.
W VirutalBox filesystemy na wirtualny dyskach NIE są ogarnięte, bo to
zadanie pracujących w środku OSów. Ogólnie VB nie ma implementacji
filesystemów w tym pliku, tylko nieskopoziomową translację bloków w
pliku + trim i tyle jest wystarczające aby resztą zająć się guest.
> Mieszasz pojęcia nie rozumiesz co to jest format pliku.
Najprawdopodobniej żyje w innej rzeczywistości.
> Mylisz go z
> systemem pliku nawet mam wrażenie że nie ogarniasz tego co twierdzisz ze
> ogarniasz
Bardzo możliwe, ale zwróc uwagę że wiele osób z tej grupy ogarnęło. To
powoduje że zacząćbym się zastanawiać nie czy ja nie ogarniam, tylko czy
Ty. Nie masz takiej wątpliwości?
> 1. Random access - masz na myśli losowy dostęp? No i nie ma on nic
> wspolnego ze strumeniami tak?
Twoja rada "użyj strumieni" jest absurdalna. To jakby koś pytając "jak
zrobić drzewo czerwono-czarne" dostał odpowiedź "użyj procedur". Bez
wątpienia jest celna i bezużyteczna.
Mogę uzyć czekokolwiek, mogę użyć strumieni z random access, bazy danych
czy kart perforowanych. Mało ważne, mam tylko zapisywać bloki w pliku na
okreslonych pozycjach i to jest *trywialne* i kompletnie nieistotne.
Istotne jest sterowanie tym mechanizmem, które nazywamy filesystemem.
> 2. Trim - to nawet pozostawie bez komentarza
To źle, bo ten trim jest krytycznie istotny aby całość miała sens.
> 3. Gerbage Collector że tak zapytam co ma wspólnego z system plikow -
> nic.
Czyli nie masz śladu pojmowania na czym polegają problemy z którymi
tutaj należy się mierzyć.
> Ma do czynienia z zarządzaniem pamięcią a zarządzanie pamięcią a
> system plików to dwa odrębne tematy
...i nie rozumiesz nawet śladu abstrakcji czym jest pamięć.
Podpowiem, chociaż wydaje się to bezcelowe: zastanów się czym jest
garbage collecting w kontekście *pliku* swap.
-
30. Data: 2021-04-06 11:22:15
Temat: Re: Przenośny, uproszczony filesystem
Od: Mateusz Viste <m...@x...invalid>
2021-04-06 o 10:58 +0200, heby napisał:
> 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ć.
Pewno umiesz korzystać z wyszukiwarki tak samo jak ja i już to
widziałeś, ale jeśli nie... Być może warte przejrzenia, bo z opisu
brzmi jak dokładnie to, czego szukasz.
https://code.google.com/archive/p/whefs/
"similar to conventional archives (e.g. zip files), except that this
library provides random-access read/write support to the filesystem via
an API similar to the conventional fopen(), fread(), fwrite() and
friends."
Mateusz