🐧 Storage Systems — Chapitre 36 : Tuning Linux storage
Chapitre dense consacré au tuning stockage sous Linux : I/O schedulers, read-ahead, mount options, TRIM/discard, LVM, choix filesystem, XFS, ext4, ZFS, Btrfs, NVMe, multipath SAN, iSCSI, NFS, SMB/CIFS, réseau, kernel VM dirty settings, mdadm, bases de données, containers/Kubernetes, logs, monitoring, sysctl/udev/tuned et checklist production. Objectif : optimiser sans casser, avec baseline, p99, preuve et rollback.
I/O schedulers
mq-deadline, none, BFQ : choix du planificateur bloc selon SSD/NVMe, HDD, VM, desktop, serveur et latence.
Schedulermq-deadlinenoneBFQRead-ahead
Optimisation séquentielle : anticiper les lectures, améliorer streaming/backup, éviter pollution cache sur random I/O.
Read-aheadSequentialCacheMount options
noatime, nodiratime, discard, lazytime, barrier, commit, inode64, logbufs : options filesystem à comprendre avant tuning.
MountnoatimediscardTRIM / discard
SSD : discard continu vs fstrim planifié, thin provisioning, LVM, SAN, cloud disk et risques de performance.
TRIMdiscardSSDLVM tuning
Stripe, cache, thin provisioning, snapshots, metadata, alignment, extent size, writecache et monitoring.
LVMStripeThinFilesystem choice
XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs avancés : choisir selon workload, snapshots, checksums et admin.
XFSext4ZFSBtrfsXFS tuning
Allocation groups, inode64, log buffers, reflink, quota, bigtime, ftype, fragmentation et workloads fichier massif.
XFSAGMetadataext4 tuning
Journal mode, commit interval, reserved blocks, stride/stripe-width, dir_index, lazytime et fsck strategy.
ext4JournalStrideZFS on Linux
ARC, L2ARC, SLOG, recordsize, ashift, compression, snapshots, scrubbing, sync writes et dataset design.
ZFSARCSLOGBtrfs tuning
COW, snapshots, compression, autodefrag, nodatacow, scrub, balance, metadata profile et workloads adaptés.
BtrfsCOWSnapshotsNVMe tuning
Queues, IRQ affinity, multipath NVMe, scheduler none, polling, namespace, thermal throttling et firmware.
NVMeQueuesIRQMultipath SAN
DM-Multipath : path_grouping_policy, ALUA, failover, queue_if_no_path, checker, prio et path imbalance.
MultipathALUASANiSCSI tuning
Sessions, portals, jumbo frames, TCP buffers, multipath, replacement_timeout, login retries et isolation réseau.
iSCSITCPMultipathNFS tuning
nconnect, rsize/wsize, hard/soft, timeo, retrans, actimeo, sync/async, Kerberos et workloads metadata.
NFSnconnectrsizeSMB/CIFS tuning Linux
mount.cifs, cache, vers, multichannel selon support, signing, encryption, actimeo, credentials et workloads fichiers.
SMBCIFSMountNetwork tuning
MTU, IRQ/RPS/XPS, GRO/LRO, TCP buffers, congestion control, RDMA, packet loss et storage VLAN.
NetworkMTUTCPKernel VM dirty settings
vm.dirty_ratio, dirty_background_ratio, dirty_expire, writeback, swappiness et risques de latence writeback.
Dirty pagesWritebackVMmdadm / RAID software
Chunk size, stripe_cache_size, bitmap, resync speed, read-ahead, write-mostly, monitoring et rebuild impact.
mdadmRAIDRebuildLinux storage pour bases
Oracle, PostgreSQL, MySQL, SQL Server Linux : direct I/O, WAL, hugepages, fsync, scheduler, XFS/ext4.
DBWALfsyncContainers et Kubernetes nodes
overlayfs, containerd, kubelet eviction, local PV, CSI, image GC, journald logs et node disk pressure.
K8soverlayfsNode diskLogs et journald
journald, logrotate, filesystem pressure, sync writes, write amplification, partitionnement et rétention logs.
LogsjournaldlogrotateMonitoring Linux storage
iostat, blktrace, bpftrace, perf, pidstat, smartctl, nvme-cli, sar, Prometheus node_exporter.
Monitoringbpftracesmartctlsysctl, udev et persistance
Rendre les réglages durables : sysctl.d, udev rules, tuned, systemd timers, fstab et documentation.
sysctludevtunedChecklist tuning Linux storage
GO/NO-GO : baseline, rollback, un changement à la fois, p99, fstrim, scheduler, mount options, monitoring.
ChecklistGO/NO-GOBaselineDéfinition opérationnelle
mq-deadline, none, BFQ : choix du planificateur bloc selon SSD/NVMe, HDD, VM, desktop, serveur et latence.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Optimisation séquentielle : anticiper les lectures, améliorer streaming/backup, éviter pollution cache sur random I/O.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
noatime, nodiratime, discard, lazytime, barrier, commit, inode64, logbufs : options filesystem à comprendre avant tuning.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
SSD : discard continu vs fstrim planifié, thin provisioning, LVM, SAN, cloud disk et risques de performance.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Stripe, cache, thin provisioning, snapshots, metadata, alignment, extent size, writecache et monitoring.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs avancés : choisir selon workload, snapshots, checksums et admin.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Allocation groups, inode64, log buffers, reflink, quota, bigtime, ftype, fragmentation et workloads fichier massif.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Journal mode, commit interval, reserved blocks, stride/stripe-width, dir_index, lazytime et fsck strategy.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
ARC, L2ARC, SLOG, recordsize, ashift, compression, snapshots, scrubbing, sync writes et dataset design.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
COW, snapshots, compression, autodefrag, nodatacow, scrub, balance, metadata profile et workloads adaptés.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Queues, IRQ affinity, multipath NVMe, scheduler none, polling, namespace, thermal throttling et firmware.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
DM-Multipath : path_grouping_policy, ALUA, failover, queue_if_no_path, checker, prio et path imbalance.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Sessions, portals, jumbo frames, TCP buffers, multipath, replacement_timeout, login retries et isolation réseau.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
nconnect, rsize/wsize, hard/soft, timeo, retrans, actimeo, sync/async, Kerberos et workloads metadata.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
mount.cifs, cache, vers, multichannel selon support, signing, encryption, actimeo, credentials et workloads fichiers.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
MTU, IRQ/RPS/XPS, GRO/LRO, TCP buffers, congestion control, RDMA, packet loss et storage VLAN.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
vm.dirty_ratio, dirty_background_ratio, dirty_expire, writeback, swappiness et risques de latence writeback.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Chunk size, stripe_cache_size, bitmap, resync speed, read-ahead, write-mostly, monitoring et rebuild impact.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Oracle, PostgreSQL, MySQL, SQL Server Linux : direct I/O, WAL, hugepages, fsync, scheduler, XFS/ext4.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
overlayfs, containerd, kubelet eviction, local PV, CSI, image GC, journald logs et node disk pressure.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
journald, logrotate, filesystem pressure, sync writes, write amplification, partitionnement et rétention logs.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
iostat, blktrace, bpftrace, perf, pidstat, smartctl, nvme-cli, sar, Prometheus node_exporter.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
Rendre les réglages durables : sysctl.d, udev rules, tuned, systemd timers, fstab et documentation.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
Définition opérationnelle
GO/NO-GO : baseline, rollback, un changement à la fois, p99, fstrim, scheduler, mount options, monitoring.
Chaîne Linux storage
Composants à analyser
| Composant | Rôle / explication |
|---|---|
| Workload | Base de données, VM, NAS, backup, logs, object gateway, Kubernetes node, streaming, random I/O. |
| Block layer | Device, scheduler, queue, LVM, mdadm, multipath, NVMe, iSCSI, discard, alignment. |
| Filesystem layer | XFS, ext4, ZFS, Btrfs, mount options, journal, metadata, cache, fragmentation. |
| Kernel layer | Page cache, dirty pages, writeback, readahead, IRQ, TCP buffers, memory pressure. |
| Observation | iostat, fio, sar, vmstat, pidstat, bpftrace, smartctl, nvme-cli, dmesg, application metrics. |
| Safety | Baseline, snapshot/backup, rollback plan, one-change-at-a-time, test window, production guardrails. |
Cas d’usage
- Optimiser une base PostgreSQL/MySQL/Oracle sur Linux
- Réduire latence p99 d’un serveur NVMe
- Améliorer throughput backup ou streaming
- Stabiliser un serveur NFS/SMB
- Éviter saturation writeback et dirty pages
- Préparer un POC stockage Linux reproductible
Apports du tuning
- Permet de gagner performance sans changer de matériel
- Réduit latence p99 et comportements imprévisibles
- Clarifie le rôle de chaque couche Linux
- Rend les décisions de tuning auditables
- Évite les réglages magiques copiés sans contexte
Risques / limites
- Réglage bénéfique pour sequential mais mauvais pour random
- discard continu pouvant dégrader certains workloads
- sysctl global impactant d’autres applications
- mount options dangereuses si cohérence/journal mal compris
- benchmark sans rollback ni baseline exploitable
Matrice de décision Linux storage tuning
| Question | Décision à prendre |
|---|---|
| Quel workload ? | OLTP random, sequential backup, NAS metadata, VM images, logs, Kubernetes, object gateway ou archive. |
| Quel device ? | HDD, SATA SSD, NVMe, LUN SAN, iSCSI, NFS, SMB, cloud disk, mdadm, LVM ou device mapper. |
| Quel filesystem ? | XFS pour grosses charges, ext4 polyvalent, ZFS/Btrfs si snapshots/checksums avancés sont voulus. |
| Quel risque ? | Perte de cohérence, write amplification, latence p99, cache pollution, trim/discard, rollback difficile. |
| Quelle preuve ? | fio/iostat/sar avant-après, graphes p95/p99, logs applicatifs, versions kernel/firmware, configuration persistante. |
| Quelle persistance ? | udev, sysctl.d, tuned, fstab, systemd timer fstrim, scripts d’audit et documentation exploitation. |
Runbook tuning Linux storage
- Capturer baseline : iostat, vmstat, sar, fio, logs application, dmesg, SMART/NVMe health.
- Identifier type I/O : random/sequential, block size, read/write, queue depth, cache hit, dirty pages.
- Choisir un seul réglage : scheduler, readahead, mount option, fstrim, LVM stripe, sysctl, network.
- Appliquer en temporaire quand possible, mesurer p95/p99, throughput, saturation et erreurs.
- Valider côté application : transaction time, checkpoint, restore, backup, file listing, pod latency.
- Persister proprement via sysctl.d, udev rules, fstab, tuned ou systemd timer.
- Documenter rollback et seuils de monitoring.
# Discovery lsblk -o NAME,TYPE,SIZE,ROTA,SCHED,DISC-MAX,DISC-GRAN,MOUNTPOINT cat /sys/block/nvme0n1/queue/scheduler cat /sys/block/nvme0n1/queue/read_ahead_kb findmnt -no OPTIONS /data iostat -x 1 vmstat 1 sar -d 1 dmesg -T | tail -100 smartctl -a /dev/sda nvme smart-log /dev/nvme0 # Temporary tuning examples echo none > /sys/block/nvme0n1/queue/scheduler blockdev --setra 4096 /dev/nvme0n1 fstrim -v /data # fio validation fio --name=linux-storage --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --numjobs=4 --size=20G --direct=1 --time_based --runtime=300 --group_reporting
