linuxkurs/9.html

373 lines
12 KiB
HTML

<!doctype html>
<html lang="de">
<meta charset="utf-8">
<title>Einführung in Linux</title>
<meta name="description" content="YALC - Yet Another Linux Course ">
<meta name="author" content="Daniel Schubert">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/league.css" id="theme">
<link rel="icon" href="img/openlogo-nd-25.png" type="img/png">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<style type="text/css">
.reveal img{ max-height: 60vh}
</style>
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
<h1>LINUX</h1>
<h3>Das universelle Betriebssystem</h3>
<p>Eine Einführung - Teil 9
<p>
<small>Deutsche Angestellten Akademie</small>
</p>
<aside class="notes">
Frage: Fragen zur letzten Stunde?
</aside>
</section>
<section data-transition="slide" data-background="lightblue" data-background-transition="zoom">
<h2 style="text-shadow: 5px 4px 15px black;">Systemverwaltung</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 7 - Dateisysteme Fortsetzung</h2>
</section>
<section>
Partitionen mit systemd mounten
<img src="img/suprised-cat.jpg">
</section>
<section>
<code>/etc/systemd/system/mnt-backups.mount</code>
<pre><code>[Unit]
Description=Mount System Backups Directory
[Mount]
What=/dev/disk/by-uuid/86fef3b2-bdc9-47fa-bbb1-4e528a89d222
Where=/mnt/backups
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target</code></pre>
<pre><code>systemctl start mnt-backups.mount </code></pre>
<pre><code>systemctl status mnt-backups.mount </code></pre>
<div class="fragment">Mount Units müssen heissen wie das mount point Verzeichnis.: <br><code>/mnt/backups -> mnt-backups.mount</code></div>
<aside class="notes">die Jungs das mache nlassen</aside>
</section>
<section>
<h4>ISO Mounten - Bootstick machen</h4>
<div style="color: orange">Aufgabe:</div>
<ul style="font-size: .8em">
<li class="">Ladet das aktuelle DVD Image von Knoppix herunter.</li>
<li>http://www.knopper.net/knoppix/</li>
<li class=" ">Verifiziert den Download anhand der sha1 checksum.</li>
<li><pre><code>sha1sum -c datei.sha1</code></pre></li>
<li class=" ">Mountet es im Verzeichnis ~/knoppix.</li>
<li class=" "><pre><code>sudo mount -o loop .....</code></pre></li>
</ul>
</section>
<section>
Erstellt einen Bootbaren USB-Stick aus dem Image mit <code>dd</code>
<pre><code>sudo dd if=KNOPPIX.iso of=/dev/USBSTICK bs=2MB status=progress</code></pre>
<span style="color: red">ACHTUNG: Ziel überprüfen!!1!</span>
<p>
<span style="color: green">Versucht ob der Bootstick bootet ;-)</span>
<p style="font-size: .6em">https://wiki.archlinux.de/title/Image-Erstellung_mit_dd
</ul>
</section>
<section>
<h4>quota</h4>
<ul>
<li class="fragment ">Beschränkung von :
<ul>
<li class="fragment ">Speicherplatz</li>
<li class="fragment ">Anzahl der Dateien</li>
</ul>
<li class="fragment ">per User oder per Group</li>
</li>
</ul>
</section>
<section>
<div> Übung: Einrichten von Quotas auf einem isolierten Dateisystem</div>
</section>
<section><pre><code>sudo apt-get install quota</code></pre></section>
<section style="font-size:.9em">
<p>Verzeichnisse erstellen
<pre><code>sudo mkdir /quota
sudo mkdir -p /usr/disk-img
</code></pre>
<p>Erstellen einer 20 MB grossen Datei.<br>Dient als isoliertes Dateisystem.
<pre><code>
sudo dd if=/dev/zero of=/usr/disk-img/disk-quota.ext3 count=40960
</code></pre>
dd benutzt eine block size von 512 bytes. 40960*512=20971520.
<pre><code>ls -lh /usr/disk-img/disk-quota.ext3</code></pre>
</section>
<section>
<div>Formatieren der Datei als ext3
<pre><code>sudo mkfs -t ext3 -q /usr/disk-img/disk-quota.ext3 -F </code></pre>
<div>in die /etc/fstab
<pre style="width: 80vw"><code>/usr/disk-img/disk-quota.ext3 /quota ext3 rw,loop,usrquota,grpquota 0 0 </code></pre>
</section>
<section>
<div>mounten
<pre><code>sudo mount /quota</code></pre>
<div>prüfen
<pre><code>grep 'quota' /proc/mounts</code></pre>
<pre><code>mount | grep '/quota'</code></pre>
</section>
<section>
<div>Gruppe erstellen, Benutzer hinzufügen
<pre><code>sudo groupadd quotagrp
sudo usermod -aG quotagrp USERNAME </code></pre>
<div>Verzeichnis erstellen, Rechte setzen
<pre><code>sudo mkdir -p /quota/share
sudo chown -R root.quotagrp /quota/share
sudo chmod 2775 /quota/share
</code></pre>
</section>
<section>
<pre><code>ls -ld /quota/share
drwxrwsr-x 2 root quotagrp 1024 Jul 19 15:16 /quota/share/
^---------- beachtet das s, setgid bit, von chmod 2775</code></pre>
Damit die neuen Rechte wirksam werden muss der betr. User neu angemeldet werden, oder:
<pre><code>su - USER</code></pre>
</section>
<section>
2 Dateien als quota konfiguration erstellen : aquota.group aquota.user
<pre><code>sudo quotacheck -cug /quota</code></pre>
Quota bearbeiten:
<pre><code>sudo edquota -f /quota USER</code></pre>
<pre><code>Disk quotas for user USER (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/loop0 0 100 200 0 10 15
</code></pre>
</section>
<section>
<p>Quota einschalten:
<pre><code>sudo quotaon</code></pre>
<p>Quota prüfen:
<pre><code>sudo quotaon -p -a</code></pre>
</section>
<section>
Dateien anlegen:
<pre><code>~$ for i in $(seq 20); do touch "/quota/share/file_$i"; done</code></pre>
<pre class="fragment"><code>~$ sudo quota USER</code></pre>
<pre class="fragment"><code>~$ sudo repquota /quota</code></pre>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h4>Was für Dateisysteme gibt es denn jetzt??</h4>
</section>
<section>
Wir nutzen heutzutage sog. journaling Filesysteme. <br>Jede Operation wird in das „Journal“ geschrieben, ausgeführt, anhand des Journals überprüft.<br> Erlaubt schnelle Konsistenzprüfung nach zB Stromausfall.
</section>
<section>
<p>einige Dateisysteme sehen regelmässige Überprüfung beim Systemstart vor. Passiert nach einer gewisse Anzahl von mounts ( einstellbar mit <code>tune2fs</code>
)
<pre><code>sudo tune2fs -l /dev/sda1 | egrep -i 'check|mount count'</code></pre>
<p>fsck nur mögl. bei ausgehängten Partitionen. Erzwinge Prüfung d. Systempartition bei Start mit Datei <code>/forcefsck</code>
</section>
<section style="font-size: .7em">
<h4>Dateiysteme</h4>
<ul>
<li class="fragment ">ext2, ext3, ext4
<ul>
<li class="fragment "> Ext4 max. Dateigrösse: 16 TByte</li>
<li class="fragment "> Ext4 max. Partitions-Grösse: 1024 PByte</li>
</ul></li>
<li class="fragment ">btrfs
<ul>
<li class="fragment ">Snapshots</li>
<li class="fragment ">Internes RAID</li>
<li class="fragment ">grösse lässt sich im Betrieb ändern</li>
<li class="fragment ">Subvolumes</li>
<li class="fragment ">Datei-Kompression</li>
<li class="fragment ">Copy-on-Write: geänd. Daten werden als Kopie geschrieben</li>
<li class="fragment ">max 16 Exabyte </li>
</ul></li>
<li class="fragment ">xfs - speziell für sehr grosse Dateien</li>
<li class="fragment ">zfs - gilt als Maßstab; aktuell Lizenz Probleme.</li>
</ul>
</section>
<section>
<h4>windows / OSX</h4>
<ul>
<li class="">fat32 / vfat - gebr. für SD-Karten / USB Sticks</li>
<li class="fragment ">exfat - weiterentw. v. vfat - Linux ben. Treiber</li>
<li class="fragment ">ntfs - Windoes..</li>
<li class="fragment ">hfs - OS X - Linux kann lesen, schreiben nur wenn journaling aus</li>
</ul>
</section>
<section>
<h4>CD / DVD</h4>
<ul>
<li class=" ">iso9660</li>
<li class="fragment ">udf - häufig bei DVDs</li>
</ul>
</section>
<section>
<h4>Netzwerkdateisysteme</h4>
<ul>
<li class="">nfs - Network File System; nur Linux</li>
<li class="fragment ">smbfs / cifs - Windows- und Samba-Freigaben</li>
<li class="fragment ">sshfs - Einbindung über SSH erreichbarer Verz.</li>
<li class="fragment ">coda - wie NFS; selten</li>
</ul>
</section>
<section>
<h4>Spezielle Linux Dateisysteme</h4>
<ul>
<li class="fragment ">devpts - /dev/pts/* Pseudeo Terminals ( PTY ); emulieren serielle Schnittstelle</li>
<li class="fragment ">proc u. sysfs
<ul>
<li class="fragment ">/proc/ -> der Kernel </li>
<li class="fragment ">/sys/ -> Zusammenhänge zw. Kernel und Hardware </li>
</ul>
</li>
<li class="fragment ">tmpfs - Datenaustausch zw. Programmen</li>
</ul>
</section>
<section><h4>swap</h4>
Kann auch eine Datei sein:
<pre><code>dd if=/dev/zero of=/swapfile count=1024
mkswap /swapfile 1000
sync
swapon -v /swapfile
cat /proc/swaps
</code></pre>
</section>
<section>
<h4>Andere</h4>
<ul>
<li class=" ">squashfs -> Read Only FS</li>
<li class="fragment ">loop -> Adapter um gewöhnliche Datei wie eine Block-Device anzusprechen. zB um ein iso zu mounten</li>
<li class="fragment ">unionfs / aufs /mhddfs -> erlaubt Dateisysteme transparent zu „stapeln“</li>
<li class="fragment ">verschlüsselte Dateisysteme</li>
</ul>
<p class="fragment"><code>cat /proc/filesystems</code></p>
</section>
<section>
<pre><code>man mkfs</code></pre>
<pre><code>mkfs.ext4 /dev/sdXX</code></pre>
</section>
<section>Kommentar zu <span style="color: orange">Dual-Boot Systemen</span>:
<p>Windoes stop ggfls. in einem Schnellstart-Zustand.
<p>Bei Schreib-Zugriff auf Windoes Partition aus Linux kann inkonsistentes Win-Dateisystem die Folge sein.
<p style="color:green">Windoes vorher komplett runterfahren!
</section>
<section>
<h4>RAID</h4>
<h5>Redundant Array of Independent Disks</h5>
<a href="https://de.wikipedia.org/wiki/RAID#Die_gebräuchlichen_RAID-Level_im_Einzelnen">Wikipedia RAID</a>
</section>
<section><img src="img/z4yri.jpg"></section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/search/search.js', async: true },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>