Txheeb xyuas cov txheej txheem nrog cov haujlwm disk hauv Linux

TL; DR: Kab lus hais txog txoj hauv kev yooj yim, nrawm thiab txhim khu kev qha los txheeb xyuas Linux cov kev pabcuam uas sau cov ntaub ntawv rau disk, uas pab txhawm rau txheeb xyuas qhov loj lossis txawv txav tsis tu ncua ntawm lub disk subsystem, thiab tseem tso cai rau koj los kwv yees cov nyiaj siv ua haujlwm ntawm cov ntaub ntawv. Qhov no yog qhov tseeb tshwj xeeb rau SSDs hauv PCs, EMMCs, thiab Flash nco hauv ib lub khoos phis tawj.
Thaum sau tsab xov xwm no, kuv pom tias sau ob peb kilobytes ntawm cov ntaub ntawv mus rau BTRFS cov ntaub ntawv system ua rau sau 3 megabytes ntawm cov ntaub ntawv tiag tiag rau disk.

Taw qhia

"Huag, tsis muaj tseeb, lub cim xeeb ntawm cov SSDs niaj hnub no yuav ua tsis tiav tom qab ntau xyoo ntawm kev siv ib txwm, tsis txhob txhawj txog nws, hloov pauv tsawg dua, cov tshuab virtual thiab browser profile folder rau HDD" - cov lus teb raug rau cov lus nug txog kev ntseeg siab ntawm solid-state drives nrog guaranteed β‰ˆ150 TBW. Yog tias koj kwv yees ntau npaum li cas cov ntaub ntawv ib txwm muaj peev xwm sau tau, nws zoo li tias 10-20 GB ib hnub twb yog daim duab loj, cia kom muaj qhov siab tshaj plaws ntawm 40 GB, ntau ntxiv. Muab cov lej no, cov lus teb yog qhov tsim nyog - nws yuav siv sijhawm 10 xyoo kom ua tiav lav qhov tseem ceeb rau cov xov tooj ntawm tes overwritten, nrog 40 GB ntawm cov ntaub ntawv kaw txhua hnub.
Txawm li cas los xij, hauv 6 xyoo kuv twb tau siv kuv tus thib peb SSD: tus tswj ntawm thawj tus ua tsis tau, thiab tus thib ob pib txav cov ntaub ntawv ntawm cov hlwb ob peb zaug hauv ib hnub, uas ua rau 30-thib ob qeeb hauv kev pabcuam kaw.

Tom qab 7 lub hlis ntawm kev siv SSD tshiab, kuv txiav txim siab los tshuaj xyuas cov ntaub ntawv sau, raws li qhia los ntawm tus tsav nws tus kheej ntawm SMART.
19.7 Ib.
Hauv 7 lub hlis xwb, kuv tau siv 13% ntawm cov nyiaj tau lees paub ntawm cov ntaub ntawv kaw, txawm tias qhov tseeb tias nws tau teeb tsa raws li cov lus pom zoo rau kev sib koom ua ke thiab teeb tsa FS, Kuv yuav luag tsis siv sib pauv, lub tshuab virtual disks nyob. ntawm HDD!
Qhov no yog ib qho txawv txav loj heev; ntawm tus nqi no, lub warranty TBW yuav dhau mus ua ntej 5-xyoo disk warranty lub sijhawm. Thiab kuv lub computer tsis tuaj yeem sau 93 gigabytes ib hnub! Peb yuav tsum xyuas seb cov ntaub ntawv sau ntau npaum li cas rau disk hauv 10 feeb ...

Total:
Writes Queued: 24,712, 2,237MiB
Writes Completed: 25,507, 2,237MiB
Write Merges: 58, 5,472KiB

2.2 GiB, oh-ho-ho!

Kev txiav txim siab npaum li cas ntawm cov ntaub ntawv sau rau ntawm lub tshuab disk

Yog tias koj lub cuab yeej txhawb nqa S.M.A.R.T. (SSD, EMMC, qee qhov kev lag luam MicroSD), ces thawj qhov uas koj yuav tsum ua yog thov cov ntaub ntawv los ntawm tus tsav siv cov kev pab cuam smartctl, skdump los yog mmc (los ntawm mmc-utils).

Piv txwv tso zis los ntawm smartctl program

