Ashift umstellen auf 12

Fischje

Renowned Member
Sep 25, 2014
64
1
73
Mönchengladbach/GER
Hallo,

ich habe natürlich beim Pool erstellen nicht richtig mitgedacht. Weder bei meinem Datenpool, noch bei meinem rpool.

Folgende Blocksizes habe ich mir jetzt über die devices anzeigen lassen:
lsblk -o NAME,MOUNTPOINT,PHY-SEC
Bash:
NAME     MOUNTPOINT PHY-SEC
sda                    4096
├─sda1                 4096
└─sda9                 4096
sdb                     512
├─sdb1                  512
├─sdb2                  512
└─sdb3                  512
sdc                     512
├─sdc1                  512
├─sdc2                  512
└─sdc3                  512
sdd                    4096
├─sdd1                 4096
└─sdd9                 4096
sde                    4096
├─sde1                 4096
└─sde9                 4096
sdf                    4096
├─sdf1                 4096
└─sdf9                 4096
sdg                    4096
├─sdg1                 4096
└─sdg9                 4096
sdh                    4096
├─sdh1                 4096
└─sdh9                 4096
zd0                    8192
├─zd0p1                8192
├─zd0p2                8192
└─zd0p3                8192
zd16                   8192
├─zd16p1               8192
├─zd16p2               8192
└─zd16p3               8192
zd32                   8192
├─zd32p1               8192
└─zd32p2               8192
zd48                   8192
├─zd48p1               8192
├─zd48p2               8192
└─zd48p5               8192
zpool get all
Bash:
zpool get all
NAME   PROPERTY                       VALUE                          SOURCE
rpool  size                           89G                            -
rpool  capacity                       4%                             -
rpool  altroot                        -                              default
rpool  health                         ONLINE                         -
rpool  guid                           7742339487758465282            -
rpool  version                        -                              default
rpool  bootfs                         rpool/ROOT/pve-1               local
rpool  delegation                     on                             default
rpool  autoreplace                    off                            default
rpool  cachefile                      -                              default
rpool  failmode                       wait                           default
rpool  listsnapshots                  off                            default
rpool  autoexpand                     off                            default
rpool  dedupratio                     1.00x                          -
rpool  free                           84.9G                          -
rpool  allocated                      4.13G                          -
rpool  readonly                       off                            -
rpool  ashift                         12                             local
rpool  comment                        -                              default
rpool  expandsize                     -                              -
rpool  freeing                        0                              -
rpool  fragmentation                  6%                             -
rpool  leaked                         0                              -
rpool  multihost                      off                            default
rpool  checkpoint                     -                              -
rpool  load_guid                      1987574620616317429            -
rpool  autotrim                       off                            default
rpool  feature@async_destroy          enabled                        local
rpool  feature@empty_bpobj            active                         local
rpool  feature@lz4_compress           active                         local
rpool  feature@multi_vdev_crash_dump  enabled                        local
rpool  feature@spacemap_histogram     active                         local
rpool  feature@enabled_txg            active                         local
rpool  feature@hole_birth             active                         local
rpool  feature@extensible_dataset     active                         local
rpool  feature@embedded_data          active                         local
rpool  feature@bookmarks              enabled                        local
rpool  feature@filesystem_limits      enabled                        local
rpool  feature@large_blocks           enabled                        local
rpool  feature@large_dnode            enabled                        local
rpool  feature@sha512                 enabled                        local
rpool  feature@skein                  enabled                        local
rpool  feature@edonr                  enabled                        local
rpool  feature@userobj_accounting     active                         local
rpool  feature@encryption             enabled                        local
rpool  feature@project_quota          active                         local
rpool  feature@device_removal         enabled                        local
rpool  feature@obsolete_counts        enabled                        local
rpool  feature@zpool_checkpoint       enabled                        local
rpool  feature@spacemap_v2            active                         local
rpool  feature@allocation_classes     enabled                        local
rpool  feature@resilver_defer         enabled                        local
rpool  feature@bookmark_v2            enabled                        local
rpool  feature@redaction_bookmarks    enabled                        local
rpool  feature@redacted_datasets      enabled                        local
rpool  feature@bookmark_written       enabled                        local
rpool  feature@log_spacemap           active                         local
rpool  feature@livelist               enabled                        local
rpool  feature@device_rebuild         enabled                        local
rpool  feature@zstd_compress          enabled                        local
tank   size                           16.4T                          -
tank   capacity                       15%                            -
tank   altroot                        -                              default
tank   health                         ONLINE                         -
tank   guid                           7397998612028867886            -
tank   version                        -                              default
tank   bootfs                         -                              default
tank   delegation                     on                             default
tank   autoreplace                    off                            default
tank   cachefile                      -                              default
tank   failmode                       wait                           default
tank   listsnapshots                  off                            default
tank   autoexpand                     off                            default
tank   dedupratio                     1.00x                          -
tank   free                           13.9T                          -
tank   allocated                      2.48T                          -
tank   readonly                       off                            -
tank   ashift                         0                              default
tank   comment                        -                              default
tank   expandsize                     -                              -
tank   freeing                        0                              -
tank   fragmentation                  1%                             -
tank   leaked                         0                              -
tank   multihost                      off                            default
tank   checkpoint                     -                              -
tank   load_guid                      1698562018897266983            -
tank   autotrim                       off                            default
tank   feature@async_destroy          enabled                        local
tank   feature@empty_bpobj            active                         local
tank   feature@lz4_compress           active                         local
tank   feature@multi_vdev_crash_dump  enabled                        local
tank   feature@spacemap_histogram     active                         local
tank   feature@enabled_txg            active                         local
tank   feature@hole_birth             active                         local
tank   feature@extensible_dataset     active                         local
tank   feature@embedded_data          active                         local
tank   feature@bookmarks              enabled                        local
tank   feature@filesystem_limits      enabled                        local
tank   feature@large_blocks           enabled                        local
tank   feature@large_dnode            enabled                        local
tank   feature@sha512                 enabled                        local
tank   feature@skein                  enabled                        local
tank   feature@edonr                  enabled                        local
tank   feature@userobj_accounting     active                         local
tank   feature@encryption             enabled                        local
tank   feature@project_quota          active                         local
tank   feature@device_removal         enabled                        local
tank   feature@obsolete_counts        enabled                        local
tank   feature@zpool_checkpoint       enabled                        local
tank   feature@spacemap_v2            active                         local
tank   feature@allocation_classes     enabled                        local
tank   feature@resilver_defer         enabled                        local
tank   feature@bookmark_v2            enabled                        local
tank   feature@redaction_bookmarks    enabled                        local
tank   feature@redacted_datasets      enabled                        local
tank   feature@bookmark_written       enabled                        local
tank   feature@log_spacemap           active                         local
tank   feature@livelist               enabled                        local
tank   feature@device_rebuild         enabled                        local
tank   feature@zstd_compress          enabled                        local
Also die Festplatten sda, sdd, sde, sdf, sdg und sdh sind alle Seagate 6GB IronWolf mit 4K Sektogrößen. Dafür müsste ich den pool doch mit ashift=12 anlegen oder?
Bei der Installation von PVE, meine ich, könnte man auch ne Size angeben. Hier würden zwei SSD sdb und sdc genommen. Hier (die wahrscheinlich schon oft gefragte) Frage: Haben die SSD wirklich 512 Blocksize oder ist das einfach ein gefakter Wert beim auslesen und ich muss die mal beim hersteller nachschauen.

