Як відформатувати жорсткий диск у секторі 4k?


12

Купив жорсткий диск Seagate ST3000DM001 3TB. Її продавали всередині огородження. Я відформатований до ext4, скопіював у нього деякі дані, а потім вийняв його з корпусу та підключив безпосередньо до материнської плати. Мої дані не були видимі ОС (він бачив один невідомий розділ ~ 300GiB, а решта - як вільний простір), тому я почав читати про розширений формат та> накопичувачі 2 ТБ.

Я знову з’єднав диск з USB, скопіював усі дані та ще раз підключив до sata. Я використовував gparted для створення таблиці розділів GPT (утиліта диска ubuntu мені не дозволила б Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0), створила один великий розділ 3Tb Ext4, залишила Align toзначення за замовчуванням MiBта відформатувала.

Диск розпізнається правильно та правильно монтується. Файли можна успішно скопіювати з та на диск.

Однак:

Gparted показує диск з 512k секторами, які я знаю, що це неправда 1

gparted скріншот

під час cat /sys/block/sdb/queue/physical_block_sizeзвітів4096

Я знайшов деякі звіти, що libpartedмають проблеми з секторами, які не є 512k 2, та іншими 3, які говорять, що вирівнювання до MiB достатньо.

Розділені звіти про те, що диск вирівнюється, коли я вибираю мінімальний:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

Чи правильна моя конфігурація? Чи є у мене покарання за продуктивність, тому що диск відформатований з секторів 512k, gParted повідомляє про помилкові значення чи я зрозумів, що це все не так?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655

У мене є кілька таких накопичувачів Seagte, а також WD і Fujitsu / HGST 3TB накопичувачі, і всі вони працюють без проблем. Ви можете мати рацію щодо GParted, тому що мій Seagate, який зараз підключений через USB, показує розмір сектору 4096 в GParted. Моя версія GParted - 0.12.1, за замовчуванням - квант.
LiveWireBT

Я вважаю, що він відобразиться і 4096 тут, якщо я підключу його через USB. У контролері USB-SATA є якась магія.
qwazix

Відповідна QA: superuser.com/questions/679725/…
qwazix

Відповіді:


5

Він повідомляє про 512 байт, тому що це логічний розмір сектора для зворотної сумісності зі старими ОС (Windows). (g) розділене вирівнювання розділів до 1 МіБ, що більш ніж достатньо для належної роботи з накопичувачами, використовуючи фізичні сектори 4 к., тож все добре.


11

По-перше, більшість дисків розширеного формату мають логічний розмір сектору в 512 байт, хоча розмір фізичного сектора становить 4096 байт (4 КБ). Це робиться за допомогою жонглювання даними прошивки диска, і це може спричинити проблеми з продуктивністю, якщо розділи не будуть правильно вирівняні. Можливо, це не є причиною вашої проблеми, і ваша увага на вирівнювання розділів не вказана. ( Для того, щоб бути впевненим, вирівнювання розділів є важливим, це просто не є джерелом вашої проблеми.)

Моя думка (і вона єпросто підказка) полягає в тому, що ваша проблема є результатом перемикання між корпусом USB та прямим підключенням диска. Деякі додатки перекладають 512-байтові логічні сектори на диску на 4096-байтні логічні сектори, представлені комп'ютеру, тобто протилежне тому, що робить прошивка на диску розширеного формату. Я не впевнений, але підозрюю, що деякі корпуси роблять це лише на дисках понад 2TiB. Як схеми розділення MBR, так і GPT посилаються на дані за номерами секторів, тому зміна розміру сектора визнає недійсними дані про розділення. Таким чином, якщо ви підготуєте диск у корпусі USB, який перекладається таким чином, а потім спробуйте використовувати диск безпосередньо (або навпаки), ви побачите помилки, оскільки розділи (і навіть дані резервного копіювання GPT) не будуть де комп'ютер очікує, що це буде. Це було б так, як сказати людині із зав'язаними очима "

Вирішення цієї проблеми полягає в підготовці та використанні диска одним способом - або використовуйте корпус USB або використовуйте пряме з'єднання, а не обидва. Якщо обидва необхідні з якоїсь причини, вам потрібно буде знайти корпус, який працює без застосування цього типу перекладу.

Щоб перевірити мою гіпотезу, ви можете скористатися інструментом (наприклад parted), який повідомляє розміри логічних секторів. Наприклад:

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

Я опустив купу інформації з цього результату. Важлива деталь знаходиться в заключному рядку, показаному тут: Логічний та фізичний розміри сектору - це 512 байт. Якщо ви запустили цей тест, потім знову прикріпіть диск і запустіть його знову, ви можете порівняти результати. Якщо розмір логічного сектора змінюється залежно від того, як ви приєднаєте диск, то моя гіпотеза правильна, і це джерело вашої проблеми. Або принаймні, це одна проблема; можуть бути й інші. Зокрема, Error synchronizing after initial wipeпомилка, яку ви згадали, може вказувати на іншу проблему. OTOH, це може бути побічним ефектомpartedнамагаються прочитати резервні дані GPT з кінця диска. У будь-якому випадку, якщо ви побачите зміни розміру логічного сектора, вам слід вирішити це питання, перш ніж займатися чим-небудь іншим. Якщо ви хочете перерозподілити диск, але у вас є проблеми через Error synchronizingпомилку, спробуйте скористатися gdiskабо cgdiskgdiskпакеті), а не partedGParted; gdiskсім'я більш стійка до помилок , ніж в partedродині.


Я вважаю, що проблема полягає в перемиканні між usb та внутрішнім. Дійсно, це було моєю початковою думкою, і саме тому я створив таблицю розділів після того, як повернув диск назад на ПК та з’єднав його з sata. (Я вийняв це в першу чергу просто для того, щоб витягнути свої дані). Я не хочу видаляти його знову, щоб перевірити логічний сектор, про який повідомляється через USB, але всі факти говорять про це.
qwazix