$ sudo smartctl -a /dev/sdb
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.3.11-200.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     Samsung SSD 860 EVO mSATA 250GB
Serial Number:    S41MNC0KA13477K
LU WWN Device Id: 5 002538 e700fa64b
Firmware Version: RVT41B6Q
User Capacity:    250β€―059β€―350β€―016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      mSATA
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Tue Nov 19 01:48:50 2019 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x53) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  85) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       5171
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       459
177 Wear_Leveling_Count     0x0013   096   096   000    Pre-fail  Always       -       62
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   058   039   000    Old_age   Always       -       42
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       29
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       38615215765

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Kuv SSD khaws cov ntaub ntawv sau rau hauv qhov ntsuas 241 Total_LBAs_Written, hauv cov logical blocks (LBA) tsis yog bytes. Qhov loj ntawm lub logical thaiv hauv kuv rooj plaub yog 512 bytes (nws tuaj yeem pom hauv smartctl tso zis, hauv Sector Size). Yuav kom tau bytes, koj yuav tsum muab tus nqi parameter los ntawm 512.

38615215765 Γ— 512 Γ· 1000 Γ· 1000 Γ· 1000 Γ· 1000 = 19,770 Π’Π‘
38615215765 Γ— 512 Γ· 1024 Γ· 1024 Γ· 1024 Γ· 1024 = 17,981 Π’ΠΈΠ‘

Qhov kev pab cuam skdump ntawm kuv SSD nws sim txhais qhov Total_LBAs_Written tus nqi qee yam ntawm nws tus kheej, uas yog vim li cas nws qhia 1296217.695 TB, uas yog obviously tsis raug.

Txhawm rau kom paub cov ntaub ntawv sau tseg ntawm qib ntaus ntawv, peb yuav siv qhov program btrace los ntawm pob blktrace. Nws qhia tau hais tias ob qho kev txheeb cais dav dav rau tag nrho lub sijhawm uas qhov kev zov me nyuam tau khiav, thiab cov txheej txheem ntawm tus kheej thiab cov xov (xws li cov ntsiav) uas ua cov ntaub ntawv kaw tseg.

Khiav cov lus txib hauv qab no los sau cov ntaub ntawv hauv 10 feeb, qhov twg /dev/sdb yog koj lub disk:

# btrace -w 600 -a write /dev/sdb

Hom lus txib tso zis

…
  8,16   0     3253    50.085433192     0  C  WS 125424240 + 64 [0]
  8,16   0     3254    50.085550024     0  C  WS 193577744 + 64 [0]
  8,16   0     3255    50.085685165     0  C  WS 197246976 + 64 [0]
  8,16   0     3256    50.085936852     0  C  WS 125736264 + 128 [0]
  8,16   0     3257    50.086060780     0  C  WS 96261752 + 64 [0]
  8,16   0     3258    50.086195031     0  C  WS 94948640 + 64 [0]
  8,16   0     3259    50.086327355     0  C  WS 124656144 + 64 [0]
  8,16   0     3260    50.086843733 15368  C WSM 310218496 + 32 [0]
  8,16   0     3261    50.086975238   753  A WSM 310218368 + 32 <- (8,20) 291339904
  8,16   0     3262    50.086975560   753  Q WSM 310218368 + 32 [dmcrypt_write/2]
  8,16   0     3263    50.086977345   753  G WSM 310218368 + 32 [dmcrypt_write/2]
  8,16   0     3264    50.086978072   753  I WSM 310218368 + 32 [dmcrypt_write/2]
  8,16   0     3265    50.086979159   753  D WSM 310218368 + 32 [dmcrypt_write/2]
  8,16   0     3266    50.087055685     0  C WSM 310218368 + 32 [0]
  8,16   0     3267    50.087060168   753  A WSM 310218592 + 160 <- (8,20) 291340128
  8,16   0     3268    50.087060367   753  Q WSM 310218592 + 160 [dmcrypt_write/2]
  8,16   0     3269    50.087061242   753  G WSM 310218592 + 160 [dmcrypt_write/2]
  8,16   0     3270    50.087061698   753  I WSM 310218592 + 160 [dmcrypt_write/2]
  8,16   0     3271    50.087062361   753  D WSM 310218592 + 160 [dmcrypt_write/2]
  8,16   0     3272    50.087386179     0  C WSM 310218592 + 160 [0]
  8,16   0     3273    50.087436417 15368  A FWS 0 + 0 <- (253,1) 0
  8,16   0     3274    50.087437471 15368  Q FWS [LS Thread]
  8,16   0     3275    50.087440862 15368  G FWS [LS Thread]
  8,16   0     3276    50.088300047     0  C  WS 0 [0]
  8,16   0     3277    50.088470917   753  A WFSM 18882688 + 8 <- (8,20) 4224
  8,16   0     3278    50.088471091   753  Q WFSM 18882688 + 8 [dmcrypt_write/2]
  8,16   0     3279    50.088471688   753  G WFSM 18882688 + 8 [dmcrypt_write/2]
  8,16   0     3280    50.088474334 32254  D WSM 18882688 + 8 [kworker/0:2H]
  8,16   0     3281    50.088515572     0  C WSM 18882688 + 8 [0]
  8,16   0     3282    50.089229069     0  C WSM 18882688 [0]
