Posts by JanR

    Hi,


    klingt vielleicht albern... aber nimm mal ein anderes SATA-Kabel! Gerade die, die keine Metallklammern zum Einrasten haben, leiden unter hoeheren Temperaturen und biegen sich ganz leicht auf, was dann zu Kontaktproblemen fuehren kann.


    Hatten wir auf Arbeit in zwei PC-Pools an ungefaehr 15 Rechnern, von denen einige mit solchen Fehlern abgegammelt sind.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Höhrt sich sehr kompliziert an, und wenn ich das richtig verstanden habe ist der DHCP von router A mein problem.


    Nein, dein Hauptproblem ist, dass du das Problem nicht schichtenweise angehst und die wesentlichen Teile nicht verstanden hast. Weglassen ist natuerlich eine Loesung, aber mein Posting oben zeigt eigentlich, wie man es korrekt tun wuerde.


    Quote


    wenn ich jetzt router A erstmal weglasse und alle rechner an meinen switch hänge. Also auch den selbst gebauten router B mit Linux.


    Zwei getrennte Subnetze auf ein und denselben Switch zu legen geht zwar prinzipiell, ist aber reichlich unsinnig. Das wuerde ich nicht einmal zum Probieren tun, denn du bemerkst Konfigurationsfehler wie den, den du unten gemacht hast, dann gar nicht.


    Quote


    Rechner 1: 192.168.1.1 / 25
    Rechner 2: 192.168.1.2 / 25
    Rechner 3: 192.168.1.129 / 25
    Rechner 4: 192.168.1.130 / 25


    Soweit richtig.


    Quote


    Router sieht dann folgendermaßen aus:
    eth 0: 192.168.1.126
    eth 1: 192.168.1.254


    Und jeweils 255.255.255.128 als Netzmaske!



    Falsch, hier hat dich dein eigenes Konzept verlassen. Wenn alle an einem Switch stecken, erreichen sie sich so natuerlich, und zwar ganz direkt unter Umgehung des Routers. Den kannst du dann auch ausmachen und wegwerfen. Korrekt waere eine 25-Bit-Netzmaske, also 255.255.255.128.


    Quote


    Wenn das nur an meinem swich ist, sollte das doch funktionieren. Also das die eine seite die andere erreichen kann. Oder ^^ ?


    Bei deiner Einstellung sogar ohne den Router, bei korrekter Einstellung mit Router.


    Ein Hinweis noch... hier das "route -n" von meinem oben erwaehnten Netgear:


    Code
    root@wgt634u:~# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.11.96   0.0.0.0         255.255.255.224 U     0      0        0 ath3
    192.168.11.0    0.0.0.0         255.255.255.224 U     0      0        0 ath0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


    Das zeigt eigentlich sehr schoen, wie die Routen der einzelnen Interfaces und die Default-Route zum Router nach draussen gesetzt sind. Momentan laufen nur 2 der 4 WLANs, darum auch nur zwei Routen.


    Auf dem Aussenrouter sieht das dann so aus:


    Code
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    a.b.dc.d   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    192.168.11.0    192.168.1.20    255.255.255.0   UG    0      0        0 eth0
    127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
    0.0.0.0         a.b.c.d   0.0.0.0         UG    0      0        0 ppp0


    ...da kann man sehr gut dran verstehen, wie das Routing funktioniert.


    Viele Gruesse,


    Jan

    Hi,


    Nachtrag: Du kannst in Router B natuerlich auch mit nur einer Netzkarte und virtuellen Interfaces (eth0.0 usw.) auskommen, aber dann schiesst dir das DHCP von Router A in jedem Fall dazwischen, weil es alle Anfragen beantwortet und die PC dann im falschen Subnetz landen. In dem Fall haettest du naemlich mehrere verschiedene IP-Subnetze auf einem physischen Ethernet.


    Ich benutze uebrigens eine aehnliche Konstruktion, um mein WLAN vom LAN abzutrennen. Die ueblichen DSL+WLAN-Kisten bridgen zwischen LAN und WLAN (das will ich auf keinen Fall), ich route hingegen. Da der mit openwrt laufende Netgear-Router mehrere WLANs parallel als AP bedienen kann und ich einfache Routingtabellen wollte, laeuft das zudem sogar mit /27-er Netzmasken :)


    Das sieht dann so aus:


    Primaeres LAN ist 192.168.1.0/24, der Router nach aussen ist 192.168.1.1 und ist eine Linux-Maschine. Der Netgear hat die 192.168.1.20 zum LAN hin und hat vier virtuelle WLAN-Interfaces (Atheros-Karten koennen das) fuer die Netze 192.168.11.0/27, 192.168.11.32/27, 192.168.11.64/27 und 192.168.11.96/27. In den einzelnen WLANs wird das jeweilige Interface des Netgear (also z.B. 192.168.11.97) als Default Gateway eingetragen, waehrend im LAN bekannt ist, dass die Route nach 192.168.11.0/24 (das erwischt alle /27-Netze auf einmal!) ueber 192.168.1.20 zu gehen hat. Nameserver ist 192.168.1.1 und der Netgear hat den als Forwarder eingetragen und laeuft fuer die WLANs als eigener Nameserver. Soweit die Grundstruktur... per IP-Tables kann ich auf dem Netgear dann die einzelnen WLANs ganz nach Bedarf gegeneinander und das LAN gegen einzelne WLANs abschotten.


    Noch schoener waere natuerlich, den Netgear statt in das existierende LAN ueber eine eigene Verbindung an den Router zu haengen, aber das Blade-Board, das ich dafuer nutze, hat leider nur zwei und keine drei Ethernet-Schnittstellen.


    Falls du eine Bastel- und Versuchsumgebung willst, waere ein openwrt-faehiger WLAN-Router eventuell ein dankbares Versuchsobjekt, mit dem du am Ende sogar was sinnvolles schaffen kannst...


    Viele Gruesse,


    Jan

    Hi,


    immerhin hast du das mit der 312 gesehen... :)


    Quote


    Wenn ich nun vom Router B aus eine Route einrichte, muss diese ja irgendwie zum Router A gehe. der hat aber schon ein /24 netz.


    Der Router A ist schon so ein All in One gerät. Sollte dieser das hinderniss sein, werde ich den ganzen versuch ersteinmal abblasen und nur den server weiter betreiben, ohne große weitere funktion.


    Router B ist dein Linux-Rechner, richtig?


    Aus obigem Bild geht nicht hervor, WIE du die Rechner da anschliessen willst... du musst das entweder ueber physische Netztrennung (s.u.) oder ueber einen VLAN-faehigen Switch machen, glaube aber nicht, dass du letzteres hast.


    Um das zu bauen, von dem ich glaube, dass du es bauen willst, brauchst du in diesem Rechner DREI Netzwerkkarten.


    eth0 bekommt eine dynamische Adresse von Router A und haengt als EINZIGES an diesem - alles andere von Router A trennen. Nehmen wir dazu mal an, dass Router A was anderes als 192.168.1.0/24 benutzt - wenn nicht, dann musst DU was anderes nehmen! Ich nehme jetzt einfach mal an, Router A haette 10.0.0.1/24 und wuerde eth0 von Router B die 10.0.0.2/24 zuweisen.


    eth1 bekommt eine statische Adresse (z.B. 192.168.1.126/25 aus deinem Vorschlag). Das steckst du an einen Switch und da dann noch die beiden Kinderrechner ran.


    eth2 bekommt die 192.168.1.254/25, wieder einen Switch (einen anderen!) und die beiden Elternrechner.


    Als default Gateway traegst du auf der Linux-Kiste die statische Adresse von Router A ein, also in meinem Beispiel 10.0.0.1. Default Gateway auf allen anderen Rechnern ist jeweils das passende Interface von Router B. Schon weiss dann jeder, wie es nach "draussen" geht, naemlich ueber Router B und dann A.


    In der Config kann der dhcpd von Router A niemanden mehr hinter Router B erreichen, also musst du auf Router B einen dhcpd aufsetzen, der via eth1 und eth2 die ganzen PC mit sinnvollen Adressen + Routen versorgt.


    Dann musst du noch das Routing auf dem Ding anschalten


    echo 1 > /proc/sys/net/ipv4/ip_forward


    und es sollte auf IP-Ebene funktionieren.


    Danach kommt dann das DNS, mit dem du die Namen in BEIDEN Richtungen (IP->Name und Name->IP) aufloesen kannst und Router A als forwarder eintraegst fuer den Rest.


    So funktioniert das dann, hat aber keinen wirklich erkennbaren Vorteil gegenueber dem direkten Anschluss aller vier Rechner am Switch hinter Router A - es sei denn, du blockst noch irgendwas mit iptables.


    Viele Gruesse,


    Jan

    Hi,


    mir ist bei dem Bild unklar, wie Router A mit dem Rest verbunden ist und wie genau Router B die beiden Netze trennen soll, sprich, was da welches Interface ist und was das fuer eine Kiste ist.


    Quote


    Bewege Dich am besten im selben Subnetz 255.255.255.0, soll heissen, die vergebenen IP-Adressen dürfen sich nur in der letzten Stelle unterscheiden, also 192.168.1.1 - 192.168.1.254.


    Das Bild weist eher darauf hin, das er mit 25 bittigen Netzmasken arbeiten will, also 255.255.255.128, aber ich muss gestehen, dass ich weder das Bild noch den Sinn der ganzen Uebung verstehe.


    Wozu zwei Subnetze machen, wenn sie dann doch beim Router landen, der bei beiden als Default Gateway eingetragen ist und sicher auch die jeweilige Netzroute hat? Eine Trennung erreicht man so nicht wirklich und es kann ja kaum darum gehen, getrennte Broadcastdomains zu schaffen, denn das spielt bei 4 Rechnern und der Nutzung als Heimnetzwerk nun wirklich keine Rolle.


    Ich wuerde an deiner Stelle mit einem EINFACHEN Netz anfangen: Alle Rechner in einem /24-Netzwerk, Router fuer das Internet davor und als erste Ausbaustufe einen eigenen Nameserver.


    Quote


    Ich habe Netzwerktechnik in der Schule. Ich kann das schon so einigermaßen. Aber da muss ich nach der Installation von Bind9 nur den forwarder auf 10.1.0.0 setzen und ich habe Internet.


    Unsinn. Dann hast du vielleicht die Aufloesung von externen Namen, "Internet haben" hat damit NICHTS zu tun. Das erfordert eine Route nach draussen, Namensaufloesung ist dazu egal. Ich kann den Nameserver komplett abschalten und Internet "geht" noch immer... ping einfach auf irgendeine Adresse, die die Pings nicht abdreht: ping 74.125.77.104 (das im Beispiel ist einer der Server von Google).


    Wie gesagt... loes das Ding schrittweise! Erst, wenn von ueberall aus jeder Ping, der gehen soll, geht, dann kannst du an die naechste Stufe ran, also die Namensaufloesung. Praeziser gesagt, solltest du als naechstes DHCP sinnvoll zum Laufen bekommen, damit du das hier...


    Quote


    Vorallem da nicht alle rechner auf linuxbasis sind.


    ...mal eben so nebenher loest.


    Spannend waere halt auch noch, was genau der "Router" tut... wenn das eine dieser DSL-Kisten ist, die Switch, DSL-Router und sonst noch was sind, dann hat die naemlich einen DHCP-Server ebenso eingebaut wie einen Nameserver. Solange das so ist, solltest du keine IPs per Hand vergeben, sondern das alles damit erledigen (oder das Ding deaktivieren und dein eigenes DHCP betreiben).


    Quote


    Ich habe Netzwerktechnik in der Schule. Ich kann das schon so einigermaßen.


    Bitte nicht uebelnehmen, aber auf "Schul-Netzwerktechnik" wuerde ich wenig geben. Ich hab schon so manchen Informatik-Lehramtstudenten gesehen, der glaubte, dass z.B. 100.120.130.312 eine gueltige IP-Adresse ist und der den Unterschied zwischen einer 24 und einer 25 bittigen Netzmaske nicht kannte...


    Viele Gruesse,


    Jan

    HI,


    du wirfst mehrere Sachen durcheinander... insbesondere die Adresszuweisung und die Namensaufloesung. Ich versuche mal, dir ein wenig beim Entwirren zu helfen und dir ein paar Schlagworte fuer die Suche zuzuwerfen:


    Adressen


    Jedes INTERFACE (Netzkarte, Modem, ...) hat eine Adresse, ein Rechner also gerne auch mehrere. Das ist z.B. bei einem Router spannend, der mit einem "Bein" im Internet und dem anderen im LAN haengt.


    Routen


    Jeder Rechner braucht Routen, um andere Rechner zu finden. Jedes Interface hat standardmaessig nur die seiner Netzmaske entsprechende Route, also bei einem 192.168.1.x-Netz mit Maske 255.255.255.0 waere das die Route zu allen anderen Rechnern des LANs. Konkret heisst das, dass der Rechner dieses Interface nimmt, um irgendwas im LAN zu erreichen (logisch...).


    Zusaetzlich kann man Routen zu anderen Zielen definieren, wobei die Default route das "catch all" zu allen anderen Zielen ist.


    Ein Rechner, der LAN ueber ein Interface und Internet ueber das andere hat (z.B. DSL-Modem oder so), hat also eine Route je Interface und die default route zeigt auf den providerseitigen Router der DSL-Verbindung. Wie man den erreicht, verraet die Route des Interface, diese Regel sagt dann "schick da alles hin, was du sonst nicht zuordnen kannst" (also allen Internet-Traffic).


    Bei dir ist es vermutlich so, dass das der DSL-Router macht, zu dem die Default Route aller Rechner zeigen muss... aenderst du das, ist das Netz weg.


    Namen


    Jeder IP-Adresse kann man einen Namen zuordnen - das macht der Nameserver. Wenn du hier was eigenes einfuehren willst, brauchst du einen eigenen Nameserver (z.B. bind) auf deinem Rechner, der dein .home kennt und alles andere per forwarder an den Nameserver deines Providers schickt.


    Ergo: Fuer das, was du vorhast, musst du:


    - eine Vernetzung ueberlegen (welcher Rechner liegt in welchem Subnetz, welche Adressen, wie mit der Aussenwelt gekoppelt)
    - Routen definieren
    - Nameserver aufsetzen


    Ich hoffe, das hilft dir bei der Loesung... im Interesse des Lerneffektes habe ich mich absichtlich auf eher allgemeine Erklaerungen beschraenkt... du kannst zu all diesen Dingen sehr viel ergooglen.


    Schau dir auch mal an, was der Unterschied zwischen einem Switch und einem Router ist - vermutlich hilft das auch beim Verstaendnis.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Da dauert der sync schon lang genug.


    An der Stelle unterscheiden sich zumindest in der Haeufigkeit die Kernelversionen (nach deiner Sig hast du noch 2.4.x im Einsatz). Bei 2.4.x hat es gereicht, den Rechner hart auszuschalten bzw. dass dies im Rahmen eines Absturzes oder Stromausfalls passiert, damit hinterher ein Raid-Resync stattfindet. Das ist bei 2.6.x nicht mehr so. Ausschalten oder Komplettabsturz des Systems fuehrt im Normalfall nicht zum Resync.


    Von daher sind die Resync-Zeiten bei 2.6 deutlich unwichtiger, weil sie wesentlich seltener auftreten.


    Mein grosses 1,7 TB-Raid5 (3 Partitionen von etwa 900GB) braucht ungefaehr 2...2,5 Stunden zum kompletten Synchronisieren mit knapp ueber 100 MB/s (ohne parallele Zugriffe, sonst laenger). Finde ich fuer die Groesse eigentlich okay... aber das geht natuerlich nur bei neueren SATA-Platten und einem entsprechend schnellen Board.


    Viele Gruesse,


    Jan

    Hi,


    hab gerade noch ein wenig mit HFlor hin-und hergePNt, wobei mir was auf- bzw. eingefallen ist: Solche Fehler KANN das RAID prinzipbedingt nicht abfangen bzw. korrigieren. Anzeigen sollte es sie (es zaehlt wohl auch einen Missmatch-Count hoch), aber mehr kann nicht passieren.


    Der Punkt bei einem RAID ist naemlich, dass die Funktion darauf basiert, dass durch das Verhalten der Platten absolut klar ist, WELCHE Platte kaputt ist. Das wird erkannt, indem eine Lese- oder Schreiboperation schiefgegangen ist. DAS ist der Trigger, nichts anderes. Andere Fehler sind durch ein paritaetsbasiertes Verfahren nicht behebbar, weil der Fehler nicht lokalisiert werden kann.


    Nehmen wir einfach mal an, wir haben ein RAID1 (da wird es auch passieren... HFlor hat es zumindest bei RAID5 auch gesehen. RAID1 ist ein Spiegel, wir haben also zweimal das gleiche auf den Platten. Jetzt ueberschreiben wir eine per DD und aendern ein bisschen was. Jetzt sind sie nicht mehr gleich und ein Check wird das auch sehen - fragt sich nur, wie er es genau protokolliert (in jenem Counter, vielleicht kommt auch mehr ins Log... werde ich mal versuchen). Problem fuer den Check ist nur, dass es ZWEI Datensaetze gibt, die unterschiedlich sind... welcher ist korrekt? Es koennen beide sein!


    Hat jedoch eine Platte kaputte Sektoren oder so, dann gibt es bei Scrubbing an der Stelle einen Lesefehler -> voila. Nur DAS wird vom RAID abgefangen, keine Datenaenderungen auf den Platten OHNE gleichzeitigen Lese- oder Schreibfehler. Eine Datenverfaelschung auf dem Medium hingegen fuehrt beim Lesen zum CRC-Fehler und der zum Lesefehler, nur kann man das nicht simulieren, denn alles, was man schreibt, wird ja auch geCRCt. Von daher ist das quasi ein Test, der etwas testet, was normal nicht passieren kann durch sterbende Platten.


    Beim Scrubbing geht es aber eben um schleichende Lesefehler auf Platten, die man sonst nicht bemerkt. Stellen wir uns vor, wie klatschen einen grossen Film auf unser RAID und schauen den erstmal nicht mehr an. Monate spaeter setzt genau an einer der Stellen, die dazugehoeren, beim Positionieren einer der Koepfe mal kurz auf und schaedigt die Oberflaeche EINER Platte. Da das keine Lese/Schreiboperation war, gibt es keinen Fehler. Da wir den Film NIE lesen, merkt auch keiner den Fehler und das RAID bleibt intakt. Jahre spaeter stirbt eine zweite Platte, das RAID trennt die Platte ab und will eine neue. Wir bauen die ein, resync... BUMM. Genau dafuer ist Scrubbing da... eine kaputte Platte durch komplettes Lesen zu erkennen.


    Quote


    Einen reinen Plattentest kann ich mit smartctl anstossen.


    Das geht auch, man kann auch einfach ein dd if=/dev/mdX of=/dev/null ueber das RAID laufen lassen. Egal wie... Fakt ist, dass man alles lesen muss, um sowas auszuschliessen.


    Hoffe, obige Ueberlegungen sind verstaendlich geschrieben und klaeren, warum ein RAID das Ueberschreiben von Plattenbereichen nicht sinnvoll beheben kann und auch nur seltsam erkennt (eben weil es im Fehlermodell nicht vorkommt).


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Die Platte enthielt danach immer noch die Nullen in dem überschriebenen Bereich.
    Nach einem Entfernen und Hinzufügen (resync dieser Platte) waren die Nullen dann weg.



    Also wozu einen check, wenn der keine Fehler findet? Einen reinen Plattentest kann ich mit smartctl anstossen.


    Ueberaus seltsam... das DARF eigentlich nicht sein, auch sowas MUSS erkannt werden. Wenn ich demnaechst mal wieder Zeit habe, baue ich das mal in einer VMWare nach und teste das (fuer RAID1 und RAID5... RAID6 hast du ja schon getestet)... mein grosses RAID5 will ich da lieber nicht als Versuchskandidat nehmen, da es dann zumindest zeitweise seine Redundanz loswird).


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Diesen Thread hier möchte ich nicht highjacken, aber kennst Du Dich auch mit iSCSI aus?


    Ich habs mal getestet...


    Ich wuerde eher mehrere kleinere RAID5 machen und deren Devices dann per iSCSI exportieren, das duerfte in jedem Fall schneller sein als eine Datei auf dem RAID5, da du so das Filesystem umgehst und dir sicher sein kannst, dass benachbarte Bloecke im iSCSI-Geraet auch wirklich benachbart sind.


    Ich hab das mit AoE (ATA over Ethernet) vor ner Weile mal getestet, da war der Export des Raw-Devices deutlich schneller als der einer Datei. Duerfte bei iSCSI aehnlich sein und als Backup kannst du ja auch das Device einfach dd'en.


    Du musst halt nur bedenken, dass du mit iSCSI mit normalen Filesystemen NICHT sharen kannst, es darf immer nur einer zugreifen. Das Geraet selbst koennte es, dann braucht man aber ein Clusterfilesystem mit leider recht hohem Overhead (auch das habe ich mal mit dem OracleFS auf einem AoE getestet).


    Von AoE wuerde ich uebrigens abraten, auch wenn der Protokolloverhead (es geht ueber reines Ethernet, ohne IP und ohne TCP) viel geringer ist, denn die Serverseite ist bei weitem nicht so ausgereift und erzeugt enorme Last.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Ich dachte: Platten A+B gespiegelt, dann das ganze gestriped mit den gespiegelten Platten C+D. Dann koennen 2 beliebige abkratzen...


    Gibt es auch... das eine ist RAID 10, das andere 0+1. Ist aber nicht VIEL besser - hier meine Folien dazu:


    https://flint.kbs.cs.tu-berlin.de/svn/DS2008/web/08-Raid.pdf


    Folien 18 und 20.


    Zuverlaessigkeit: Den Ausfall der ersten Platte ueberleben sie beide, bei der zweiten wird es dann spannend:


    RAID 10: Nehmen wir mal an, die ganz linke Platte faellt aus (bezieht sich auf obige Folien). Faellt nun noch die zweite von links aus, dann war es das mit den Daten, weil dann die eine Haelfte des Stripes (ueber den Spiegeln) weg ist. Faellt hingegen eine der beiden rechten aus, ist es egal. Fazit: 1 boeser, 2 gute Faelle.


    RAID 0+1: Wieder die ganz linke Platte... nun stirbt das Array, wenn EINE der beiden rechten ausfaellt, da damit der rechte Stripeset auch kaputt ist. Fazit: 2 boese, 1 guter Fall.


    Wer es ganz genau wissen will, rechne nach der Idee von Folie 22 mit einem RBD.


    Ergebnis insgesamt: Bei 4 Platten ist RAID 6 sehr viel sinnvoller als RAID 10 oder 0+1, es sei denn, es kommt auf Geschwindigkeit an.


    Und wenn wir gerade dabei sind... habt ihr fuer eure Monster-RAIDs auch an Disc-Scrubbing gedacht (Folie 29)? Das ist gerade bei Videos, die man vielleicht nur selten schaut, sehr wichtig, da viele Plattenfehler erst beim ZUGRIFF festgestellt werden koennen und somit jahrelang unbemerkt bleiben und erst beim Syncen nach dem Ausfall einer ANDEREN Platte auftauchen. Ohne Scrubbing ist die Wahrscheinlichkeit eines Doppelfehlers sehr viel hoeher, als man das allgemein so glaubt.


    Viele Gruesse,


    Jan

    Hi,


    frag am besten mal per Mail beim Hersteller an. Ich hab das fuer meinen Sanyo-Beamer damals gemacht und bekam dann ein PDF mit der Belegung (ist ein Spezialstecker) und die Liste der Kommandos. Damit kann man beim Sanyo Z4 die Quellen, die Zoomeinstellung und noch einiges andere umschalten und z.B. die Betriebsstunden auslesen.


    ist aber wirklich geraetespezifisch.


    Ich nutze es zusammen mit AVARDS fuer die automatische Formatumschaltung.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Bis 4GB kann man 32bit Linux problemlos nutzen, auch ohne Performanzeinbussen.


    Ein Argument ist noch ungesagt bisher: Wenn 4 GB drinstecken, kann 32-Bit Linux je nach der drinsteckenden Hardware (!) dennoch nicht 4 GB nutzen, sondern irgendwas zwischen etwa 2,8 und 3,5. Der Grund ist, dass die IO-Bereiche der verschiedenen Karten (vor allem Grafikkarten mappen gerne Speicher in den Adressraum der CPU) ebenfalls in dem 32bittig adressierten Speicherraum Platz haben muessen. Das blendet dann zwangslaeufig Speicher aus, auf den man nicht zugreifen kann. Darum haengt das wiederum von der Ausstattung ab... zwei Grafikkarten beispielsweise korrigieren die Werte ordentlich nach unten.


    Fuer manche Geraete gilt das auch im 64 Bit-Betrieb (wenn das Geraet naemlich nicht 64bittig adressierbar ist), nur ist das da kein Problem, weil dann Speicher umgemappt wird. Ein Blick in /proc/mtrr ist da aufschlussreich. Auf meiner Workstation (nforce4, K8 Dualcore, 4 GB, 64 Bit) sieht das z.B. so aus:


    Code
    reg01: base=0x80000000 (2048MB), size= 512MB: write-back, count=1
    reg02: base=0xa0000000 (2560MB), size= 256MB: write-back, count=1
    reg03: base=0x100000000 (4096MB), size=1024MB: write-back, count=1
    reg04: base=0x140000000 (5120MB), size= 256MB: write-back, count=1


    Man sieht gut, dass eigentlich nur 2 3/4 GB Speicher unterhalb von 4 GB gemapt sind, die uebrigen 1 1/4 GB liegen ab 4 GB. Auf dieser Maschine haette man mit einem 32bit-Kern entsprechend nur 2,8 GB Speicher, auch wenn 4 drinstecken. Grund ist hier, dass aufgrund des Dualhead-Betriebes (ein Rechner, 2 Monitore/Tastaturen/Maeuse) 2 Grafikkarten drinstecken, die beide Speicher unter 4 GB wollen.


    Von daher kann PAE (Einstellung 64 GB, siehe oben) auch bei 4 GB was bringen, bremst aber auch ein wenig.


    Oder eben... wie ich es tue... ein 64 Bit-Kernel. Spaetestens, wenn man auf modernen Boards Speicher weit jenseits von 4 GB hat, wird das dann unumgehbar, warum also nicht vorher schon ueben? :)


    Viele Gruesse,


    Jan

    HI,


    IMO liegt die Grenze etwas hoeher, bei knapp 900 MB. Zumindest ist das der Speicher, den man hat, wenn man mit 1 GB oder mehr einen Kernel startet, der ohne Highmem kompiliert ist.


    Viele Gruesse,


    Jan

    Hi,


    PAE: Geht, kostet aber etwas Performance (IMO 10% oder so) - dann hast du auch 4 GB unter einem 32 Bit-System. Duerfte aber dennoch lohnen, denn wenn es als dynamischer Plattencache verwendet wird, ist es auf jeden Fall schneller als jede Platte.


    Quote


    DualChannel-Betrieb ist auch möglich mit z.B. 2x 512MB + 1x 1024 MB.


    IMO kommt das sehr auf Board und BIOS an, was dann genau passiert.


    Edit: Wenn es um das AM2-System aus deiner Signatur geht... warum eigentlich kein 64Bit-System? Nahezu alles funktioniert doch damit... mein VDR laeuft seit Juni 2007 so.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Aber es sollte doch performant sein. Ach so, wäre nett wenn auch Google Earth läuft, geht ja mit OpenGL oder Direct3D. Vom dem her wäre dann doch etwas 3D dabei ;) .


    Koennte man aber auch auf dem Linux-Host laufen lassen... dann erledigt sich das Problem mit dem Durchreichen des 3D komplett.


    Ich wuerde, wie gesagt, folgendes (nach wie vor) machen: Linux-Distribution deiner Wahl drauf, VDR drauf, Desktop-Zeugs drauf mit Google-Earth und dazu rdesktop. Dann vmware-server (oder VirtualBox, wobei letzteres nach meinen Erfahrungen deutlich unstabiler ist) und dadrin ein XP installieren, auf das per rdesktop zugegriffen wird. Fuer die von dir genannten Anwendungen ist das mehr als ausreichend. Du koenntest sogar ueberlegen, Mail und Web auch auf das Linux-System zu nehmen, denn im Grunde gibt es ja kaum einen Grund, sowas wie Thunderbird oder Firefox unter Windows auszufuehren - die funktionieren ja identisch. Fuer Office und Bildbearbeitung gibt es (ungeachtet der Tatsache, dass es da auch fuer Linux gute Programme gibt) hingegen mehr Gruende, es auf Windows zu machen... aber die sind ja beide nicht von der Grafik her performancekritisch (ich benutze beides ueber rdesktop auf einem W2K3-Server auf Arbeit).


    Die Daten leg alle auf das Linux-System und lass es die Windows-VM per samba mounten. Dann hat man ueberall die gleichen Daten und kann nahtlos mit beidem arbeiten. Wenn du dann noch rdesktop "seamless" betreibst, dann merkt man nicht einmal mehr, dass es zwei Systeme sind...


    Waere dann halt die Frage, wieviel "Windows-Feeling" erhalten bleiben soll... wenn das wichtig ist, dann eben mehr im Windows...


    Viele Gruesse,


    Jan

    Hi,


    Quote


    Man kann aber auf dem Host-Linux den VDR laufen lassen und den Rest in VMware- oder Virtualbox-VMs (ohne XEN)


    Das ist richtig, aber ich sehe keinen wirklichen Grund, den VDR bei so einer Anwendung zu virtualisieren. Dafuer wird es dann auch out-of-the-box funktionieren...


    Von daher wuerde ich die Virtualisierung in der Tat auf das Windows beschraenken.


    Viele Gruesse,


    Jan

    Hi,


    das geht problemlos. Bau einen stromsparenden Rechner, mach Linux drauf und installier vmware-server (ist deutlich unkritischer als XEN und geht mit nahezu jedem Kernel zusammen, kostet auch nichts). Da wirf ein XP oder was auch immer als virtuelle Maschine rein und lass das ohne Oberflaeche als Serverdienst laufen (bootet automatisch mit). Schalt den Remotezugang ein (geht irgendwo unter "System") und leg Nutzer an.


    Dann kannst du entweder X mit "rdesktop -f ... " (am besten mit 24 Bit Farbtiefe und -x lan) auf die vmware ansetzen oder du legst fuer dich und deine Frau jeweils einen Nutzer an, wobei du in ihre .xinitrc eben obiges reinschreibst. Dann landet sie nach dem Login auf dem Windows, waehrend du das Linux nutzen kannst oder wie auch immer variiert.


    Man kann natuerlich auch die vmware-server-console direkt dafuer nutzen, ich finde das mit rdesktop aber deutlich handlicher und IMO auch schneller.


    Viele Gruesse,


    Jan

    Hi,


    Quote


    ich währe dir sehr verbunden wenn du deinen Code daruf hin abspecken könntest oder zumindest erklärst wo ich Abspecken kann.


    Fuer ersteres habe ich leider keine Zeit... letzteres versuche ich hiermit.


    Du musst halt rausbekommen, was genau du auf die serielle Schnittstelle schreiben musst, damit dein Pin aktiv wird oder eben nicht - ich war davon ausgegangen, dass du das schon weisst, weil du ja die Schaltung gebaut hast. Das ist das, was ich mit "Kommandos" meine.


    Dann schau dir das Script mal zeilenweise an.


    if b == '16:9':


    sagt, dass danach der Fall fuer 16:9 kommt. Da setzt du statt xxx eben dein 16:9-Kommando ein. Den "else"-Zweig, in dem ich die verschiedenen nicht-anamorphen Formate zerlege, kannst du auf die Zuweisung fuer 4:3 reduzieren.


    Weiter unten fliegt alles mit ser.readline und die dazugehoerige Auswertung raus, du schreibst eben mit


    ser.write(format)


    den Formatstring auf die serielle Schnittstelle. Alles andere kannst du wegwerfen und einfach nur die logische Struktur beibehalten.


    Also:


    einlesen von stdin ( a = sys.stdin.readline() usw)
    Auftrennen in die beiden Faelle, format-String setzen
    Ausgaben mit ser.write
    und wieder von vorne (darum ist ein while 1==1 drum herum)


    Hilft das?


    Und: Immer schoen dran denken... Einrueckung definiert die Bloecke und ersetzt die Klammern.


    Viele Gruesse,


    Jan