Як правильно розділити флеш-диск USB та яку файлову систему вибрати, враховуючи вирівнювання зносу?


13

Дві проблеми. Перший: як розділити флешку?

Мені це не потрібно було робити, але я більше не впевнений, чи правильно вирівняний мій розділ, оскільки я був змушений видалити та створити нову таблицю розділів після того, як gparted поскаржився, коли я намагався відформатувати диск з FAT в ext4.

Наївною відповіддю було б сказати "просто використовувати за замовчуванням, і все буде в порядку". Однак якщо ви прочитаєте наступні посилання, ви дізнаєтесь, що все не так просто: https://lwn.net/Articles/428584/ та http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Тоді також випускається циліндри, головки та сектори. В даний час я отримую це:

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

Отже, з мого теперішнього розуміння, я повинен вирівняти розділи на 4 МіБ (зараз це 1 МіБ). Але я досі не знаю, як правильно встановити голови та сектори для свого пристрою.

Друга проблема: файлова система.

З базових показників, які я бачив, ext4 забезпечує найкращі показники роботи, проте існує проблема вирівнювання зносу. Як я можу знати, що мікроконтролер мого Transcend JetFlash 700 забезпечує вирівнювання зносу? Або я просто швидше вбиваю свій привід?

Я бачив багато публікацій в Інтернеті, в яких говорилося, що не хвилюйтесь, що нові диски вже дбають про це. Але я ніколи не бачив жодного підтвердженого підтвердження цього і в якийсь момент люди починають змішувати SSD з технологією флеш-накопичувачів USB. Безпечним варіантом було б піти на ext2, однак серйозні тести, які я виконував, показали жахливі показники !!!

Ці значення є реальним сценарієм, а не синтетичним тестом:

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

Будь ласка, прочитайте посилання, які я розмістив вище, перш ніж відповісти. Мені також були б цікаві відповіді, підкріплені деякими посиланнями, тому що багато сказано і переказано, але тоді не вистачає фактів.

Дякую за допомогу.


"Однак є питання вирівнювання зносу" - Ви дійсно не маєте вибору в цьому питанні. Або USB-накопичувач USB або SDcard, яку ви купуєте, справляєте задовільну роботу з вирівнюванням зносу, або це не так. Ви не можете / не повинні використовувати файлову систему, яка нівелює (наприклад, JFFS2). І ви не можете встановити керування гучністю UBI (спочатку вам потрібно буде встановити MTD, але це для необмежених Flash-пристроїв). Таким чином, ви застрягли, покладаючись на вбудований контролер.
тирса

Відповіді:


8

Не турбуйтеся про балони, головки та сектори та працюйте лише з секторами. Найпростіший спосіб вирівняти файлову систему - просто не мати таблиці розділів (тобто створити файлову систему /dev/sdXбезпосередньо). Більшість систем Linux впорається з цим штрафом, але Windows буде відросло, і ви також не зможете зробити його завантажувальним. Якщо вам потрібна таблиця розділів, опрацюйте, скільки 512 байтових секторів складають блок стирання. Блокування стирань становить близько 128-512KiB, тому якщо ви не можете дізнатися, що використовує ваш флеш-диск, йде 1024 сектори. Переконайтеся, що розділи починаються з кратного цього числа.

Ви також хочете повідомити ext2 / 3/4 про розмір блоку стирання, щоб уникнути зайвих змін блоків. Встановіть strideі stripe-widthкількість блоків файлової системи, які складають блок стирання, тому для роботи над блоком стирання 512KiB використовуйте наступне:

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

З точки зору продуктивності відсутність журналу має покращити ефективність роботи (але збільшити ймовірність пошкодження даних, якщо робота буде перервана). Однак розширення ext4 повинні покращити продуктивність, оскільки для великих файлів потрібно змінити менше метаданих. Я, мабуть, використовую ext4 з вимкненим журналом:

tune2fs -O ^has_journal

Ви можете cat /proc/mtdдізнатися розміри блоків для приєднаних флеш-пристроїв.
Томалак

Флешки без таблиці розділів повинні добре працювати в Windows, поки підтримується файлова система. У Pendrives зазвичай немає таблиці перегородки поза коробкою, і вони працюють нормально.
gronostaj

Оптимізація fs на sd-картці для Linux / Fedora на Dreamplug показує, як дозволити ext4 "знати" розмір блоків стирання та встановити його розмір блоку та значення "кроку" відповідно. Також я вважаю, що / proc / mtd тут не має значення, оскільки це доступно лише для необроблених флеш-пристроїв, як говорили тирса, а не для пристроїв флеш-пам'яті SD / stick.
tuk0z

Спробувавши це, це була жахливо погана порада. Не використовуйте ці параметри з флеш-накопичувачем USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - цей хлопець має кращі параметри, але він все ще лише незначно кращий, якщо він є, ніж те, що gparted використовує за замовчуванням.
Зденек

Це те саме посилання, яке я дав у вересні ^^ Правильно про розірваний / Gparted AFAIK.
tuk0z

4

У наші дні більшість інструментів для розбиття файлів Linux та створення файлової системи за замовчуванням значень, які вирівнюють дані за межами 4K, і навіть використовувати базовий розмір блоку, якщо диск викриває їх, щоб все було не так вже й погано, як у статті LWN:

TLDR; При використанні сучасного дистрибутива Linux (скажімо, 2013 року або пізнішої версії) з останніми версіями інструментів для створення ваших розділів і файлових систем краще (але не ідеальне) вирівнювання відбудеться автоматично. Також будьте уважні - самі найкращі значення для SD-карти можуть відрізнятися від значень для USB-накопичувача (я вважаю, що ваш Transcend JetFlash - це USB-накопичувач, а не SD-карта). Вам доведеться орієнтиром вивести справжній базовий розмір блоку стирання на дешевій флеш-версії ...


1

Крім того, у вашому fstab обов'язково використовуйте опцію кріплення "noatime", щоб уникнути зайвих записів кожного разу, коли доступ до файлу.


Все ще вірно донині, і це нагадало мені, що в цьому варіанті відсутній XD Thx
HypeWolf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.