Wenn ich wüsste mit welchen Einstellungen, dann würde ich die Daten backupen, die entsprechenden Pools neu erstellen und die Daten wieder zurückholen. Beim Datenpool klar, beim root-Pool muss ich noch grübeln, wie das am besten geht...


Ausserdem: Es sind Consumer SSDs. Kann ich das Wearout irgendwo nachvollziehen, ob die mir gerade schnell kaputt gehen und ich gegen Enterprise tauschen muss? Ich sehe unter DISKS nicht wirklich was. Wie stelle ich das "Schnelle Kaputtgehen" denn fest, was so oft zitiert wird.
1631804330776.png
 
Last edited:
Also die Festplatten sda, sdd, sde, sdf, sdg und sdh sind alle Seagate 6GB IronWolf mit 4K Sektogrößen. Dafür müsste ich den pool doch mit ashift=12 anlegen oder?
Genau.
Bei der Installation von PVE, meine ich, könnte man auch ne Size angeben. Hier würden zwei SSD sdb und sdc genommen. Hier (die wahrscheinlich schon oft gefragte) Frage: Haben die SSD wirklich 512 Blocksize oder ist das einfach ein gefakter Wert beim auslesen und ich muss die mal beim hersteller nachschauen.
Keine SSD läuft mit 512B. Die werden alle intern mit 4K oder sehr wahrscheinlich 8K, 16K oder weit mehr arbeiten. Mit 4K macht man aber selten etwas verkehrt, da alle Benchmarks ja mit 4K LBA laufen und die SSDs da ja einen guten Eindruck machen sollen. Wenn die Hersteller nicht dumm sind, dann werden die ihre Firmware schon für 4K optimieren, da dies ja fast ausschließlich genutzt wird.
Beim Hersteller nachschauen kannst du dir sparen. Soweit ich weiß rückt kein Hersteller mit echten Blockgrößen heraus. Dann würden die SSDs ja ziemlich schlecht dastehen. Da kann man immer nur Anhang von benchmarks indirekt auf die Blockgröße schließen.
Ausserdem: Es sind Consumer SSDs. Kann ich das Wearout irgendwo nachvollziehen, ob die mir gerade schnell kaputt gehen und ich gegen Enterprise tauschen muss? Ich sehe unter DISKS nicht wirklich was. Wie stelle ich das "Schnelle Kaputtgehen" denn fest, was so oft zitiert wird.
Am besten mal smartctl für jedes Laufwerk aufrufen. Also z.B. smartctl -a /dev/sda. Meistens loggen da die SSDs ihre geschriebenen Daten über die ganze Lebenszeit mit. Aber Smart Attribute sind nicht standardisiert, also nutzt da jeder Hersteller (und oft sogar jedes SSD Modell) andere Werte. Ist da auch oft sehr schwer herauszufinden, was da die Werte genau bedeuten sollen. Die wenigsten SSD Hersteller geben da wirklich ausführliche Datasheets heraus, wo genau erklärt wird, wie jedes einzelne Attribute genau berechnet wird. Meine Intel S3700 SSD hat z.B das Attribut "Host_Writes_32MiB" (Lob an Intel, die beschreiben da jedes Attribut ausführlich!). Diese Zahl muss man wie es schon der Name vermuten lässt mit 32 MiB multiplizieren, um die Datenmenge zu erhalten, welche über die ganze Lebenszeit auf die SSD geschrieben werden SOLLTE. Hätte ich da also "Host_Writes_32MiB = 100000" wären das 100000 * 32 MiB = 3.200.000 MiB = 3,05 TiB. Was man aber nicht entnehmen kann ist, was die SSD tatsächlich auf den NAND Speicher geschrieben hat. Jede SSD hat ja technisch bedingt noch intern eine Write Amplification. Sie schreibt also immer mehr als der Host tatsächlich an Daten an die SSD schickt.
Das Nachfolgemodell, die Intel S3710 hat dann zusätzlich noch das Attribut "NAND_Writes_32MiB". Dieses muss ebenfalls mit 32MiB multipliziert werden und zeigt tatsächlich die Datenmenge an, welche auf den NAND geschrieben wurde. NAND_Writes_32MiB ist immer so das 2-3 fache von den Host_Writes_32MiB, also hat meine SSD da eine interne Write Amplification von Faktor 2 bis 3.
Sprich, selbst wenn dir die SSD da irgendwelche Zahlen ausgibt, heißt das nicht, dass das auch wirklich die realen Datenmengen sind, die da wirklich geschrieben wurden. Mit meiner S3700 kann ich das also nicht real auslesen, mit der S3710 aber schon. Da kannst du dann nur Daumen drücken, dass da der Hersteller eine gescheite Firmware geschrieben hat, welche dir Einblick erlaubt.
Meist haben die SSDs aber noch irgendeine Art Wearout Indikator der entweder von 0 bis 100 hochzählt oder von 100 auf 0 runterzählt. Hier macht es auch wieder jeder Hersteller anders, ob da die SSD bei einem Wert von 20 z.B. nur 20% abgenutzt ist oder nur noch 20% lebenszeit übrig hat. Vermutlich am besten diesen Wert zu rate ziehen, weil man da weniger falsch interpretieren kann als mit der gesamt geschriebenen Datenmenge.