Я не збираюся тримати інтерфейси комутації, диск працює так, як зараз, підготовлений під з'єднання SATA. Мене просто хвилює згадане вами покарання за виконання, і я хочу зрозуміти, що насправді відбувається. parted /dev/sdb printповертається, 512/4096тому здається, що gParted повідомляє розмір логічного сектора, який пояснює, чому @LiveWireBT бачить 4096 для того ж диска (підключений через USB), а також підтверджує вашу думку, як зазначено вище.
qwazix

Була така ж проблема із зовнішнім накопичувачем Verbatim Store'n'Go, розмір логічного сектора - 512, а фізичний - 4096.
робочий

4

Були внесені зміни як до ядра Linux, так і до утиліт для підтримки накопичувачів розширеного формату. Ці зміни гарантують, що всі розділи на накопичувачах розширеного формату належним чином вирівняні за межами сектору 4K. Підтримка ядра для накопичувачів розширеного формату доступна у версіях ядра 2.6.31 і вище. Підтримка портування та форматування накопичувачів розширеного формату доступна в таких утилітах Linux:

Fdisk: GNU Fdisk - це утиліта командного рядка, яка розділяє жорсткі диски. Версії 1.2.3 і вище підтримують накопичувачі розширеного формату.

Розлучено: GNU Parted - це графічна утиліта для розділення жорстких дисків. Версії 2.1 і вище підтримують накопичувачі розширеного формату.

Народні диски 4K (4Kn) мають розмір логічного сектору 4 Кб. Сучасні операційні системи можуть зберігати дані на цих дисках, але вони, як правило, не можуть завантажуватися з цих дисків. Ці диски зазвичай є зовнішніми накопичувачами з підключенням USB.

Щоб створити розділ, який використовується як медіа-накопичувач, просто натисніть Ctrl+ Alt+ Tна клавіатурі, щоб відкрити Terminal. Коли він відкриється, запустіть команди (и) нижче:

sudo mkfs.ext4 -m 0 /dev/sdb1

Більшість дисків 4k мають розмір фізичного сектора 4096 байт, щоб 3TB міг вміщуватися на пластинах, але вони все ще мають 512B розмір логічного сектора для сумісності з ОС, які очікують, що один сектор буде 512B. Ось чому, коли ви використовуєте команду друку в розбиті для друку деталей, йдеться про розмір сектора логічний / фізичний 512B / 4096B. Це нормально.

Це "перетворення" робиться інтелектом на самому диску, і це нормально. Це як має працювати.

Якщо ви не бачите цілих 3 ТБ, спершу перевірте в BIOS, чи не обмежує він розмір диска. Можливо, вам потрібно оновлення біографії для підтримки диска.

Також використовуючи проділ для створення розділу, починаючи з 0, що є помилкою. Потрібно запустити перший розділ у секторі 2048, що еквівалентно 1 Мбіт, щоб розділи на диску вирівняли для оптимальної продуктивності.

Отже, змініть пристрій на MiB, надрукуйте деталі диска, які також будуть друкувати розмір диска в MiB, і створіть розділ (якщо ви хочете лише один розділ), починаючи з 1MiB і закінчуючи останнім MiB (або одним до останнього) .

Наприклад, 3TB диск повинен насправді мати щось на зразок 2 861 022 МБ. Таким чином, створити єдиний розділ, що охоплює весь диск на дисковому пристрої під назвою / dev / sdX, було б як (замініть X правильною літерою):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

Якщо розмір диска становить декілька MiB більше або менше 2861022, відрегулюйте місце закінчення.

Це воно. Після цього створіть потрібну файлову систему на розділі.

Джерела та додаткове читання

4K-секторні накопичувачі та Linux

Перевірте помилку та встановіть 4k диски в Linux

Форуми Ubuntu


Дякую за відповідь, але це насправді не відповідає на моє запитання. Я розумію, що ядро ​​розпізнає розмір сектора накопичувача, і gparted повинен визнати це теж, але воно повідомляє інакше, і мені цікаво, чи є пояснення цьому, якщо це помилка, або якщо я щось зробив не так .
qwazix

0

Поки ви вирівнюєте свої розділи на кратну 4 КБ, ви все добре. Інакше не потрібно робити нічого особливого для накопичувачів з фізичними секторами 4 КБ.

Старе програмне забезпечення для розбиття розділів на декілька секторів розміром 63x512B, що призведе до поганої продуктивності, якщо накопичувач має фізичні сектори 4 КБ, тому що це 31 з половиною кілобайт, а не краткий 4 КБ.

Практично жодне програмне забезпечення для розділення, яке зараз доступне в Ubuntu, не буде робити цього більше (якщо ви спеціально не вимагаєте його якось). Більшість за замовчуванням буде вирівнюватися до кратного 1MiB (сектори 2048x512B, що також є секторами 256x4KB).

Що буде, якби ви не вирівняли його?

Якщо ви не вирівняєте розділи на кратні 4 КБ, найгірше, що станеться, - це втрата продуктивності (досить значна для невеликих файлів). Приводи з секторами 4 КБ, як правило, імітують сектори 512B для сумісності з існуючими системами. Тому вони прекрасно функціонують, якщо ви просто ставитесь до них як до сектору 512B. Але коли ви запишете в одну область 512B, вона перепише цілий сектор 4КБ.

Отже, з міркувань продуктивності важливо переконатися, що кластери 4KB, які ви використовуєте у вашій файловій системі, узгоджуються з секторами 4KB на диску, щоб для запису одного кластера не виникло необхідності записувати два 4KB сектори на диску.

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