View previous topic :: View next topic |
Author |
Message |
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Thu Jan 02, 2014 8:44 am Post subject: Kleines System,wenig MB&indoes,portage zu gross+packen&a |
|
|
Hab ein kleines laufendes System.
Mit z.B. entpacktem Kernel und dann einem update vom GCC gibt es schon Probleme.
Die I-Nodes reichen nicht mehr obwohl noch 3GB von den 5GB frei sind.
Benutze EXT4 und würde auch gern bei dem Dateiensystem bleiben.
Das System hat Ca. 220.000 Dateien, /usr/portage/ (distfiles/ liegt woanders) hat 153.000 Dateien.
Wahnsinnig viel finde ich. Daher die Idee /usr/portage/ zu packen mit z.b. rar, und es über rar2fs bei bedarf einzuhängen.
Welches Archiveformat würde Ihr verwenden? Was würde sich besser als rar dafür eignen?
Oder kann ich irgendwie mehr I-Nodes vergeben? |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1668
|
Posted: Thu Jan 02, 2014 11:21 am Post subject: |
|
|
es gibt squash_dir, das hab ich ne weile für den portage tree verwendet um dessen größe zu reduzieren.
das paket gibt es im mv overlay. im kernel muss du dafür noch squashfs aktivieren mit dem gewünschten (oder auch mehreren) kompressionen (xz, lzo, lzma). xz/lzma für kleine größen, lzo für mehr performance (so ganz grob). das wird dann über ein init skript automatisch beim starten gemountet, aber nur read only. das ist eine squasfs einschräkung. aber auf wunch wird das read only mit einem unionfs oder aufs überlagert, so dass man schreiben kann und beim stoppen des initskripts wird die datei, in der das gesquashte verzeichnis ist dasnn aktualisiert.
eine andere möglichtkeit wäre auch, den portage tree über nfs (oder anderes netzwerk fs) einzubinden, wenn verfügbar. |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Thu Jan 02, 2014 12:35 pm Post subject: |
|
|
squash_dir ist nicht mehr aktuell; squashmount (aus dem selben Overlay) ist der in vielerlei Hinsicht verbesserte Nachfolger, benötigt allerdings perl.
Will man aber von vornherein nur readonly, lohnt sich eher ein fester Eintrag in der fstab; squash_dir/squashmount sind nur dann wirklich nützlich, wenn man sie (zumindest zeitweise) mit aufs/overlayfs/unionfs-fuse kombinieren will - was man natürlich beim portage-Baum i.d.R. will, außer man holt sich das squash-File regelmäßig von einem anderen Rechner, auf dem squashmount läuft. Leider benötigen aufs und overlayfs Kernel-Patches, und es ist unklar, ob jemals eines von beiden im Kernel landen wird (obwohl sich Linus selbst vor mehr als einem Jahr dafür ausgesprochen hat, ist nichts passiert...). Zur Not geht sicherlich unionfs-fuse, aber das ist von der Performance nicht so dolle, und sein cow kann auch wieder ganz schön in die inodes gehen...
Von nfs würde ich aus Sicherheitsgründen absehen, wenn es nicht unbedingt sein muss, aber sshfs-fuse ist sehr sicher und braucht keine aufwändige Einrichtung, sondern man muss nur (Überraschung!) fuse im Kernel aktiviert haben. |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Thu Jan 02, 2014 1:18 pm Post subject: |
|
|
Danke für eure Tips!. Das mit dem squash_... usw, klingt aufwenig, kompliziert und scheint nicht ganz das zu sein was ich will.
Das mit dem SSHFS gefällt mir irgendwie etwas besser als es über NFS zumachen.
Bei NFS ist das immer so ein Kuddelmuddel mit den Ports, bei SSH da gegen ists nur ein Port.
Lässt sich denn der SSH-Server so konfigurieren das er von IP: 192.168.101.2 nur den Benutzer abc123 auf nur das Verzeichniss /mnt/freigabe01/ zugreifen lässt? Kann nur dem Benutzer abc123 die shell verweigert werden?
Oder kann sogar auf dem Host ein zweiter abgegrenzter nur für SSHFS Freigaben gedachter SSH-Dienst laufen?
Warum ist es in Gentoo-Linux eigentlich so gelösst das /usr/portage/* aus so unzähligen vielen kleinen Platraubenden Dateien bestehen muss? Ist da etwas geplant das sich das in absehbarer Zeit ändern wird? (-; |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1668
|
Posted: Thu Jan 02, 2014 10:15 pm Post subject: |
|
|
ok, das squash_dir veraltet ist wusste ich nicht, da ich es seit btrfs (eingebaute kompression) nicht mehr verwende.
wieso das so gelöst ist? gute frage, wahrscheinlich historisch. aber ich gehe mal davon aus das das nicht geändert wird. da müsste man ja ganz portage umschreiben.
zu sshfs: da gibt es sowas wie freigaben nicht. du kannst immer auf alles zugreifen, auf das der user, mit dem du dich anmeldest, zugreifen. davon wählst du ein verzeichnis das gemountet wird. du kannst auch einen zweiten sshd starten, aber ich glaube nicht das das nötig ist, denn den sshd kann man auf per user/per host basis einstelln. Schau am besten mal unter "match" in der sshd_config manpage. |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Sat Jan 04, 2014 11:07 am Post subject: |
|
|
Zu der "match" Sache hab ich unter anderem hier auch was gefunden.
https://wiki.archlinux.org/index.php/sshfs#Chrooting
Wie kann ich aber einen zweiten SSH-Server laufen lassen, am bestern einen der Fernab läuft?
Muss ich den in eine "chroot-Umgebung" stecken? Oder muss ich den "statisch" bauen?
Kenne mich damit noch zu wenig aus, und weiss auch nicht so recht wie sich das nennt was ich suche/will. |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1668
|
Posted: Sat Jan 04, 2014 11:43 am Post subject: |
|
|
ah, ok das chroot für ssh kannte ich auch noch nicht. aber dafür musst du keinen zweiten ssh server starten. einfach den abschnitt wie aus deinem beispiel in die sshd_config eintragen (mit angepassten user und verzeichnis) und dann sollte es schon gehen. probiers doch einfach mal aus. |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Sun Jan 05, 2014 9:49 pm Post subject: |
|
|
Das mit SSH und Vorgegebenen Benutzerverzeichnissen scheint irgendwie doch nicht so das wahre zu sein.
Habe im Internet auf der ein und anderen Seite was gelesen das es möglich wäre das der Benutzer doch aus dieser Umgebung ausbüchsen kann.
Wie seht Ihr das?
Irgendwie scheint NFS wohl doch noch die beste Lösung zu sein. |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1668
|
Posted: Sun Jan 05, 2014 9:54 pm Post subject: |
|
|
naja, planmäßig kann er nicht ausbüchsen, aber es kann immer bugs/fehler geben. aber das könnte wahrscheinlich bei nfs (und allen anderen) genauso sein.
oder anders gefragt, was wäre denn das problem, wenn der benutzer ausbüchst? ein normaler benutzer kann ja im normalfall auf dem system sowieso nicht alllzuviel anstellen.
Um was für ein gerät handelt es sich denn btw? |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Sun Jan 05, 2014 10:05 pm Post subject: |
|
|
SarahS93 wrote: | Habe im Internet auf der ein und anderen Seite was gelesen das es möglich wäre das der Benutzer doch aus dieser Umgebung ausbüchsen kann. |
Nur um das klarzustellen: Du hast vor, für zwei Deiner Rechner eine ssh-Verbindung aufzubauen, glaubst aber, dass Dein Client-Rechner kompromittiert ist?
(Andernfalls hättest Du ja keinen Grund, den Server vor dem Client zu "schützen", der ja ohnehin nur mit dem richtigen Schlüssel den Kontakt aufbauen kann.)
In dem Fall - also falls Du Deinem eigenen einloggenden Rechner misstraust - hast Du größere Probleme, als ein Ausbruch aus einer chroot; nfs hilft da überhaupt nichts: Das was der einloggende Benutzer darf, darf er bei nfs ohnehin; Du musst Dich bei nfs schon ziemlich anstrengen, um dem einloggenden Rechner wenigstens root-Rechte "sicher" zu verwehren, wenn diese "vorgibt" root zu sein. Ich habe da schon einige defekte Konfigurationen gesehen...
Zum Ausbruch aus chroot: hardened-sources (grsecurity) erschwert den Ausbruch; bei zu restriktiver Konfiguration können aber einige Programme, die intern chroot benutzen, ev. fehlschlagen - hängt von den installierten Paketen und Deinen Konfigurationen ab.
Eine andere Möglichkeit wäre Starten des sshd in einer eigenen cgroup - das dürfte von vornherein etwas sicherer sein, aber ich habe damit noch nicht herumgespielt.
Aber eine wirklich sichere chroot-Methode, die gegen alle Kernel-Bugs gefeiht ist, gibt es wohl nicht - jede Virtualisierungslösung hat irgendwelche Ausbruchmöglichkeiten durch mehr oder weniger bekannte Exploits.
Ich würde mir an Deiner Stelle übrigens doch nochmal squashmount ansehen: Wenn Du z.B. aufs-sources benutzt, ist das Kernel-Patchen bereits enthalten. Alternativ gibt es sys-fs/aufs3 im Baum, und im mv overlay gibt es auch sys-fs/aufs (eine Alternative für aufs3). Die alternativen overlayfs-Patches gibt es für aktuelle Kernels auch meistens von Ubuntu.
squashmount hat halt den Vorteil, dass es nicht nur für den Portage-Baum sondern z.B. auch für /var/db, /usr/src, /usr/share/texmf-dist, /usr/share/games /usr/lib/libreoffice u.ä. sinnvoll ist. |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Sun Jan 05, 2014 10:23 pm Post subject: |
|
|
He, ne. Denke nicht das der Client kompromitiert sein könnte. Ich plane nur schon etwas weiter und grösser.
Will nach und nach einige VM aufziehen. Und viele davon laufen später mal rund um die Uhr und sind mit dem Internet verbunden.
Auf einigen laufen Dienste auf die von aussen zugegriffen werden kann. Will einfach nur vorsichtig sein.
Will nicht für jede VM eine andere Art von Netzwerklaufwerk haben, sondern schon für alle das gleiche.
Hatte sogar schon den gedanken am Host einen FTP Server laufen zu lassen, und das FTP Verzeichnis jeweils bei den VM einzuhängen.
Ich will von den VM /usr/portage , das temp verzeichnis in dem gebaut wird und das /home/ Verzeichnis vom Benutzer jeweils ausserhalb von der VM haben. |
|
Back to top |
|
|
Jean-Paul Guru
Joined: 13 Apr 2009 Posts: 307
|
Posted: Sun Jan 05, 2014 10:59 pm Post subject: |
|
|
Also irgendwie verstehe ich dich nicht.
Warum willst du das aus der VW ausgliedern ?
/tmp legst du in den RAM, dann ist es weg. Das /home würde ich in der VM lassen, darauf wird ständig geschrieben.
Und für /usr/portage - der Grund deines Posts - gibt es squashfs.
Da ist nichts kompliziert oder schwierig dran. aufs(3) braucht es imho auch nicht (für diese einfache Ausführung)
Ich reduziere mein Portage auf 83MB und zwar so:
Quote: |
VORBEREITUNG:
squashfs im Kernel einschalten (File systems -> Miscellaneous filesystems)
squashfs-tools installieren
emerge squashfs-tools
in make.conf DISTDIR auf einen anderen Pfad legen, weil /usr/portage readonly ist/wird
DISTDIR=/irgend/wo/hin/distfiles
in fstab eintragen
/mnt/squashed/portage /usr/portage squashfs ro,default 0 0
Mountpoint anlegen
mkdir -p /mnt/squashed
Portage löschen, aber nur den Inhalt
rm -rf /usr/portage/* |
Dann kopierst du dieses Script. Bei mir heißt dies "emerge-sync" und liegt in /usr/local/bin.
Quote: |
#!/bin/sh
SQFS_OPTS="-force-uid 250 -force-gid 250" # 250 steht für portage, in /etc/group nachschauen
SQFS_SRC="/tmp/portage"
SQFS_DEST="/mnt/squashed/portage"
# lese die make.conf
source /etc/portage/make.conf
# hole den aktuellen Snapshot, liegt dann entpackt auf /tmp/portage
wget -O - "${GENTOO_MIRRORS}"/snapshots/portage-latest.tar.bz2 | tar xjf - -C /tmp
# hänge /usr/portage aus
umount /usr/portage 2>/dev/null
# lösche altes squash-Archiv
rm $SQFS_DEST 2>/dev/null
# erzeuge squash-Archiv
mksquashfs $SQFS_SRC $SQFS_DEST $SQFS_OPTS
# hänge squash-Archiv in /usr/portage ein
mount /usr/portage
# /tmp/portage löschen
rm -rf $SQFS_SRC
# eix-Datenbank updaten (Optional)
eix-update |
Das Script ausführbar machen und aufrufen:
Quote: | chmod +x /usr/local/bin/emerge-sync
env-update && source /etc/profile
emerge-sync |
und nach ca. 20sek. ist /usr/portage nur noch 83MB groß.
Du kannst ganz normal Updates fahren oder Pakete installieren.
Wenn du damit nicht klar kommst, oder Fragen hast; einfach fragen. _________________ ”Everything should be made as simple as possible, but no simpler.” – Albert Einstein |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Fri Jan 10, 2014 2:15 pm Post subject: |
|
|
Hey, danke für deine super ausführliche Beschreibung.
Hab da noch ein paar Fragen zum download der "portage-latest" Datei.
Hab DSL16K, kann auch zu jeder Tageszeit mit 2MB/s herrunterladen, aber mit 5 oder mehr Downloads gleichzeitig nur.
Wie kann ich wget sagen das er die portage-latest Datei mit mehr als nur einer Verbindung lädt?
Habe schon Programme wie aria2c probiert, mit -x 5 z.B. aber von http://de-mirror.org/gentoo/snapshots/portage-latest.tar.xz tut sich da nichts.
Er lädt bei mir nur mit 300 bis 400 Sachen, und auch nur mit einer Verbindung.
Wo kriege ich eine Liste aller gentoo-mirrors als .txt her um mal die beste Verbindung mit netselect herrauszufinden?
Oder wie kann ich das Problem noch lösen? |
|
Back to top |
|
|
frostschutz Advocate
Joined: 22 Feb 2005 Posts: 2977 Location: Germany
|
Posted: Fri Jan 10, 2014 2:48 pm Post subject: |
|
|
Quote: | Oder kann ich irgendwie mehr I-Nodes vergeben? |
Es ist leider eine Krankheit von ext*, Dateisysteme mit chronischem Inode-Mangel zu erzeugen. Selbst bei reinen Binary-Distros ohne tausende winzige Source-Files rennt man da regelmäßig in Probleme.
Leider kann man die Inode-Zahl (im Verhältnis zum Speicherplatz) nur zum Zeitpunkt des mkfs festlegen. Also müsstest du alle Daten runterkopieren und das Dateisystem neu erzeugen.
Zum Beispiel mit mkfs.ext4 -T small /dev/gerät |
|
Back to top |
|
|
Jean-Paul Guru
Joined: 13 Apr 2009 Posts: 307
|
Posted: Fri Jan 10, 2014 7:25 pm Post subject: |
|
|
Wo es eine Mirrorliste als *.txt gibt weiß ich nicht, grundsätzlich sind die Mirrors hier zu finden.
http://www.gentoo.de/main/de/mirrors2.xml
Was steht denn in deiner make.conf ?
Ich wohne mehr im Süden der Republik und switch'e zwischen Esslingen und Erlangen Quote: | GENTOO_MIRRORS="http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo"
GENTOO_MIRRORS="ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo" |
Suche einen Mirror in deiner Nähe und teste. _________________ ”Everything should be made as simple as possible, but no simpler.” – Albert Einstein |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Sun Jan 12, 2014 8:17 pm Post subject: |
|
|
/etc/make.conf
Code: | CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
MAKEOPTS="-j8"
LINGUAS="de"
PORTDIR="/usr/portage/"
DISTDIR="/usr/portage_distfiles/"
PKGDIR="/usr/portage/packages"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
GENTOO_MIRRORS="http://de-mirror.org/gentoo/
http://gentoo.mneisen.org/
http://ftp.uni-erlangen.de/pub/mirrors/gentoo"
USE="-qt4" |
Naja, ob der Gentoo-Mirror nun in unserer Nähe ist oder weiter weg ... wie kann ich denn mit welchem Programm die portage-latest Datei mit mehr als einer Verbindung gleichzeitig downloaden? |
|
Back to top |
|
|
Jean-Paul Guru
Joined: 13 Apr 2009 Posts: 307
|
Posted: Sun Jan 12, 2014 9:19 pm Post subject: |
|
|
Also wget oder curl können das von Haus aus nicht, soweit ich gelesen haben.
Auf die Schnelle hab ich auch nur aria2 gefunden.
Vielleicht hast du die Parameter nicht korrekt angegeben.
Versuche es mal so
oder die Langform Quote: | aria2c --max-connection-per-server=5 <url> |
_________________ ”Everything should be made as simple as possible, but no simpler.” – Albert Einstein |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Wed Jan 15, 2014 8:59 am Post subject: |
|
|
Wenn ich in dem Script anstelle von wget aria2c -x 5 einbaue, klappt es nicht mehr....
Code: | emerge-sync.sh
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Cannot stat source directory "/tmp/portage" because No such file or directory
mount: special device /mnt/squashed/portage does not exist |
Brauche ich bei aria2c eine besondere Option die ich ihm mitgeben muss? |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Wed Jan 15, 2014 2:47 pm Post subject: |
|
|
Die Maschiene hat nicht genug Ram, ich kann /var/tmp/ nicht in den Ram legen.
Ich will es über das Netzwerk per SMB/CIFS auslagern
Am Samba-Server habe ich eine Freigabe gemacht, vm01 heisst sie:
Code: | [vm01]
comment = vm01
path = /mnt/temp-vm01/freigabe
valid users = vm01
force group = sarah
public = no
writable = yes
printable = no
create mask = 0660
directory mask = 0770
hosts allow = 192.168.101.2
hosts deny = 0.0.0.0/0 |
Am Client will ich sie einhägen mit:
Code: | mount -t cifs //192.168.178.33/vm01 -o username=vm01,password=vm01 /mnt/gentoo/var/tmp/ |
Am Client funktioniert das Einhängen auch, ich sehe die Freigabe und kann drauf zugreifen.
Erhalte aber bei emerge solche Fehlermeldungen:
Code: | Permission Denied: chown('/var/tmp/portage/....', 250, 250) |
Was mache ich falsch?! |
|
Back to top |
|
|
frostschutz Advocate
Joined: 22 Feb 2005 Posts: 2977 Location: Germany
|
Posted: Wed Jan 15, 2014 3:16 pm Post subject: |
|
|
Das Dateisystem muss Linux-Permissions genauso wie Symlinks und alles andere unterstützen.
Bei SMB/CIFS ist das glaube ich nicht gegeben, geht also nicht. |
|
Back to top |
|
|
Jean-Paul Guru
Joined: 13 Apr 2009 Posts: 307
|
Posted: Wed Jan 15, 2014 5:06 pm Post subject: |
|
|
SarahS93 wrote: | Wenn ich in dem Script anstelle von wget aria2c -x 5 einbaue, klappt es nicht mehr....
Code: | emerge-sync.sh
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Cannot stat source directory "/tmp/portage" because No such file or directory
mount: special device /mnt/squashed/portage does not exist |
Brauche ich bei aria2c eine besondere Option die ich ihm mitgeben muss? |
Du hast kein *.bzip2-File runtergeladen, sondern vielleicht ein *.xz-File - du musst tar entsprechend ändern.
Dadurch wird auch nicht entpackt und /tmp/portage nicht angelegt.
/mnt/squashed/portage kann nicht gemountet werden, weil es mksquashfs nichts zum "squashen" gefunden hat.
Das sind alles Folgefehler, weil kein *bzip2 heruntergeladen wurde. _________________ ”Everything should be made as simple as possible, but no simpler.” – Albert Einstein |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Wed Jan 15, 2014 10:39 pm Post subject: |
|
|
Ne, das war die .bzip2 Datei gewesen. Nunja .. wie geht das /var/tmp per SMB/CIFS ins Netzwerk auszulagern? Gibt es dafür garkeine Lösung? |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1668
|
Posted: Thu Jan 16, 2014 11:38 am Post subject: |
|
|
wenn du schon tmp ins netzwerk auslagerst, dann kannst du auch den portage tree auslagern. hätte dann auch den vorteil, dass wenn du mehrere systeme hast, nur einmal synchronisieren musst und du es dann auf allen system den aktuellen tree hast. spart auch bandbreite. |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Thu Jan 16, 2014 12:14 pm Post subject: |
|
|
Ich glaub NFS kann die gesamten Unix-FS Rechte usw.
Schau da mal, ob das geht. _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
SarahS93 l33t
Joined: 21 Nov 2013 Posts: 693
|
Posted: Thu Jan 16, 2014 12:49 pm Post subject: |
|
|
Muss denn root auf die NFS Freigabe zugreifen können in dem Fall wenn man /var/tmp/portage/ auslagert? |
|
Back to top |
|
|
|