Wenn du grob hochrechnen willst wie lange deine SSDs wohl überlebt, dann kannst du mit apt install sysstat das Programm iostat auf dem host installieren. Dann den Host mal einen Tag ohne reboot laufen lassen und dann iostat ausführen. iostat listet dir dann für alle Laufwerke auf, was die jeweils in der Summe seit dem Reboot an Daten auf die SSDs geschrieben haben. Auch bekommst du dann eine durchschnittliche Schreibrate pro Laufwerk seit dem reboot angezeigt. Steht da z.B. 100kb/s für sdc, dann hat sdc im Schnitt seit dem Reboot mit 100 kb/s geschrieben. Das kannst du dann ja entsprechend hochrechnen. Also 100kb/s * 60 * 60 * 24 * 365 = 3.153.600.000 kb pro Jahr. Ich glaube mit "kb" meint iostat eigentlich "KiB", müsste man dann also durch 1024 statt durch 1000 teilen. 3.153.600.000 kb pro jahr / 1024 / 1024 / 1024 = 2,94 TiB pro Jahr. Das ist dann aber halt auch nur die echte Datenmenge, welche der Host an die SSD geschickt hat. Jetzt musst du raten, was da wohl deine SSD interne Write Amplification sein könnte. Das ist wohl immer nach Modell und Workload unterschiedlich. Bei mir ist es wie gesagt je nach Workload zwischen Faktor 2 und 3 schwankend. Da würde ich die 2,94 TiB pro Jahr dann also noch mit Faktor 2,5 multiplizieren und würde dann auf 7,35 TiB pro Jahr kommen, was da wohl so grob auf den NAND der SSD geschrieben wird. Und dann kannst du dir das Datenblatt von der SSD raussuchen. Da ist immer entweder ein TBW (total bytes written) oder ein DWPD (drives written per day) Wert angegeben. Hat die SSD z.B. 300 TB TBW dann wird sie bei 8,08 TB pro Jahr (TBW ist eigentlich immer echte "TB" und nicht "TiB" und dann musst du die 7,35 TiB zu 8,08 TB umrechnen...z.B. über Google wenn du "XYZ TiB zu TB" in die Suche eingibst) also 300TB / 8,08 TB pro Jahr = 37 Jahre halten.
Ist der Wert nur als DWPD angegeben ohne TBW musst du dir erst die TBW ausrechnen. Ein DWPD von 3 heißt, dass du da über die Garantie-Zeit deine SSD jeden Tag 3 mal komplett beschreiben darfst. Hast du eine 5 Jahre Garantie und wäre deine SSD 1TB groß, dann wären das also 3 DWPD * (5 * 365 Tage Garantie) * 1 TB SSD-Kapazität = 5475 TB TBW.
 
