Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="de">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>RAID Rechner</title>
- <style>
- body { font-family: Arial, sans-serif; text-align: center; }
- .container { max-width: 600px; margin: auto; padding: 20px; }
- .disks { display: flex; justify-content: center; margin-top: 10px; }
- .disk { width: 40px; height: 60px; background: gray; margin: 5px; border-radius: 5px; }
- .disk.faulty { opacity: 0.3; }
- .error { color: red; font-weight: bold; }
- </style>
- </head>
- <body>
- <div class="container">
- <h1>RAID Rechner</h1>
- <label for="raidType">RAID-Level:</label>
- <select id="raidType" onchange="updateRaid()">
- <option value="RAID 0">RAID 0</option>
- <option value="RAID 1">RAID 1</option>
- <option value="RAID 5">RAID 5</option>
- <option value="RAID 6">RAID 6</option>
- <option value="RAID 10">RAID 10</option>
- <option value="RAID 50">RAID 50</option>
- <option value="RAID 60">RAID 60</option>
- </select>
- <br><br>
- <label>Anzahl der Festplatten:</label>
- <input type="number" id="diskCount" value="2" min="2" onchange="updateRaid()">
- <br><br>
- <label>Speicher pro Festplatte (TB):</label>
- <input type="text" id="diskSize" value="1" onchange="updateRaid()">
- <br><br>
- <p><strong>Beschreibung:</strong> <span id="description"></span></p>
- <p><strong>Fehlertoleranz:</strong> <span id="faultToleranceText"></span></p>
- <p><strong>Verfügbarer Speicher:</strong> <span id="availableStorage"></span> TB</p>
- <p id="errorMessage" class="error"></p>
- <div class="disks" id="diskDisplay"></div>
- </div>
- <script>
- const raidConfigs = {
- "RAID 0": { minDisks: 2, faultTolerance: 0, storage: (n, s) => n * s, description: "Keine Redundanz, aber hohe Geschwindigkeit. Mindestens 2 Festplatten erforderlich." },
- "RAID 1": { minDisks: 2, faultTolerance: 1, storage: (n, s) => s, description: "Spiegelt die Daten. Eine Festplatte kann ausfallen. Mindestens 2 Festplatten erforderlich." },
- "RAID 5": { minDisks: 3, faultTolerance: 1, storage: (n, s) => (n - 1) * s, description: "Verwendet verteilte Parität. Eine Festplatte kann ausfallen. Mindestens 3 Festplatten erforderlich." },
- "RAID 6": { minDisks: 4, faultTolerance: 2, storage: (n, s) => (n - 2) * s, description: "Erhöhte Parität. Zwei Festplatten können ausfallen. Mindestens 4 Festplatten erforderlich." },
- "RAID 10": { minDisks: 4, faultTolerance: "50%", storage: (n, s) => (n / 2) * s, description: "Kombination aus RAID 1 und 0. Hälfte der Festplatten kann ausfallen, wenn die Spiegelpaare intakt bleiben. Mindestens 4 Festplatten erforderlich." },
- "RAID 50": { minDisks: 6, faultTolerance: 2, storage: (n, s) => ((n / 3) * (3 - 1)) * s, description: "Kombination aus RAID 5 und 0. Mindestens 6 Festplatten erforderlich (optimal in 2 oder mehr RAID-5-Gruppen)." },
- "RAID 60": { minDisks: 8, faultTolerance: 4, storage: (n, s) => ((n / 4) * (4 - 2)) * s, description: "Kombination aus RAID 6 und 0. Mindestens 8 Festplatten erforderlich (optimal in 2 oder mehr RAID-6-Gruppen)." }
- };
- function updateRaid() {
- const raidType = document.getElementById("raidType").value;
- const diskCount = parseInt(document.getElementById("diskCount").value);
- let diskSize = document.getElementById("diskSize").value.replace(",", ".");
- diskSize = parseFloat(diskSize);
- if (isNaN(diskSize) || diskSize <= 0) {
- diskSize = 1;
- document.getElementById("diskSize").value = "1";
- }
- const raid = raidConfigs[raidType];
- if (diskCount < raid.minDisks) {
- document.getElementById("errorMessage").innerText = "Mindestens " + raid.minDisks + " Festplatten erforderlich für " + raidType + "!";
- document.getElementById("diskDisplay").innerHTML = "";
- document.getElementById("availableStorage").innerText = "-";
- document.getElementById("faultToleranceText").innerText = "-";
- return;
- } else {
- document.getElementById("errorMessage").innerText = "";
- }
- const faultTolerance = typeof raid.faultTolerance === "number" ? Math.min(raid.faultTolerance, diskCount - 1) : Math.floor(diskCount / 2);
- const availableStorage = raid.storage(diskCount, diskSize);
- document.getElementById("description").innerText = raid.description;
- document.getElementById("faultToleranceText").innerText = faultTolerance + " " + (faultTolerance === 1 ? "Festplatte kann ausfallen." : "Festplatten können ausfallen.");
- document.getElementById("availableStorage").innerText = availableStorage.toFixed(1).replace(".", ",");
- const diskDisplay = document.getElementById("diskDisplay");
- diskDisplay.innerHTML = "";
- for (let i = 0; i < diskCount - faultTolerance; i++) {
- const disk = document.createElement("div");
- disk.className = "disk";
- diskDisplay.appendChild(disk);
- }
- for (let i = 0; i < faultTolerance; i++) {
- const disk = document.createElement("div");
- disk.className = "disk faulty";
- diskDisplay.appendChild(disk);
- }
- }
- updateRaid();
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement