Две проблемы. Первый: как разбить флешку?
Мне не нужно было этого делать, но я больше не уверен, правильно ли выровнен мой раздел, так как я был вынужден удалить и создать новую таблицу разделов после того, как 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
Пожалуйста, прочитайте ссылки, которые я разместил выше, прежде чем ответить. Я также был бы заинтересован в ответах, подкрепленных некоторыми ссылками, потому что много сказано и повторно сказано, но тогда ему не хватает фактов.
Спасибо вам за помощь.
Ответы:
Не беспокойтесь о цилиндрах, головках и секторах и работайте только с секторами. Самый простой способ выровнять файловую систему - просто не иметь таблицы разделов (т.е. создать файловую систему
/dev/sdX
напрямую). Большинство систем Linux справятся с этим нормально, но Windows взбесится, и вы также не сможете сделать его загрузочным. Если вам нужна таблица разделов, определите, сколько секторов по 512 байт составляют блок стирания. Емкость блоков стирания составляет около 128-512 КБ, поэтому, если вы не можете выяснить, что использует ваша флешка, используйте 1024 сектора. Убедитесь, что разделы начинаются с кратного этого числа.Вы также хотите сообщить ext2 / 3/4 о размере стираемого блока, чтобы избежать ненужной модификации блоков. Установите оба
stride
иstripe-width
количество блоков файловой системы, которые составляют блок стирания, поэтому для работы с блоком стирания 512 КБ используйте следующее:С точки зрения производительности отсутствие журнала должно повысить производительность (но увеличить вероятность повреждения данных в случае прерывания операции). Однако экстенты ext4 должны повысить производительность, поскольку для больших файлов требуется меньше метаданных. Я бы, вероятно, использовал ext4 с отключенным журналом:
источник
cat /proc/mtd
чтобы узнать размеры блоков стирания для подключенных флэш-устройств.В наши дни большинство инструментов Linux для создания разделов и создания файловых систем по умолчанию используют значения, выравнивающие данные на границах 4 КБ, и даже используют базовый размер блока, если диск предоставляет его, так что все не так плохо, как в статье LWN:
TLDR; При использовании современного дистрибутива Linux (скажем, 2013 или более поздней) с последними версиями инструментов для создания разделов и файловых систем лучшее (но не идеальное) выравнивание произойдет автоматически. Также будьте осторожны - самые лучшие значения для SD-карты могут отличаться от значения для USB-накопителя (я считаю, что ваша Transcend JetFlash - это USB-накопитель, а не SD-карта). Вы должны были бы провести эталонный тест, чтобы определить истинный размер блока стирания на дешевой флэш-памяти ...
источник
Кроме того, в вашем fstab обязательно используйте опцию монтирования «noatime», чтобы избежать ненужных записей при каждом доступе к файлу.
источник