Last edited:
Am besten mal smartctl für jedes Laufwerk aufrufen. Also z.B. smartctl -a /dev/sda. Meistens loggen da die SSDs ihre geschriebenen Daten über die ganze Lebenszeit mit. Aber Smart Attribute sind nicht standardisiert, also nutzt da jeder Hersteller (und oft sogar jedes SSD Modell) andere Werte.
Zur Info, meine günstigen WD Green liefern folgendes:
Code:
233 NAND_GB_Written_TLC     0x0032   100   100   ---    Old_age   Always       -       2690
234 NAND_GB_Written_SLC     0x0032   100   100   000    Old_age   Always       -       7623
241 Host_Writes_GiB         0x0030   100   100   000    Old_age   Offline      -       3570
242 Host_Reads_GiB          0x0030   100   100   000    Old_age   Offline      -       2309
Die Toshiba NVME:
Code:
Temperature:                        46 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    3%
Data Units Read:                    3,682,556 [1.88 TB]
Data Units Written:                 5,285,335 [2.70 TB]
Host Read Commands:                 15,484,958
Host Write Commands:                78,330,549

Mein Lob geht an Kioxia (Toshiba), das ist für jedermann lesbar. ;)
 
Last edited:
Zur Info, meine günstigen WD Green liefern folgendes:
Code:
233 NAND_GB_Written_TLC     0x0032   100   100   ---    Old_age   Always       -       2690
234 NAND_GB_Written_SLC     0x0032   100   100   000    Old_age   Always       -       7623
Wobei ich mich dort z.B. frage, ob da nun 7623 + 2690 GB = 10313 GB geschrieben wurden. So rein vom Namen klingt es ja so, da SSDs keinen extra SLC NAND haben, sondern einfach freien TLC NAND in einem SLC Modus betreiben, wenn sie nicht-flüchtig cachen wollen. SLC Writes sollten also ausschließlich vom Cachen kommen und sollten den NAND deutlich weniger beschädigen wie normale TLC writes. Also wahrscheinlich haben die 7623 GB SLC Writes den NAND weniger kaputt gemacht als die 2690 GB TLC Writes, obwohl beides den selben NAND benutzt.
Code:
241 Host_Writes_GiB         0x0030   100   100   000    Old_age   Offline      -       3570
242 Host_Reads_GiB          0x0030   100   100   000    Old_age   Offline      -       2309
Hier musst du mit dem "Offline" aufpassen. Das heißt, dass sich der Wert nur aktualisiert, wenn du den Server runterfahrst. Läuft der Server 1 Jahr durch dann ändert sich da auch 1 Jahr lang nichts und das SMART Attribut macht dann einen riesen Sprung.
Die Toshiba NVME:
Code:
Temperature:                        46 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    3%
Data Units Read:                    3,682,556 [1.88 TB]
Data Units Written:                 5,285,335 [2.70 TB]
Host Read Commands:                 15,484,958
Host Write Commands:                78,330,549

