[{"data":1,"prerenderedAt":1477},["ShallowReactive",2],{"blog-current-richtiges-chroot-im-rettungsmodues-mit-arch-chroot-de":3,"blog-previous-richtiges-chroot-im-rettungsmodues-mit-arch-chroot-de":280,"blog-next-richtiges-chroot-im-rettungsmodues-mit-arch-chroot-de":293,"blog-alt-de-richtiges-chroot-im-rettungsmodues-mit-arch-chroot-de":306,"blog-alt-en-richtiges-chroot-im-rettungsmodues-mit-arch-chroot-de":307,"employee-bernd-helm":309,"content-query-IyVdAveXkZ":414,"content-query-yFFm3xXL85":933,"content-query-1PFeYVQSzn":1414,"related-refs-devops--de":1450},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"image":11,"releaseDate":12,"blogCategories":13,"articleTags":16,"tags":18,"body":20,"_type":274,"_id":275,"_source":276,"_file":277,"_stem":278,"_extension":279},"/blog/richtiges-chroot-im-rettungsmodues-mit-arch-chroot","blog",false,"","Richtiges CHROOT im Rettungsmodus mit arch-chroot","Die meisten Sysadmins wissen, wie man ein einfaches chroot auf einem gemounteten Dateisystem einrichtet (mount-binding dev, proc und sys), aber das funktioniert nicht in jedem Fall; für ein vollständiges chroot-Setup benötigen Sie außerdem dev/pts dev/shm, run, tmp, eine funktionierende resolve.conf und mehr. Nachdem Sie es eingerichtet haben und es in Betrieb nehmen wollen ...","bernd-helm","/images/linux_os-mono.svg","2020-04-17",[14,15],"Das bewegt uns","Infrastruktur",[17],"Linux",[19],"devops",{"type":21,"children":22,"toc":272},"root",[23,31,36,65,70,132,137,261,266],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","Die meisten Sysadmins wissen, wie man ein einfaches chroot auf einem gemounteten Dateisystem einrichtet (mount-binding dev, proc und sys), aber das funktioniert nicht in jedem Fall; für eine vollständige chroot-Einrichtung bräuchte man außerdem dev/pts dev/shm, run, tmp, eine funktionierende resolve.conf und mehr. Nachdem Sie es eingerichtet haben und es wieder herunterfahren wollen, müssen Sie wieder eine Menge tippen. Aber halt! Es gibt eine bessere Lösung.",{"type":24,"tag":25,"props":32,"children":33},{},[34],{"type":29,"value":35},"Es gibt ein Skript namens arch-chroot, das mit der Archlinux-Distribution ausgeliefert wird, aber es ist nicht darauf beschränkt, mit Archlinux ausgeführt zu werden. Es funktioniert auf jeder Linux-Distri!",{"type":24,"tag":25,"props":37,"children":38},{},[39,41,47,49,55,57,63],{"type":29,"value":40},"Zu Ihrer Erleichterung habe ich ",{"type":24,"tag":42,"props":43,"children":44},"span",{},[45],{"type":29,"value":46},"einen Gist",{"type":29,"value":48}," (",{"type":24,"tag":50,"props":51,"children":53},"a",{"href":52},"https://gist.github.com/bhelm/65283c37a0cb585089041214002df4f7",[54],{"type":29,"value":52},{"type":29,"value":56},") für Sie erstellt. Sie können auch den direkten ",{"type":24,"tag":50,"props":58,"children":60},{"href":59},"https://gist.githubusercontent.com/bhelm/65283c37a0cb585089041214002df4f7/raw/536099a5f969a6888c85e48a487ec19870c596a2/arch-chroot.sh",[61],{"type":29,"value":62},"Download-Link für wget",{"type":29,"value":64}," verwenden.",{"type":24,"tag":25,"props":66,"children":67},{},[68],{"type":29,"value":69},"können Sie es wie folgt installieren:",{"type":24,"tag":71,"props":72,"children":76},"pre",{"className":73,"code":74,"language":75,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark github-dark monokai","wget https://gist.githubusercontent.com/bhelm/65283c37a0cb585089041214002df4f7/raw/536099a5f969a6888c85e48a487ec19870c596a2/arch-chroot.sh\nchmod +x arch-chroot.sh\n./arch-chroot.sh -h\n","bash",[77],{"type":24,"tag":78,"props":79,"children":80},"code",{"__ignoreMap":7},[81,98,117],{"type":24,"tag":42,"props":82,"children":85},{"class":83,"line":84},"line",1,[86,92],{"type":24,"tag":42,"props":87,"children":89},{"style":88},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[90],{"type":29,"value":91},"wget",{"type":24,"tag":42,"props":93,"children":95},{"style":94},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[96],{"type":29,"value":97}," https://gist.githubusercontent.com/bhelm/65283c37a0cb585089041214002df4f7/raw/536099a5f969a6888c85e48a487ec19870c596a2/arch-chroot.sh\n",{"type":24,"tag":42,"props":99,"children":101},{"class":83,"line":100},2,[102,107,112],{"type":24,"tag":42,"props":103,"children":104},{"style":88},[105],{"type":29,"value":106},"chmod",{"type":24,"tag":42,"props":108,"children":109},{"style":94},[110],{"type":29,"value":111}," +x",{"type":24,"tag":42,"props":113,"children":114},{"style":94},[115],{"type":29,"value":116}," arch-chroot.sh\n",{"type":24,"tag":42,"props":118,"children":120},{"class":83,"line":119},3,[121,126],{"type":24,"tag":42,"props":122,"children":123},{"style":88},[124],{"type":29,"value":125},"./arch-chroot.sh",{"type":24,"tag":42,"props":127,"children":129},{"style":128},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[130],{"type":29,"value":131}," -h\n",{"type":24,"tag":25,"props":133,"children":134},{},[135],{"type":29,"value":136},"Mit diesem Skript war ich in der Lage, grub zu installieren, ohne Fehler wie:",{"type":24,"tag":71,"props":138,"children":140},{"className":73,"code":139,"language":75,"meta":7,"style":7},"grub-install: error: cannot find a device for /boot/grub (is /dev mounted?).\ngrub-probe: error: cannot find a device for / (is /dev mounted?).\n",[141],{"type":24,"tag":78,"props":142,"children":143},{"__ignoreMap":7},[144,208],{"type":24,"tag":42,"props":145,"children":146},{"class":83,"line":84},[147,152,157,162,167,172,177,182,187,193,198,203],{"type":24,"tag":42,"props":148,"children":149},{"style":88},[150],{"type":29,"value":151},"grub-install:",{"type":24,"tag":42,"props":153,"children":154},{"style":94},[155],{"type":29,"value":156}," error:",{"type":24,"tag":42,"props":158,"children":159},{"style":94},[160],{"type":29,"value":161}," cannot",{"type":24,"tag":42,"props":163,"children":164},{"style":94},[165],{"type":29,"value":166}," find",{"type":24,"tag":42,"props":168,"children":169},{"style":94},[170],{"type":29,"value":171}," a",{"type":24,"tag":42,"props":173,"children":174},{"style":94},[175],{"type":29,"value":176}," device",{"type":24,"tag":42,"props":178,"children":179},{"style":94},[180],{"type":29,"value":181}," for",{"type":24,"tag":42,"props":183,"children":184},{"style":94},[185],{"type":29,"value":186}," /boot/grub",{"type":24,"tag":42,"props":188,"children":190},{"style":189},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[191],{"type":29,"value":192}," (is ",{"type":24,"tag":42,"props":194,"children":195},{"style":94},[196],{"type":29,"value":197},"/dev",{"type":24,"tag":42,"props":199,"children":200},{"style":94},[201],{"type":29,"value":202}," mounted?",{"type":24,"tag":42,"props":204,"children":205},{"style":189},[206],{"type":29,"value":207},").\n",{"type":24,"tag":42,"props":209,"children":210},{"class":83,"line":100},[211,216,220,224,228,232,236,240,245,249,253,257],{"type":24,"tag":42,"props":212,"children":213},{"style":88},[214],{"type":29,"value":215},"grub-probe:",{"type":24,"tag":42,"props":217,"children":218},{"style":94},[219],{"type":29,"value":156},{"type":24,"tag":42,"props":221,"children":222},{"style":94},[223],{"type":29,"value":161},{"type":24,"tag":42,"props":225,"children":226},{"style":94},[227],{"type":29,"value":166},{"type":24,"tag":42,"props":229,"children":230},{"style":94},[231],{"type":29,"value":171},{"type":24,"tag":42,"props":233,"children":234},{"style":94},[235],{"type":29,"value":176},{"type":24,"tag":42,"props":237,"children":238},{"style":94},[239],{"type":29,"value":181},{"type":24,"tag":42,"props":241,"children":242},{"style":94},[243],{"type":29,"value":244}," /",{"type":24,"tag":42,"props":246,"children":247},{"style":189},[248],{"type":29,"value":192},{"type":24,"tag":42,"props":250,"children":251},{"style":94},[252],{"type":29,"value":197},{"type":24,"tag":42,"props":254,"children":255},{"style":94},[256],{"type":29,"value":202},{"type":24,"tag":42,"props":258,"children":259},{"style":189},[260],{"type":29,"value":207},{"type":24,"tag":25,"props":262,"children":263},{},[264],{"type":29,"value":265},"Wenn Sie ein wirklich gutes Rettungssystem suchen, empfehle ich Ihnen das archlinux-Installations-Image; es enthält das arch-chroot-Skript, alle Low-Level-Tools, die zum Formatieren von Festplatten benötigt werden und unterstützt sogar das Mounten von ntfs read-write und den Zugriff auf Samba-Shares.",{"type":24,"tag":267,"props":268,"children":269},"style",{},[270],{"type":29,"value":271},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":100,"depth":100,"links":273},[],"markdown","common:blog:7.richtiges-chroot-im-rettungsmodues-mit-arch-chroot.md","common","blog/7.richtiges-chroot-im-rettungsmodues-mit-arch-chroot.md","blog/7.richtiges-chroot-im-rettungsmodues-mit-arch-chroot","md",{"_path":281,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":282,"description":283,"author":10,"image":284,"releaseDate":285,"blogCategories":286,"articleTags":287,"tags":289,"_type":274,"_id":290,"_source":276,"_file":291,"_stem":292,"_extension":279},"/blog/warum-wir-keine-samsung-nvme-pro-ssds-mehr-verwenden","Warum wir keine Samsung NVME Pro SSDs mehr verwenden","Wenn es darum geht, eine NVME-SSD für eine Softwareentwickler-Workstation zu kaufen, steht man vor der Wahl: eine billige oder eine teure zu kaufen. Bisher habe ich mich für die teureren entschieden, weil sie eine bessere Leistung und längere Lebensdauer versprachen - jetzt sehe ich, wie falsch ich lag...","/blog/thumbnails/SSD_white.png","2020-04-16",[14,15],[288],"SSD",[19],"common:blog:6.warum-wir-keine-samsung-nvme-pro-ssds-mehr-verwenden.md","blog/6.warum-wir-keine-samsung-nvme-pro-ssds-mehr-verwenden.md","blog/6.warum-wir-keine-samsung-nvme-pro-ssds-mehr-verwenden",{"_path":294,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":295,"description":296,"author":10,"image":297,"releaseDate":298,"blogCategories":299,"articleTags":300,"tags":302,"_type":274,"_id":303,"_source":276,"_file":304,"_stem":305,"_extension":279},"/blog/btrfs-auffinden-und-reparieren-stark-fragmentierter-dataien","BTRFS: Auffinden und Reparieren stark fragmentierter Dateien","Die meisten der besten BTRFS-Funktionen werden durch die Copy-on-Write-Technologie ermöglicht. Wenn eine Anwendung einen Teil einer Datei umschreiben will, wie z.B. das erste MegaByte, werden die Daten nicht an Ort und Stelle geschrieben, sondern in einer sogenannten Erweiterung. Dadurch ist BTRFS in der Lage, mehrere Versionen von teilweise umgeschriebenen Dateien aufzubewahren, wobei nur die ...","/blog/thumbnails/BTRFS_white.png","2020-10-21",[14,15],[301],"BTRFS",[19],"common:blog:8.btrfs-auffinden-und-reparieren-stark-fragmentierter-dataien.md","blog/8.btrfs-auffinden-und-reparieren-stark-fragmentierter-dataien.md","blog/8.btrfs-auffinden-und-reparieren-stark-fragmentierter-dataien",{"_path":4},{"_path":308},"/en/blog/proper-chroot-in-rescue-mode-using-arch-chroot",{"_path":310,"_dir":311,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":312,"primaryTeam":314,"firstName":315,"lastName":316,"prefixTitle":7,"suffixTitle":7,"education":317,"executiveRole":322,"role":323,"workingSince":331,"inTheCompanySince":332,"techSkills":333,"skills":377,"projects":390,"contactDetails":403,"_image":407,"image":408,"_id":409,"_type":410,"title":411,"_source":311,"_file":412,"_stem":413,"_extension":410},"/employees/bernd-helm","employees",[313,314],"ai","devOps","Bernd","Helm",[318],[319,320,321],"B. Sc. Angewandte Informatik","FHDW Dresden","2010","CTO",[324,325,314,326,327,328,329,330],"founder","chiefTechnologyOfficer","databaseSpecialist","admin","softwareDeveloper","backendDeveloper","consultant","2005","2008",[334,338,339,341,344,346,349,351,353,355,358,362,365,368,371,374],{"name":335,"level":336,"icon":337},"Docker","expert","/images/Docker.svg",{"name":17,"level":336,"icon":11},{"name":340,"level":336},"Zabbix",{"name":342,"level":336,"icon":343},"MariaDB ColumnStore","/images/maria-db-logo.svg",{"name":345,"level":336},"OpenAI",{"name":347,"level":336,"icon":348},"Pytorch","/images/PyTorch.svg",{"name":350,"level":336},"PHP",{"name":352,"level":336},"Java",{"name":354,"level":336},"Python",{"name":356,"level":336,"icon":357},"SQL","/images/SQL.svg",{"name":359,"level":360,"icon":361},"C++","advanced","/images/cpp-logo.svg",{"name":363,"level":360,"icon":364},"C#","/images/csharp.svg",{"name":366,"level":360,"icon":367},"CSS","/images/css.svg",{"name":369,"level":360,"icon":370},"HTML","/images/html.svg",{"name":372,"level":360,"icon":373},"OpenCV","/images/OpenCV.svg",{"name":375,"level":360,"icon":376},"Vue.js","/images/vuejs.svg",[378,380,382,384,386,388],{"name":379,"level":336},"artificialIntelligence",{"name":381,"level":336},"codingGuidelines",{"name":383,"level":336},"databases",{"name":385,"level":336},"linuxServerAdministration",{"name":387,"level":336},"softwareArchitect",{"name":389,"level":360},"qualityAssurance",[391,394,396,398,401],{"project":392,"position":393},"Gridside","Technical Consultant",{"project":395,"position":393},"Herole",{"project":397,"position":393},"Montagespezis",{"project":399,"position":400},"Orsee","Technical Manager",{"project":402,"position":393},"Vipr",{"eMail":404,"phone":405,"visibility":406},"bernd.helm@helmundwalter.de","+49 351 799 035 20","1","images/employees/Portraits/bernd_helm.webp","images/employees/Portraits/BerndHelm_MS.webp","employees:employees:1.bernd-helm.json","json","Bernd Helm","employees/1.bernd-helm.json","employees/1.bernd-helm",{"_path":281,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":282,"description":283,"author":10,"image":284,"releaseDate":285,"blogCategories":415,"articleTags":416,"tags":417,"body":418,"_type":274,"_id":290,"_source":276,"_file":291,"_stem":292,"_extension":279},[14,15],[288],[19],{"type":21,"children":419,"toc":930},[420,427,432,437,820,825,830,839,844,926],{"type":24,"tag":421,"props":422,"children":424},"h2",{"id":423},"untersuchung-der-leistung",[425],{"type":29,"value":426},"Untersuchung der Leistung",{"type":24,"tag":25,"props":428,"children":429},{},[430],{"type":29,"value":431},"Wenn es darum geht, eine NVME-SSD für eine Softwareentwickler-Workstation zu kaufen, steht man vor der Wahl: eine billige oder eine teure zu kaufen. Bisher habe ich mich für die teureren entschieden, weil sie eine bessere Leistung und längere Lebensdauer versprachen - jetzt sehe ich, wie falsch ich lag.",{"type":24,"tag":25,"props":433,"children":434},{},[435],{"type":29,"value":436},"Alles begann damit, dass ein Mitarbeiter sagte, seine NVME-SSD sei langsamer als seine Sata-SSD. Das kann nicht wahr sein, denn die Sata-SSD ist auf 600 MB/s begrenzt und 3 Jahre alt, während seine neue NVME-SSD angeblich 3000 MB/s lesen und schreiben kann. Und doch ist es wahr. Ich habe einige schmutzige Benchmarks durchgeführt und die Ergebnisse sind beeindruckend. Ich nenne die Benchmarks \"schmutzig\", weil eindeutig unterschiedliche PCs verwendet werden; unterschiedliche CPUs, offensichtlich unterschiedliche Betriebssystemversionen, unterschiedliche MySQL-Versionen und Konfigurationen. Aber die Unterschiede in den Ergebnissen lassen sich meiner Meinung nach so nicht erklären. Irgendetwas stimmt nicht mit den Samsung NVME SSDs.",{"type":24,"tag":438,"props":439,"children":440},"table",{},[441,479],{"type":24,"tag":442,"props":443,"children":444},"thead",{},[445],{"type":24,"tag":446,"props":447,"children":448},"tr",{},[449,455,459,464,469,474],{"type":24,"tag":450,"props":451,"children":452},"th",{},[453],{"type":29,"value":454},"User",{"type":24,"tag":450,"props":456,"children":457},{},[458],{"type":29,"value":288},{"type":24,"tag":450,"props":460,"children":461},{},[462],{"type":29,"value":463},"Note",{"type":24,"tag":450,"props":465,"children":466},{},[467],{"type":29,"value":468},"Allocation",{"type":24,"tag":450,"props":470,"children":471},{},[472],{"type":29,"value":473},"TPS",{"type":24,"tag":450,"props":475,"children":476},{},[477],{"type":29,"value":478},"QPS",{"type":24,"tag":480,"props":481,"children":482},"tbody",{},[483,515,545,576,605,636,668,699,731,761,791],{"type":24,"tag":446,"props":484,"children":485},{},[486,492,497,500,505,510],{"type":24,"tag":487,"props":488,"children":489},"td",{},[490],{"type":29,"value":491},"Markus",{"type":24,"tag":487,"props":493,"children":494},{},[495],{"type":29,"value":496},"Curical CT1000P1SSD8",{"type":24,"tag":487,"props":498,"children":499},{},[],{"type":24,"tag":487,"props":501,"children":502},{},[503],{"type":29,"value":504},"1,00 %",{"type":24,"tag":487,"props":506,"children":507},{},[508],{"type":29,"value":509},"304",{"type":24,"tag":487,"props":511,"children":512},{},[513],{"type":29,"value":514},"6091",{"type":24,"tag":446,"props":516,"children":517},{},[518,523,527,530,535,540],{"type":24,"tag":487,"props":519,"children":520},{},[521],{"type":29,"value":522},"Robert",{"type":24,"tag":487,"props":524,"children":525},{},[526],{"type":29,"value":496},{"type":24,"tag":487,"props":528,"children":529},{},[],{"type":24,"tag":487,"props":531,"children":532},{},[533],{"type":29,"value":534},"4,00 %",{"type":24,"tag":487,"props":536,"children":537},{},[538],{"type":29,"value":539},"412",{"type":24,"tag":487,"props":541,"children":542},{},[543],{"type":29,"value":544},"8241",{"type":24,"tag":446,"props":546,"children":547},{},[548,553,558,561,566,571],{"type":24,"tag":487,"props":549,"children":550},{},[551],{"type":29,"value":552},"Reiner",{"type":24,"tag":487,"props":554,"children":555},{},[556],{"type":29,"value":557},"Samsung SSD 970 PRO 512GB",{"type":24,"tag":487,"props":559,"children":560},{},[],{"type":24,"tag":487,"props":562,"children":563},{},[564],{"type":29,"value":565},"66,00 %",{"type":24,"tag":487,"props":567,"children":568},{},[569],{"type":29,"value":570},"160",{"type":24,"tag":487,"props":572,"children":573},{},[574],{"type":29,"value":575},"3214",{"type":24,"tag":446,"props":577,"children":578},{},[579,583,587,590,595,600],{"type":24,"tag":487,"props":580,"children":581},{},[582],{"type":29,"value":491},{"type":24,"tag":487,"props":584,"children":585},{},[586],{"type":29,"value":557},{"type":24,"tag":487,"props":588,"children":589},{},[],{"type":24,"tag":487,"props":591,"children":592},{},[593],{"type":29,"value":594},"14,00 %",{"type":24,"tag":487,"props":596,"children":597},{},[598],{"type":29,"value":599},"120",{"type":24,"tag":487,"props":601,"children":602},{},[603],{"type":29,"value":604},"2414",{"type":24,"tag":446,"props":606,"children":607},{},[608,612,616,621,626,631],{"type":24,"tag":487,"props":609,"children":610},{},[611],{"type":29,"value":315},{"type":24,"tag":487,"props":613,"children":614},{},[615],{"type":29,"value":557},{"type":24,"tag":487,"props":617,"children":618},{},[619],{"type":29,"value":620},"crypt",{"type":24,"tag":487,"props":622,"children":623},{},[624],{"type":29,"value":625},"80,00 %",{"type":24,"tag":487,"props":627,"children":628},{},[629],{"type":29,"value":630},"148",{"type":24,"tag":487,"props":632,"children":633},{},[634],{"type":29,"value":635},"2976",{"type":24,"tag":446,"props":637,"children":638},{},[639,644,649,653,658,663],{"type":24,"tag":487,"props":640,"children":641},{},[642],{"type":29,"value":643},"Daniel",{"type":24,"tag":487,"props":645,"children":646},{},[647],{"type":29,"value":648},"Samsung SSD 960 PRO 512GB",{"type":24,"tag":487,"props":650,"children":651},{},[652],{"type":29,"value":620},{"type":24,"tag":487,"props":654,"children":655},{},[656],{"type":29,"value":657},"46,00 %",{"type":24,"tag":487,"props":659,"children":660},{},[661],{"type":29,"value":662},"30",{"type":24,"tag":487,"props":664,"children":665},{},[666],{"type":29,"value":667},"614",{"type":24,"tag":446,"props":669,"children":670},{},[671,675,680,685,690,694],{"type":24,"tag":487,"props":672,"children":673},{},[674],{"type":29,"value":552},{"type":24,"tag":487,"props":676,"children":677},{},[678],{"type":29,"value":679},"Samsung SSD 850 PRO 128GB",{"type":24,"tag":487,"props":681,"children":682},{},[683],{"type":29,"value":684},"sata",{"type":24,"tag":487,"props":686,"children":687},{},[688],{"type":29,"value":689},"37,00 %",{"type":24,"tag":487,"props":691,"children":692},{},[693],{"type":29,"value":599},{"type":24,"tag":487,"props":695,"children":696},{},[697],{"type":29,"value":698},"2437",{"type":24,"tag":446,"props":700,"children":701},{},[702,706,711,716,721,726],{"type":24,"tag":487,"props":703,"children":704},{},[705],{"type":29,"value":643},{"type":24,"tag":487,"props":707,"children":708},{},[709],{"type":29,"value":710},"Samsung SSD 860 PRO 512GB",{"type":24,"tag":487,"props":712,"children":713},{},[714],{"type":29,"value":715},"SATA",{"type":24,"tag":487,"props":717,"children":718},{},[719],{"type":29,"value":720},"87,00 %",{"type":24,"tag":487,"props":722,"children":723},{},[724],{"type":29,"value":725},"185",{"type":24,"tag":487,"props":727,"children":728},{},[729],{"type":29,"value":730},"3700",{"type":24,"tag":446,"props":732,"children":733},{},[734,739,744,747,751,756],{"type":24,"tag":487,"props":735,"children":736},{},[737],{"type":29,"value":738},"Daneil",{"type":24,"tag":487,"props":740,"children":741},{},[742],{"type":29,"value":743},"Samsung SSD 970 EVO Plus 1TB",{"type":24,"tag":487,"props":745,"children":746},{},[],{"type":24,"tag":487,"props":748,"children":749},{},[750],{"type":29,"value":504},{"type":24,"tag":487,"props":752,"children":753},{},[754],{"type":29,"value":755},"480",{"type":24,"tag":487,"props":757,"children":758},{},[759],{"type":29,"value":760},"9614",{"type":24,"tag":446,"props":762,"children":763},{},[764,768,773,776,781,786],{"type":24,"tag":487,"props":765,"children":766},{},[767],{"type":29,"value":315},{"type":24,"tag":487,"props":769,"children":770},{},[771],{"type":29,"value":772},"Sabrent Rocket Q 2TB",{"type":24,"tag":487,"props":774,"children":775},{},[],{"type":24,"tag":487,"props":777,"children":778},{},[779],{"type":29,"value":780},"26,00 %",{"type":24,"tag":487,"props":782,"children":783},{},[784],{"type":29,"value":785},"237",{"type":24,"tag":487,"props":787,"children":788},{},[789],{"type":29,"value":790},"4749",{"type":24,"tag":446,"props":792,"children":793},{},[794,799,804,807,811,815],{"type":24,"tag":487,"props":795,"children":796},{},[797],{"type":29,"value":798},"Marcel",{"type":24,"tag":487,"props":800,"children":801},{},[802],{"type":29,"value":803},"Patriot Scorch M2 256GB",{"type":24,"tag":487,"props":805,"children":806},{},[],{"type":24,"tag":487,"props":808,"children":809},{},[810],{"type":29,"value":504},{"type":24,"tag":487,"props":812,"children":813},{},[814],{"type":29,"value":599},{"type":24,"tag":487,"props":816,"children":817},{},[818],{"type":29,"value":819},"2440",{"type":24,"tag":25,"props":821,"children":822},{},[823],{"type":29,"value":824},"Wie Sie sehen können, ist die Curical P1 SSD 2x, teilweise 3x schneller als die Samsung Pro SSDs - obwohl die Curical nur ein Drittel kostet. Man kann auch sehen, dass die 860 Pro Sata SSD von Daniel schneller ist als alle Samsung NVME Pro SSDs. Wenn Sie bei Google nach dem Phänomen suchen, werden Sie andere Personen finden, die das gleiche Problem beobachtet haben. Die Samsung PRO NVME SSDs scheinen ein Problem mit häufigen fsync-Aufrufen zu haben. Ich habe sysbench 1.0.18 mit dem oltp_read_write Benchmark auf allen Maschinen verwendet. Sie verwenden alle BTRFS als Dateisystem und das MySQL-Dateisystem wurde mit nodatacow gemountet, was die Leistung verbessert. In der Tabelle steht TPS für Transaktionen pro Sekunde und QPS für Abfragen pro Sekunde - beide Werte wurden aus den Sysbench-Statistiken ausgelesen.",{"type":24,"tag":25,"props":826,"children":827},{},[828],{"type":29,"value":829},"Da die Leistung unserer Datenbank für unsere Softwareentwickler sehr wichtig ist, werde ich in Zukunft die Samsung pro NVME SSDs meiden und anderen Herstellern eine Chance geben. Die SSD ist immer noch gut für Spiele, Filmbearbeitung und so weiter, nur nicht für notwendige fsyncs.",{"type":24,"tag":25,"props":831,"children":832},{},[833],{"type":24,"tag":834,"props":835,"children":836},"strong",{},[837],{"type":29,"value":838},"Edit: Es sieht so aus, als ob die 970 EVO Plus SSD nicht von diesem Problem betroffen ist.",{"type":24,"tag":25,"props":840,"children":841},{},[842],{"type":29,"value":843},"Verwendete Sysbench-Befehle:",{"type":24,"tag":71,"props":845,"children":847},{"className":73,"code":846,"language":75,"meta":7,"style":7},"sysbench oltp_read_write --table-size=2500000 --mysql-user=root --db-driver=mysql --mysql-password=  prepare\nsysbench oltp_read_write --table-size=2500000 --mysql-user=root --db-driver=mysql --mysql-password=  --time=120 run\n",[848],{"type":24,"tag":78,"props":849,"children":850},{"__ignoreMap":7},[851,889],{"type":24,"tag":42,"props":852,"children":853},{"class":83,"line":84},[854,859,864,869,874,879,884],{"type":24,"tag":42,"props":855,"children":856},{"style":88},[857],{"type":29,"value":858},"sysbench",{"type":24,"tag":42,"props":860,"children":861},{"style":94},[862],{"type":29,"value":863}," oltp_read_write",{"type":24,"tag":42,"props":865,"children":866},{"style":128},[867],{"type":29,"value":868}," --table-size=2500000",{"type":24,"tag":42,"props":870,"children":871},{"style":128},[872],{"type":29,"value":873}," --mysql-user=root",{"type":24,"tag":42,"props":875,"children":876},{"style":128},[877],{"type":29,"value":878}," --db-driver=mysql",{"type":24,"tag":42,"props":880,"children":881},{"style":128},[882],{"type":29,"value":883}," --mysql-password=",{"type":24,"tag":42,"props":885,"children":886},{"style":94},[887],{"type":29,"value":888},"  prepare\n",{"type":24,"tag":42,"props":890,"children":891},{"class":83,"line":100},[892,896,900,904,908,912,916,921],{"type":24,"tag":42,"props":893,"children":894},{"style":88},[895],{"type":29,"value":858},{"type":24,"tag":42,"props":897,"children":898},{"style":94},[899],{"type":29,"value":863},{"type":24,"tag":42,"props":901,"children":902},{"style":128},[903],{"type":29,"value":868},{"type":24,"tag":42,"props":905,"children":906},{"style":128},[907],{"type":29,"value":873},{"type":24,"tag":42,"props":909,"children":910},{"style":128},[911],{"type":29,"value":878},{"type":24,"tag":42,"props":913,"children":914},{"style":128},[915],{"type":29,"value":883},{"type":24,"tag":42,"props":917,"children":918},{"style":128},[919],{"type":29,"value":920},"  --time=120",{"type":24,"tag":42,"props":922,"children":923},{"style":94},[924],{"type":29,"value":925}," run\n",{"type":24,"tag":267,"props":927,"children":928},{},[929],{"type":29,"value":271},{"title":7,"searchDepth":100,"depth":100,"links":931},[932],{"id":423,"depth":100,"text":426},{"_path":294,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":295,"description":296,"author":10,"image":297,"releaseDate":298,"blogCategories":934,"articleTags":935,"tags":936,"body":937,"_type":274,"_id":303,"_source":276,"_file":304,"_stem":305,"_extension":279},[14,15],[301],[19],{"type":21,"children":938,"toc":1404},[939,945,958,964,969,975,980,1020,1026,1031,1037,1049,1167,1185,1191,1347,1352,1358,1394,1400],{"type":24,"tag":421,"props":940,"children":942},{"id":941},"was-ist-btrfs-fragmentierung",[943],{"type":29,"value":944},"Was ist BTRFS-Fragmentierung?",{"type":24,"tag":25,"props":946,"children":947},{},[948,950,956],{"type":29,"value":949},"Die meisten der besten BTRFS-Funktionen beruhen auf der ",{"type":24,"tag":951,"props":952,"children":953},"em",{},[954],{"type":29,"value":955},"Copy-on-Write-Technologie",{"type":29,"value":957},". Wenn eine Anwendung einen Teil einer Datei umschreiben will, z.B. das erste MegaByte, werden die Daten nicht an Ort und Stelle geschrieben, sondern in einer sogenannten Erweiterung. Dadurch ist BTRFS in der Lage, mehrere Versionen von teilweise umgeschriebenen Dateien aufzubewahren, wobei nur der den Änderungen zugewiesene Speicherplatz beansprucht wird und nicht mehrere vollständige Kopien einer Datei. Die alten Daten können zu einem bestimmten Zeitpunkt verworfen werden (z.B. wenn sie nicht mehr von Snapshots verwendet werden) und die Erweiterung dient der aktuellen Version der Datei.",{"type":24,"tag":421,"props":959,"children":961},{"id":960},"btrfs-fragmentierung-kann-die-leistung-ihres-systems-beeinträchtigen",[962],{"type":29,"value":963},"BTRFS-Fragmentierung kann die Leistung Ihres Systems beeinträchtigen",{"type":24,"tag":25,"props":965,"children":966},{},[967],{"type":29,"value":968},"Sie können sich vorstellen, dass das Lesen einer Datei mit 100k+ Erweiterungen und das Hinzufügen weiterer Erweiterungen eine Menge Buchführung und Speichersuchvorgänge von Ihrem System erfordert. Diese 10 GB große Datei ist intern in 100k+ Teile zerlegt, die gesammelt werden müssen, wenn Sie die gesamte Datei lesen wollen. Dies erhöht eindeutig die Komplexität - und verringert die Leistung.",{"type":24,"tag":421,"props":970,"children":972},{"id":971},"btrfs-fragmentierung-kann-große-mengen-an-speicherplatz-blockieren",[973],{"type":29,"value":974},"BTRFS-Fragmentierung kann große Mengen an Speicherplatz blockieren",{"type":24,"tag":25,"props":976,"children":977},{},[978],{"type":29,"value":979},"Ja, BTRFS muss die Speicherorte dieser 100k Erweiterungen irgendwo speichern, was leicht einige zusätzliche GB an belegtem Speicherplatz zu Ihrem System hinzufügen kann. Das Schlimme daran ist, dass BTRFS Ihnen das nicht mitteilt.",{"type":24,"tag":25,"props":981,"children":982},{},[983,985,990,992,997,999,1004,1006,1011,1013,1018],{"type":29,"value":984},"Wenn Sie sehen, dass Ihr btrfs-Dateisystem ",{"type":24,"tag":834,"props":986,"children":987},{},[988],{"type":29,"value":989},"80GB",{"type":29,"value":991}," in ",{"type":24,"tag":951,"props":993,"children":994},{},[995],{"type":29,"value":996},"df",{"type":29,"value":998}," und ",{"type":24,"tag":951,"props":1000,"children":1001},{},[1002],{"type":29,"value":1003},"btrfs fi show",{"type":29,"value":1005}," verwendet, während ",{"type":24,"tag":951,"props":1007,"children":1008},{},[1009],{"type":29,"value":1010},"du -hsx",{"type":29,"value":1012}," nur ",{"type":24,"tag":834,"props":1014,"children":1015},{},[1016],{"type":29,"value":1017},"54GB",{"type":29,"value":1019}," anzeigt, gibt es nur zwei Gründe, die mir bekannt sind: entweder Sie haben Snapshots, die alte Erweiterungen behalten - oder Sie haben eine massive Fragmentierung.",{"type":24,"tag":421,"props":1021,"children":1023},{"id":1022},"btrfs-dateisystem-defragmentieren",[1024],{"type":29,"value":1025},"BTRFS-Dateisystem defragmentieren",{"type":24,"tag":25,"props":1027,"children":1028},{},[1029],{"type":29,"value":1030},"Es ist möglich, das BTRFS-Dateisystem auf dem gesamten Dateisystem zu defragmentieren, aber das führt dazu, dass alle Snapshots die Daten duplizieren. Es verursacht auch eine Menge IO, so dass dies nichts ist, was Sie auf Ihrem Produktionsserver ohne Grund tun wollen. Es macht wirklich keinen Sinn, statische Dateien zu defragmentieren, die fast nie geändert werden.",{"type":24,"tag":421,"props":1032,"children":1034},{"id":1033},"finden-sie-die-am-meisten-fragmentierten-dateien-auf-ihrem-system",[1035],{"type":29,"value":1036},"Finden Sie die am meisten fragmentierten Dateien auf Ihrem System",{"type":24,"tag":25,"props":1038,"children":1039},{},[1040,1042,1047],{"type":29,"value":1041},"Es gibt ein Linux-Tool namens ",{"type":24,"tag":951,"props":1043,"children":1044},{},[1045],{"type":29,"value":1046},"filefrag",{"type":29,"value":1048},", das anzeigt, aus wie vielen Fragmenten eine Datei besteht. Also dachte ich ... \"warum nicht versuchen, die am meisten fragmentierten Dateien zu finden und nur diese zu reparieren?\" Hier ist es:",{"type":24,"tag":71,"props":1050,"children":1052},{"className":73,"code":1051,"language":75,"meta":7,"style":7},"find / -xdev -type f| xargs filefrag 2>/dev/null | sed 's/^\\(.*\\): \\([0-9]\\+\\) extent.*/\\2 \\1/' | awk -F ' ' '$1 > 500' | sort -n -r\n",[1053],{"type":24,"tag":78,"props":1054,"children":1055},{"__ignoreMap":7},[1056],{"type":24,"tag":42,"props":1057,"children":1058},{"class":83,"line":84},[1059,1064,1068,1073,1078,1083,1089,1094,1099,1104,1109,1114,1119,1124,1128,1133,1138,1143,1148,1152,1157,1162],{"type":24,"tag":42,"props":1060,"children":1061},{"style":88},[1062],{"type":29,"value":1063},"find",{"type":24,"tag":42,"props":1065,"children":1066},{"style":94},[1067],{"type":29,"value":244},{"type":24,"tag":42,"props":1069,"children":1070},{"style":128},[1071],{"type":29,"value":1072}," -xdev",{"type":24,"tag":42,"props":1074,"children":1075},{"style":128},[1076],{"type":29,"value":1077}," -type",{"type":24,"tag":42,"props":1079,"children":1080},{"style":94},[1081],{"type":29,"value":1082}," f",{"type":24,"tag":42,"props":1084,"children":1086},{"style":1085},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[1087],{"type":29,"value":1088},"|",{"type":24,"tag":42,"props":1090,"children":1091},{"style":88},[1092],{"type":29,"value":1093}," xargs",{"type":24,"tag":42,"props":1095,"children":1096},{"style":94},[1097],{"type":29,"value":1098}," filefrag",{"type":24,"tag":42,"props":1100,"children":1101},{"style":1085},[1102],{"type":29,"value":1103}," 2>",{"type":24,"tag":42,"props":1105,"children":1106},{"style":94},[1107],{"type":29,"value":1108},"/dev/null",{"type":24,"tag":42,"props":1110,"children":1111},{"style":1085},[1112],{"type":29,"value":1113}," |",{"type":24,"tag":42,"props":1115,"children":1116},{"style":88},[1117],{"type":29,"value":1118}," sed",{"type":24,"tag":42,"props":1120,"children":1121},{"style":94},[1122],{"type":29,"value":1123}," 's/^\\(.*\\): \\([0-9]\\+\\) extent.*/\\2 \\1/'",{"type":24,"tag":42,"props":1125,"children":1126},{"style":1085},[1127],{"type":29,"value":1113},{"type":24,"tag":42,"props":1129,"children":1130},{"style":88},[1131],{"type":29,"value":1132}," awk",{"type":24,"tag":42,"props":1134,"children":1135},{"style":128},[1136],{"type":29,"value":1137}," -F",{"type":24,"tag":42,"props":1139,"children":1140},{"style":94},[1141],{"type":29,"value":1142}," ' '",{"type":24,"tag":42,"props":1144,"children":1145},{"style":94},[1146],{"type":29,"value":1147}," '$1 > 500'",{"type":24,"tag":42,"props":1149,"children":1150},{"style":1085},[1151],{"type":29,"value":1113},{"type":24,"tag":42,"props":1153,"children":1154},{"style":88},[1155],{"type":29,"value":1156}," sort",{"type":24,"tag":42,"props":1158,"children":1159},{"style":128},[1160],{"type":29,"value":1161}," -n",{"type":24,"tag":42,"props":1163,"children":1164},{"style":128},[1165],{"type":29,"value":1166}," -r\n",{"type":24,"tag":25,"props":1168,"children":1169},{},[1170,1172,1177,1179,1183],{"type":29,"value":1171},"Sie sollten diese Liste überprüfen. Wenn es etwas mit mehr als 10k Erstreckungen gibt, ist es ein Kandidat, um als ",{"type":24,"tag":951,"props":1173,"children":1174},{},[1175],{"type":29,"value":1176},"nodatacow",{"type":29,"value":1178}," gekennzeichnet zu werden. In meinem Fall habe ich festgestellt, dass die Fail2ban-Sqlite-Datenbank 170k Erweiterungen verwendet, was sehr viel ist! Wenn Sie Datenbankdateien mit einer hohen Fragmentierung haben, während Sie ",{"type":24,"tag":951,"props":1180,"children":1181},{},[1182],{"type":29,"value":1176},{"type":29,"value":1184}," verwenden, ist es besser, eine \"optimize table\" auf ihnen laufen zu lassen, da dies auch die datenbankbezogene Fragmentierung von häufig neu geschriebenen Tabellen bereinigt. Wenn Sie Snapshots verwenden, stellen Sie sicher, dass Sie etwas freien Speicherplatz haben, da die Defragmentierung eine Kopie der Dateien an Ort und Stelle erstellt, während Snapshots die Freigabe der alten Version blockieren.",{"type":24,"tag":421,"props":1186,"children":1188},{"id":1187},"wenn-alles-in-ordnung-ist-können-sie-fortfahren-und-alle-dateien-in-dieser-liste-defragmentieren",[1189],{"type":29,"value":1190},"Wenn alles in Ordnung ist, können Sie fortfahren und alle Dateien in dieser Liste defragmentieren",{"type":24,"tag":71,"props":1192,"children":1194},{"className":73,"code":1193,"language":75,"meta":7,"style":7},"find / -xdev -type f| xargs filefrag 2>/dev/null | sed 's/^\\(.*\\): \\([0-9]\\+\\) extent.*/\\2 \\1/' |\nawk -F ' ' '$1 > 500' | cut -d ' ' -f2 2>/dev/null | xargs -r btrfs fi defrag -f -v\n",[1195],{"type":24,"tag":78,"props":1196,"children":1197},{"__ignoreMap":7},[1198,1258],{"type":24,"tag":42,"props":1199,"children":1200},{"class":83,"line":84},[1201,1205,1209,1213,1217,1221,1225,1229,1233,1237,1241,1245,1249,1253],{"type":24,"tag":42,"props":1202,"children":1203},{"style":88},[1204],{"type":29,"value":1063},{"type":24,"tag":42,"props":1206,"children":1207},{"style":94},[1208],{"type":29,"value":244},{"type":24,"tag":42,"props":1210,"children":1211},{"style":128},[1212],{"type":29,"value":1072},{"type":24,"tag":42,"props":1214,"children":1215},{"style":128},[1216],{"type":29,"value":1077},{"type":24,"tag":42,"props":1218,"children":1219},{"style":94},[1220],{"type":29,"value":1082},{"type":24,"tag":42,"props":1222,"children":1223},{"style":1085},[1224],{"type":29,"value":1088},{"type":24,"tag":42,"props":1226,"children":1227},{"style":88},[1228],{"type":29,"value":1093},{"type":24,"tag":42,"props":1230,"children":1231},{"style":94},[1232],{"type":29,"value":1098},{"type":24,"tag":42,"props":1234,"children":1235},{"style":1085},[1236],{"type":29,"value":1103},{"type":24,"tag":42,"props":1238,"children":1239},{"style":94},[1240],{"type":29,"value":1108},{"type":24,"tag":42,"props":1242,"children":1243},{"style":1085},[1244],{"type":29,"value":1113},{"type":24,"tag":42,"props":1246,"children":1247},{"style":88},[1248],{"type":29,"value":1118},{"type":24,"tag":42,"props":1250,"children":1251},{"style":94},[1252],{"type":29,"value":1123},{"type":24,"tag":42,"props":1254,"children":1255},{"style":1085},[1256],{"type":29,"value":1257}," |\n",{"type":24,"tag":42,"props":1259,"children":1260},{"class":83,"line":100},[1261,1266,1270,1274,1278,1282,1287,1292,1296,1301,1305,1309,1313,1317,1322,1327,1332,1337,1342],{"type":24,"tag":42,"props":1262,"children":1263},{"style":88},[1264],{"type":29,"value":1265},"awk",{"type":24,"tag":42,"props":1267,"children":1268},{"style":128},[1269],{"type":29,"value":1137},{"type":24,"tag":42,"props":1271,"children":1272},{"style":94},[1273],{"type":29,"value":1142},{"type":24,"tag":42,"props":1275,"children":1276},{"style":94},[1277],{"type":29,"value":1147},{"type":24,"tag":42,"props":1279,"children":1280},{"style":1085},[1281],{"type":29,"value":1113},{"type":24,"tag":42,"props":1283,"children":1284},{"style":88},[1285],{"type":29,"value":1286}," cut",{"type":24,"tag":42,"props":1288,"children":1289},{"style":128},[1290],{"type":29,"value":1291}," -d",{"type":24,"tag":42,"props":1293,"children":1294},{"style":94},[1295],{"type":29,"value":1142},{"type":24,"tag":42,"props":1297,"children":1298},{"style":128},[1299],{"type":29,"value":1300}," -f2",{"type":24,"tag":42,"props":1302,"children":1303},{"style":1085},[1304],{"type":29,"value":1103},{"type":24,"tag":42,"props":1306,"children":1307},{"style":94},[1308],{"type":29,"value":1108},{"type":24,"tag":42,"props":1310,"children":1311},{"style":1085},[1312],{"type":29,"value":1113},{"type":24,"tag":42,"props":1314,"children":1315},{"style":88},[1316],{"type":29,"value":1093},{"type":24,"tag":42,"props":1318,"children":1319},{"style":128},[1320],{"type":29,"value":1321}," -r",{"type":24,"tag":42,"props":1323,"children":1324},{"style":94},[1325],{"type":29,"value":1326}," btrfs",{"type":24,"tag":42,"props":1328,"children":1329},{"style":94},[1330],{"type":29,"value":1331}," fi",{"type":24,"tag":42,"props":1333,"children":1334},{"style":94},[1335],{"type":29,"value":1336}," defrag",{"type":24,"tag":42,"props":1338,"children":1339},{"style":128},[1340],{"type":29,"value":1341}," -f",{"type":24,"tag":42,"props":1343,"children":1344},{"style":128},[1345],{"type":29,"value":1346}," -v\n",{"type":24,"tag":25,"props":1348,"children":1349},{},[1350],{"type":29,"value":1351},"Dies gibt alle Dateinamen aus, die verarbeitet wurden.",{"type":24,"tag":421,"props":1353,"children":1355},{"id":1354},"eine-kurze-erklärung-des-befehls",[1356],{"type":29,"value":1357},"Eine kurze Erklärung des Befehls",{"type":24,"tag":25,"props":1359,"children":1360},{},[1361,1365,1367,1372,1374,1378,1380,1385,1387,1392],{"type":24,"tag":951,"props":1362,"children":1363},{},[1364],{"type":29,"value":1063},{"type":29,"value":1366}," ermittelt alle Dateien auf dem angegebenen Pfad (/), ohne in andere eingehängte Dateisysteme zu gehen (-xdev). Dann bestimmt filefrag die Fragmentierung, der Befehl ",{"type":24,"tag":951,"props":1368,"children":1369},{},[1370],{"type":29,"value":1371},"sed",{"type":29,"value":1373}," formatiert die Ausgabe so um, dass die Anzahl der Erweiterungen an erster Stelle steht, gefolgt vom Dateinamen. Dann analysiert ",{"type":24,"tag":951,"props":1375,"children":1376},{},[1377],{"type":29,"value":1265},{"type":29,"value":1379}," diese Liste und filtert nur Dateien, die mehr als 500 Erweiterungen haben. Danach wird die Ausgabe so \"geschnitten\", dass sie nur die Dateinamen enthält, und an ",{"type":24,"tag":951,"props":1381,"children":1382},{},[1383],{"type":29,"value":1384},"btrfs defrag",{"type":29,"value":1386}," zur Defragmentierung übergeben. Die Option ",{"type":24,"tag":951,"props":1388,"children":1389},{},[1390],{"type":29,"value":1391},"-v",{"type":29,"value":1393}," des Defrag-Befehls gibt alle verarbeiteten Dateien aus. Werfen Sie auch einen Blick auf die langfristige IO-Nutzung vor und nach der Defragmentierung, um zu sehen, wie groß der Unterschied in der realen Welt ist.",{"type":24,"tag":421,"props":1395,"children":1397},{"id":1396},"viel-spaß",[1398],{"type":29,"value":1399},"Viel Spaß!",{"type":24,"tag":267,"props":1401,"children":1402},{},[1403],{"type":29,"value":271},{"title":7,"searchDepth":100,"depth":100,"links":1405},[1406,1407,1408,1409,1410,1411,1412,1413],{"id":941,"depth":100,"text":944},{"id":960,"depth":100,"text":963},{"id":971,"depth":100,"text":974},{"id":1022,"depth":100,"text":1025},{"id":1033,"depth":100,"text":1036},{"id":1187,"depth":100,"text":1190},{"id":1354,"depth":100,"text":1357},{"id":1396,"depth":100,"text":1399},{"_path":310,"_dir":311,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":1415,"primaryTeam":314,"firstName":315,"lastName":316,"prefixTitle":7,"suffixTitle":7,"education":1416,"executiveRole":322,"role":1418,"workingSince":331,"inTheCompanySince":332,"techSkills":1419,"skills":1436,"projects":1443,"contactDetails":1449,"_image":407,"image":408,"_id":409,"_type":410,"title":411,"_source":311,"_file":412,"_stem":413,"_extension":410},[313,314],[1417],[319,320,321],[324,325,314,326,327,328,329,330],[1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435],{"name":335,"level":336,"icon":337},{"name":17,"level":336,"icon":11},{"name":340,"level":336},{"name":342,"level":336,"icon":343},{"name":345,"level":336},{"name":347,"level":336,"icon":348},{"name":350,"level":336},{"name":352,"level":336},{"name":354,"level":336},{"name":356,"level":336,"icon":357},{"name":359,"level":360,"icon":361},{"name":363,"level":360,"icon":364},{"name":366,"level":360,"icon":367},{"name":369,"level":360,"icon":370},{"name":372,"level":360,"icon":373},{"name":375,"level":360,"icon":376},[1437,1438,1439,1440,1441,1442],{"name":379,"level":336},{"name":381,"level":336},{"name":383,"level":336},{"name":385,"level":336},{"name":387,"level":336},{"name":389,"level":360},[1444,1445,1446,1447,1448],{"project":392,"position":393},{"project":395,"position":393},{"project":397,"position":393},{"project":399,"position":400},{"project":402,"position":393},{"eMail":404,"phone":405,"visibility":406},[1451,1466],{"_path":1452,"_dir":1453,"_draft":6,"_partial":1454,"_locale":7,"name":1455,"slug":1453,"text":1456,"hoverText":1457,"image":1458,"customer":1455,"tags":1459,"_id":1461,"_type":1462,"title":1463,"_source":276,"_file":1464,"_stem":1465,"_extension":1462},"/portfolio/pixelx/_teaser","pixelx",true,"PixelX","IT-Sicherheit mit Augenmaß und Sachverstand","Für PixelX haben wir eine gezielte Sicherheitsanalyse durchgeführt, bei der wir dank unseres tiefen technischen Verständnisses eine kritische Schwachstelle identifizieren konnten. Mit minimalem Zeitaufwand erzielten wir maximalen Sicherheitsgewinn.","/images/portfolio/pixelx/pixelx_secured.png",[1460,19],"security","common:portfolio:9010.pixelx:_teaser.yaml","yaml","Teaser","portfolio/9010.pixelx/_teaser.yaml","portfolio/9010.pixelx/_teaser",{"_path":1467,"_dir":1468,"_draft":6,"_partial":1454,"_locale":7,"name":1469,"slug":1468,"text":1470,"hoverText":1471,"image":1472,"customer":1469,"tags":1473,"_id":1474,"_type":1462,"title":1463,"_source":276,"_file":1475,"_stem":1476,"_extension":1462},"/portfolio/slimspots/_teaser","slimspots","SlimSpots","Große Datenmengen in Echtzeit verarbeiten","Für SlimSpots, einen weltweit agierenden Anbieter von Ad-Marketing-Lösungen, haben wir eine hochskalierbare Infrastruktur entwickelt, die die Verarbeitung von Billionen Datensätzen in Echtzeit ermöglicht.","/images/portfolio/slimspots/slim_spots_prtfolio.png",[383,19],"common:portfolio:9020.slimspots:_teaser.yaml","portfolio/9020.slimspots/_teaser.yaml","portfolio/9020.slimspots/_teaser",1782284040439]