Hallo Habr.
Sicherlich haben viele Leute darĂŒber nachgedacht, vielleicht hat jemand diese Idee in TODO. Sie lag ungefĂ€hr ein Jahr bei mir, schaffte es aber dennoch, es in Form eines funktionierenden Prototyps umzusetzen.
TgCloud:
- Open Source G **** Code des virtuellen Dateisystems.
- Auf der lokalen Festplatte - nur Metadaten: Namen, GröĂe, Ordnerstruktur usw.
- Daten werden in Telegramm gespeichert und nur heruntergeladen, wenn mit einer Datei gearbeitet wird
- Die GröĂe und Art der Dateien ist nicht begrenzt, kann mit jedem Betriebssystem verwendet werden
Implementierungsdetails und ein Link zum Repository unter der Katze.

Idee
Die Idee, VFS basierend auf Telegramm zu erstellen, kam wÀhrend der Arbeit an
AudioTubeBot und
VideoTubeBot auf - nachdem ich einen Weg gefunden hatte
, das 50-MB-Limit fĂŒr das Herunterladen von Dateien fĂŒr Bots zu umgehen - habe ich den
Telegramm-Quellcode studiert - ich habe viele interessante Dinge entdeckt. Beispielsweise ist die Download-Geschwindigkeit hauptsÀchlich auf dem Client selbst und nicht auf dem Server begrenzt.
Infolgedessen habe ich die Download-Geschwindigkeit in die Telegramm-Cloud auf ~ 240 Mbit / s pro Sitzung erhöht (sie funktioniert seit mehr als einem Jahr stabil), was 15-mal schneller ist als der offizielle Client.
Der logische Schritt bestand darin, unbegrenzten Dateispeicher mit hoher Download-Geschwindigkeit als Netzwerklaufwerk zu verwenden - höchstwahrscheinlich tun dies viele, aber das Problem ist, dass Telegramm-Clients fĂŒr die Suche und Organisation von Dateien unpraktisch sind. DarĂŒber hinaus gibt es ein Limit von 1,5 GB pro DateigröĂe.
Sicherung
Um diese Probleme zu lösen, habe ich mich zunÀchst entschlossen, einen Linux-Kernel-Patch zu erstellen und mein eigenes virtuelles Dateisystem zu erstellen, in dem Dateien, die in Telegram hochgeladen wurden, bequem nur mit Metadaten gruppiert werden.
Bei der Untersuchung des Problems stellte sich heraus, dass das Patchen des Kernels ĂŒberhaupt nicht erforderlich ist. Linux verfĂŒgt ĂŒber ein spezielles
FUSE-Kernelmodul , mit dem Entwickler neue Arten von Dateisystemen erstellen können, auf die Benutzer ohne Berechtigungen zugreifen können. Es gibt Wrapper fĂŒr fast alle gĂ€ngigen Sprachen fĂŒr das Modul.

Telethon
Um auf Telegram zuzugreifen, verwende ich die
Telethon- Bibliotheksversion 0.19.1 mit meinem modifizierten Multithread-Datei-Upload (TelegramClientX).
Vfs
Um ein Dateisystem nicht von Grund auf neu zu schreiben, wird Python
dedupfs verwendet, das Fuse und SQLite zum Speichern von Metadaten verwendet, Dateien in Blöcke zerlegt, den sha1-Hash berĂŒcksichtigt und dieselben Blöcke wiederverwendet. Sie mĂŒssen lediglich die Methoden zum Laden von Daten in den Speicher durch Ihre eigenen ersetzen.
Tgcloud
Durch die Kombination all dessen haben wir einen funktionierenden
tgcloud- Prototyp erhalten, der bisher ohne
Platzgeschwindigkeit war , aber immer noch funktioniert. Ich hoffe, die Community fĂŒr die Entwicklung zu gewinnen. Die heruntergeladenen Dateien werden in Blöcke von 10 MB unterteilt, sha1 wird berechnet und in SavedMessages geladen, der Hash wird in der lokalen Datenbank gespeichert und beim Lesen des Blocks befindet sich die Datei darauf. Blöcke werden in der erforderlichen Reihenfolge zusammengeklebt und ein Bytestrom wird ausgegeben - als wĂŒrden Sie sie von der Festplatte lesen.
Code ausfĂŒhren
- Sie mĂŒssen api_hash und api_id auf my.telegram.org abrufen und diese Daten zusammen mit der Telefonnummer Ihres Kontos in tg_access.py einfĂŒgen
- Erstellen Sie eine Sitzung, indem Sie sie im Projektordner ausfĂŒhren
python3.6 download_service.py
sudo yum install python-fuse
mkdir storage
- VFS:
python dedupfs/dedupfs.py -df --block-size 10240000 storage/
python dedupfs/dedupfs.py --block-size 10240000 storage/
- , filebrowser
.
P.S. ( )
â , .. â « », â â , , â â . â , , 90% , VFS â .
â , â , Telegram â « â .. ..»Telegram
GitHub
DEDIC.SH Intel Scalable 2019 :
- 2x Xeon Silver 4214 â 24
- 2x Xeon Gold 5218 â 32
- 2x Xeon Gold 6240 â 36 .
Xeon Silver 4214 â
15210 /â
!
â
VDS 150 / â , !