Mein Lob geht an Kioxia (Toshiba), das ist für jedermann lesbar. ;)
Bei NVMe ist das anders. Da sieht es meine ich immer so aus, egal welcher Hersteller. Da weiß ich aber auch nicht ob "Data Unit Written" nun die Writes vom Host zur SSD sind oder die tatsächlichen Writes auf den NAND. Ich würde eher ersteres vermuten.
 
Wobei ich mich dort z.B. frage, ob da nun 7623 + 2690 GB = 10313 GB geschrieben wurden. So rein vom Namen klingt es ja so, da SSDs keinen extra SLC NAND haben, sondern einfach freien TLC NAND in einem SLC Modus betreiben, wenn sie nicht-flüchtig cachen wollen. SLC Writes sollten also ausschließlich vom Cachen kommen und sollten den NAND deutlich weniger beschädigen wie normale TLC writes. Also wahrscheinlich haben die 7623 GB SLC Writes den NAND weniger kaputt gemacht als die 2690 GB TLC Writes, obwohl beides den selben NAND benutzt.

Hier musst du mit dem "Offline" aufpassen. Das heißt, dass sich der Wert nur aktualisiert, wenn du den Server runterfahrst.
Ja die SSDs nutzen den gleichen NAND, macht wenigstens etwas Performance. ;)
Ich boote ca. alle 2 Wochen neu beim patchen. Daher passen die Daten schon.
 
Also hab den Pool mal auf Raid-Z2 gewechselt und mit ashift=12 neu angelegt.

Für die SSD habe ich eben sysstat installiert und warte mal bis morgen.

Smartctl sagt auf jeden Fall bei den SSD schon mal folgendes:

sdb:
Code:
241 Lifetime_Writes_GiB     0x0030   253   253   000    Old_age   Offline      -       7701
242 Lifetime_Reads_GiB      0x0030   253   253   000    Old_age   Offline      -       1042
sdc:
Code:
241 Lifetime_Writes_GiB     0x0030   253   253   000    Old_age   Offline      -       6957
242 Lifetime_Reads_GiB      0x0030   253   253   000    Old_age   Offline      -       1176
Beides dieses Modell:
Code:
=== START OF INFORMATION SECTION ===
Model Family:     SandForce Driven SSDs
Device Model:     SanDisk SDSSDA120G
Serial Number:    xxxxxxxxxx
LU WWN Device Id: 5 001b44 xxxxxxxx
Firmware Version: Z33130RL
User Capacity:    120,034,123,776 bytes [120 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue Sep 28 13:57:11 2021 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!