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

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

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

3 ответа3

8

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

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

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

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

tune2fs -O ^has_journal
3

В наши дни большинство инструментов Linux для создания разделов и создания файловых систем по умолчанию используют значения, выравнивающие данные на границах 4 КБ, и даже используют базовый размер блока, если диск его обнажает, так что все не так плохо, как в статье LWN:

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .