Как правильно разметить флешку и какую файловую систему выбрать с учетом выравнивания износа?

13

Две проблемы. Первый: как разбить флешку?

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

Наивным ответом было бы сказать «просто используйте значение по умолчанию, и все будет хорошо». Однако, если вы прочитаете следующие ссылки, вы поймете, что все не так просто: https://lwn.net/Articles/428584/ и http://linux-howto-guide.blogspot.com/2009/10/increase- USB-флэш-диск-записи 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

Пожалуйста, прочитайте ссылки, которые я разместил выше, прежде чем ответить. Я также был бы заинтересован в ответах, подкрепленных некоторыми ссылками, потому что много сказано и повторно сказано, но тогда ему не хватает фактов.

Спасибо вам за помощь.

random1
источник
«Однако существует проблема выравнивания износа» - у вас действительно нет выбора в этом вопросе. Либо USB-накопитель, либо SD-карта, которую вы покупаете, удовлетворительно справляются с выравниванием износа или нет. Вы не можете / не должны использовать файловую систему, которая выравнивает износ (например, JFFS2). И вы не можете установить управление томами UBI (сначала нужно установить MTD, но это для необработанных Flash-устройств). Таким образом, вы застряли с опорой на встроенный контроллер.
опилки

Ответы:

8

Не беспокойтесь о цилиндрах, головках и секторах и работайте только с секторами. Самый простой способ выровнять файловую систему - просто не иметь таблицы разделов (т.е. создать файловую систему /dev/sdXнапрямую). Большинство систем Linux справятся с этим нормально, но Windows взбесится, и вы также не сможете сделать его загрузочным. Если вам нужна таблица разделов, определите, сколько секторов по 512 байт составляют блок стирания. Емкость блоков стирания составляет около 128-512 КБ, поэтому, если вы не можете выяснить, что использует ваша флешка, используйте 1024 сектора. Убедитесь, что разделы начинаются с кратного этого числа.

Вы также хотите сообщить ext2 / 3/4 о размере стираемого блока, чтобы избежать ненужной модификации блоков. Установите оба strideи stripe-widthколичество блоков файловой системы, которые составляют блок стирания, поэтому для работы с блоком стирания 512 КБ используйте следующее:

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

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

tune2fs -O ^has_journal
mgorven
источник
Вы можете использовать, cat /proc/mtdчтобы узнать размеры блоков стирания для подключенных флэш-устройств.
Томалак
Флэш-накопители без таблицы разделов должны нормально работать в Windows, если поддерживается файловая система. У Pendrives обычно нет таблицы разделов из коробки, и они работают нормально.
Гроностай
Оптимизация 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 для создания разделов и создания файловых систем по умолчанию используют значения, выравнивающие данные на границах 4 КБ, и даже используют базовый размер блока, если диск предоставляет его, так что все не так плохо, как в статье LWN:

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

скоро
источник
1

Кроме того, в вашем fstab обязательно используйте опцию монтирования «noatime», чтобы избежать ненужных записей при каждом доступе к файлу.

docwebhead
источник
Все еще верно по сей день, и это напомнило мне, что эта опция отсутствовала XD Thx
HypeWolf