CPU0 (8,16):
 Reads Queued:           0,        0KiB  Writes Queued:         345,   25,932KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:      331,   25,788KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:    1,597,  117,112KiB
 Read Merges:            0,        0KiB  Write Merges:            1,       16KiB
 Read depth:             0               Write depth:           177
 IO unplugs:             0               Timer unplugs:           0
CPU1 (8,16):
 Reads Queued:           0,        0KiB  Writes Queued:         502,   39,948KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:      495,   40,076KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
 Read Merges:            0,        0KiB  Write Merges:            0,        0KiB
 Read depth:             0               Write depth:           177
 IO unplugs:             0               Timer unplugs:           0
CPU2 (8,16):
 Reads Queued:           0,        0KiB  Writes Queued:         297,   26,800KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:      287,   26,800KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
 Read Merges:            0,        0KiB  Write Merges:            0,        0KiB
 Read depth:             0               Write depth:           177
 IO unplugs:             0               Timer unplugs:           0
CPU3 (8,16):
 Reads Queued:           0,        0KiB  Writes Queued:         418,   24,432KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:      408,   24,448KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
 Read Merges:            0,        0KiB  Write Merges:            2,      272KiB
 Read depth:             0               Write depth:           177
 IO unplugs:             0               Timer unplugs:           0

Total (8,16):
 Reads Queued:           0,        0KiB  Writes Queued:       1,562,  117,112KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:    1,521,  117,112KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:    1,597,  117,112KiB
 Read Merges:            0,        0KiB  Write Merges:            3,      288KiB
 IO unplugs:             0               Timer unplugs:           0

Throughput (R/W): 0KiB/s / 2,338KiB/s
Events (8,16): 9,287 entries
Skips: 0 forward (0 -   0.0%)

btrace tso cai rau koj kom pom tseeb qhov tseeb ntawm cov ntaub ntawv kaw tseg, tab sis nws nyuaj rau kev nkag siab tias cov kev pab cuam twg kaw los ntawm nws cov zis.

Txiav txim siab cov kev pab cuam uas sau rau lub tsav

Qhov kev pab cuam iotop yuav qhia cov txheej txheem sau rau lub disk thiab qhov loj ntawm cov ntaub ntawv sau.
Qhov yooj yim tshaj plaws tso zis yog muab los ntawm cov nram qab no tsis:

# iotop -obPat

Sample program tso zis

02:55:47 Total DISK READ :       0.00 B/s | Total DISK WRITE :      30.65 K/s
02:55:47 Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
    TIME  PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
