373 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			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 -G 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>
 |