b'02:55:47   753 be/4 root          0.00 B      0.00 B  0.00 %  0.04 % [dmcrypt_write/2]'
b'02:55:47   788 be/4 root         72.00 K     18.27 M  0.00 %  0.02 % [btrfs-transacti]'
b'02:55:47 15057 be/4 valdikss    216.00 K    283.05 M  0.00 %  0.01 % firefox'
b'02:55:47  1588 ?dif root          0.00 B      0.00 B  0.00 %  0.00 % Xorg -nolisten tcp -auth /var/run/sddm/{398f030f-9667-4dff-b371-81eaae48dfdf} -background none -noreset -displayfd 18 -seat seat0 vt1'
b'02:55:47 15692 be/4 valdikss    988.00 K      9.41 M  0.00 %  0.00 % python3 /usr/bin/gajim'
b'02:55:47 15730 ?dif valdikss      9.07 M      0.00 B  0.00 %  0.00 % telegram-desktop --'
b'02:55:47  2174 ?dif valdikss   1840.00 K      2.47 M  0.00 %  0.00 % yakuake'
b'02:55:47 19827 be/4 root         16.00 K    896.00 K  0.00 %  0.00 % [kworker/u16:7-events_unbound]'
b'02:55:47 19074 be/4 root         16.00 K    480.00 K  0.00 %  0.00 % [kworker/u16:4-btrfs-endio-write]'
b'02:55:47 19006 be/4 root         16.00 K   1872.00 K  0.00 %  0.00 % [kworker/u16:1-events_unbound]'
b'02:55:47  1429 be/4 root        484.00 K      0.00 B  0.00 %  0.00 % accounts-daemon'
b'02:55:47 15820 be/4 valdikss    312.00 K      0.00 B  0.00 %  0.00 % firefox -contentproc -childID 6 -isForBrowser -prefsLen 7894 -prefMapSize 223880 -parentBuildID 20191022164834 -greomni /usr/lib64/firefox/omni.ja -appomni /usr/lib64/firefox/browser/omni.ja -appdir /usr/lib64/firefox/browser 15057 tab'
b'02:55:47  2125 ?dif valdikss      0.00 B     92.00 K  0.00 %  0.00 % plasmashell'
b'02:55:47  1268 be/3 root          0.00 B      4.00 K  0.00 %  0.00 % auditd'
b'02:55:47  1414 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % sssd_nss --uid 0 --gid 0 --logger=files'
b'02:55:47 15238 be/4 valdikss      0.00 B      4.00 K  0.00 %  0.00 % thunderbird'
b'02:55:47 18605 be/4 root          0.00 B      3.19 M  0.00 %  0.00 % [kworker/u16:0-btrfs-endio-write]'
b'02:55:47 18867 be/4 root          0.00 B     96.00 K  0.00 %  0.00 % [kworker/u16:5-btrfs-endio-meta]'
b'02:55:47 19070 be/4 root          0.00 B    160.00 K  0.00 %  0.00 % [kworker/u16:2-btrfs-freespace-write]'
b'02:55:47 19645 be/4 root          0.00 B      2.17 M  0.00 %  0.00 % [kworker/u16:3-events_unbound]'
b'02:55:47 19982 be/4 root          0.00 B    496.00 K  0.00 %  0.00 % [kworker/u16:6-btrfs-endio-write]'

Firefox ntes koj lub qhov muag, kaw 283 megabytes hauv ob peb feeb ntawm iotop khiav.

Txiav txim siab cov ntaub ntawv yuav tsum tau sau rau

Cov ntaub ntawv hais txog cov txheej txheem uas raping lub disk yog qhov zoo, tab sis txoj hauv kev uas cov ntaub ntawv kaw tau zoo dua.

Wb siv qhov program fatrace, uas lem hloov mus rau cov ntaub ntawv system.

# fatrace -f W

Sample program tso zis

firefox(15057): CW /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal
firefox(15057): CW /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): CW /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/usage-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/usage
firefox(15057): CW /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/usage
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite-wal
firefox(15057): CW /home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/https+++habr.com/ls/data.sqlite-journal
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite
firefox(15057): W /home/valdikss/.mozilla/firefox/xyf4vqh2.default/webappsstore.sqlite

Fatrace tsis tuaj yeem qhia tus nqi ntawm cov ntaub ntawv kaw vim yog siv qhov yooj yim taug qab ntawm qhov tseeb tias cov ntaub ntawv nkag los ntawm inotify.

Los ntawm cov zis koj tuaj yeem pom yuav ua li cas Habr txuag kuv tsab xov xwm hauv lub zos cia ntawm qhov browser thaum kuv tab tom sau nws, nrog rau Pab Pawg Speed ​​​​Dial txuas ntxiv, uas, raws li peb tau tshawb pom siv fatrace, nyeem nws cov ntaub ntawv txhua. 30 vib nas this. Nws nyeem, tsis sau: CW ua ntej cov ntaub ntawv hais tias cov ntaub ntawv qhib rau kev nyeem ntawv thiab sau ntawv, nrog rau kev tsim cov ntaub ntawv ib txhij yog tias nws ploj lawm (hu ua openat nrog O_RDWR|O_CREAT chij), tab sis tsis tau hais tias cov ntaub ntawv tau sau rau hauv cov ntaub ntawv.

Tsuas yog nyob rau hauv rooj plaub no, kom paub tseeb tias qhov no, cia peb siv txoj hlua, nrog lub lim rau cov ntaub ntawv hu xov tooj:

strace -yy -e trace=open,openat,close,write -f -p 15057 2>&1 | grep extension

Hais kom tso zis

[pid 20352] openat(AT_FDCWD, "/home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 153</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>
[pid 20352] read(153</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>, "SQLite format 3 20 22 @   d 23"..., 100) = 100
[pid 20352] read(153</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>, "SQLite format 3 20 22 @   d 23"..., 4096) = 4096
[pid 20352] openat(AT_FDCWD, "/home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 166</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal>
…
[pid 20352] read(54</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>, " r4304364354354364-  4204!4'414" 250 &"..., 4096) = 4096
[pid 20352] read(54</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>, " 136Pt2262504 O24532016:"16.27 r245306>2461t1q370"..., 4096) = 4096
[pid 20352] close(77</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal>) = 0
[pid 20352] close(54</home/valdikss/.mozilla/firefox/xyf4vqh2.default/storage/default/moz-extension+++e5c304fb-af40-498a-9ba8-47eb0416e933^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite>) = 0

Tsis muaj hu write(), uas qhia tias tsis muaj kev nkag mus rau cov ntaub ntawv.

Txiav txim siab cov ntaub ntawv qhov system nyiaj siv ua haujlwm

Qhov sib txawv loj hauv kev nyeem ntawv iotop ΠΈ btrace muab kuv lub tswv yim los ntsuam xyuas cov ntaub ntawv system los ntawm manually sau cov ntaub ntawv rau ib cov ntaub ntawv thiab saib xyuas btrace nyeem.

Yog tias koj tsis suav tag nrho sau rau disk los ntawm booting rau hauv systemd thaum muaj xwm ceev hom thiab sau manually ob peb bytes cov ntaub ntawv rau cov ntaub ntawv uas twb muaj lawm, btrace rau SSD los ntawm btrfs ceeb toom kaw 3 megab cov ntaub ntawv tiag. Lub kaw lus tshiab tsim cov ntaub ntawv ntawm 8 GB flash drive sau tsawg kawg ntawm 264 KiB thaum sau ib byte.
Rau kev sib piv, sau ob peb bytes rau ib cov ntaub ntawv ntawm ext4 xaus sau 24 kilobytes ntawm cov ntaub ntawv rau disk.

Hauv 2017, Jayashree Mohan, Rohan Kadekodi thiab Vijay Chidambaram tau ua ib txoj kev kawm ntawm kev sau amplification ntawm txawv cov ntaub ntawv systems, lawv cov txiaj ntsig rau btrfs thiab ext4 ntawm 4KB sau tau zoo ib yam nrog kuv.

Txheeb xyuas cov txheej txheem nrog cov haujlwm disk hauv Linux

Kev xaus thiab xaus

Los ntawm kev piav qhia manipulations nws tau pom:

  1. Kev txiav txim siab tsis tu ncua ntawm lub tshuab luam ntawv txoj hauj lwm hais los ntawm CUPS print daemon rau /var/cache/ khob txhua feeb. Qhov teeb meem tau kho los ntawm clearing /var/spool/ khob (txawm tias tsis muaj cov haujlwm luam tawm);
  2. Qhov tseeb tias cov ntaub ntawv tau nyeem txhua 30 vib nas this los ntawm Pab Pawg Ceev Dial txuas ntxiv rau Firefox;
  3. Kev nkag mus rau ib ntus los ntawm ntau yam kev pabcuam taug qab hauv Fedora, ua rau ntau megabytes ntawm cov ntaub ntawv raug sau rau btrfs: pmcd.service, pmie.service, pmlogger.service;
  4. Amplification loj heev thaum sau me me ntawm cov ntaub ntawv siv btrfs.

Xaus: koj yuav tsum tsis txhob siv btrfs yog tias cov kev pab cuam feem ntau sau cov ntaub ntawv me me (ob peb kilobytes), txwv tsis pub nws yuav ua rau megabytes ntawm cov ntaub ntawv sau. Qhov no yog qhov tseeb tshwj xeeb rau cov khoos phis tawj ib leeg nrog OS ntawm MicroSD.

Tau qhov twg los: www.hab.com

Ntxiv ib saib