Які розміри секторів у Mac OS X?


15

Я читав на сторінці Вікіпедії HFS Plus, що розмір сектору за замовчуванням на Mac становить 512 b. Однак я також читав, що Macs підтримують 4kb сектори. Як я можу визначити, що я маю, 512 b або 4 kb сектори? Я думаю, що 512 - це правильна відповідь, але я хотів би бути впевненим.

Відповіді:


27

У терміналі ви можете використовувати diskutil для отримання інформації про накопичувач, включаючи розмір блоку пристрою:

$ diskutil info / | grep "Block Size"
  Device Block Size:        512 Bytes

1
Спасибі Тимофі - не знав про цю команду. Виглядає як скарбниця для інформації про диски / маніпуляції під ОС X.
kalaracey

Увага: ця відповідь не відрізняє розмір блоку пристрою від розміру блоку розподілу. Вони можуть бути дуже різними, і розмір блоку розподілу може бути таким, який шукає ОП, оскільки саме це використовує файлова система. Дивіться відповідь Майка.
LarsH

12

По-перше, зауважте, що розмір блоку пристрою відрізняється від розміру блоку, який використовує файлова система. Колишнє значення, про яке повідомляє diskutil, відноситься до необмеженого розміру блоку, використовуваного обладнанням. Я не знайшов простий спосіб перевірити останнє значення за допомогою командного рядка, але ви можете просто створити файл з нульовим байтом, а потім отримати інформацію з Finder. Він буде говорити 0 байт, але 4k використовується на диску.

По-друге, за допомогою програми командного рядка можна створити файлову систему HFS + з більшими розмірами блоків, ніж 4k newfs_hfs. Найпростіший спосіб - використовувати Disk Utility для розділення диска та створення розділу з форматуванням за замовчуванням, а потім використовувати /bin/dfдля визначення блокового пристрою (лише приклад:) /dev/disk0s2. Потім демонтуйте цей розділ (використовуючи umount /dev/diskXXXабо Disk Utility) і переформатуйте як HFS + з 64k блоками:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Використовуйте підказку «Отримати інформацію вище», щоб переконатися, що невеликий файл зараз займає 64 кб на диску (це може сказати 65 к для одиниць потужності 10).

Продуктивність - це головна причина, чому ви можете це зробити, якщо більшість даних, що зберігаються, є великими файлами (такими як MP3, фото, відео, .zip файли тощо), а також це допомагає утримувати низьку фрагментацію диска. Очевидно, не турбуйтеся, якщо ви плануєте зберігати в основному невеликі файли.

Я виявив, що на великих накопичувачах (> 1 ТБ), відформатованих як HFS з розміром блоку 4k за замовчуванням, коли накопичувач наближається до продуктивності, продуктивність запису жахливо знижується. Я здогадуюсь, що це пов’язано з тим, що розділ фрагментований і потрібно полювати і клювати на безкоштовні блоки, щоб виписати останні 1% даних. Я сподіваюся, що більші розміри блоків дещо полегшать цю проблему.


Розмір блоку файлової системи задається stat -f %k ..
lhf

Також: на диску простіше, якщо розмір блоку вашої файлової системи відповідає фізичному розміру блоку накопичувача. Інакше кожне записування має насправді бути циклом читання-модифікації-запису, (кешування допомагає, звичайно.)
Едвард Фолк

Re: "Я не знайшов простий спосіб перевірити останнє значення за допомогою командного рядка" Я не знаю про старіші версії, але в macOS Sierra 10.12.6 diskutil infoінколи підкаже вам розмір блоку розподілу: Allocation Block Size: 32768 Bytesа також розмір блоку пристроїв. Я виявив, що це правда, коли в пристрої rdisk2s0зчитування карт використовували необроблений пристрій із SD-карткою. Я не знаю, як змусити його працювати на жорсткому диску.
LarsH

9

Розмір блоку пристрою OS X можна визначити, виконавши наступну команду з вікна вікна терміналу:

diskutil info / | grep "Block Size"

Яка буде виводити таку інформацію:

Device Block Size: 512 Bytes

Розмір блоку файлової системи можна визначити за допомогою statутиліти:

stat -f %k .

Який покаже вам розмір блоку операцій вводу / виводу файлів оптимальної файлової системи в байтах:

4096

4

У випадку старішої файлової системи HFS, другої спроби Apple у файловій системі для Macintosh, на диску може бути лише 65 655 блоків розподілу. Розмір блоку був функцією розміру диска в байтах, розділеному на максимальну кількість блоків розподілу, 65,535. Для невеликих дисків це було добре, але коли розмір диска почав наближатися до 1 ГБ, мінімальний розмір блоку розподілу становив 16 КБ (1073741824/65535) = 16384,25, але потрібно скоротити до 16384.

Це означає, що на 1 байт-файл на 1 Гб HFS диску потрібно 16 384 байти для зберігання на жорсткому диску, тому було витрачено занадто багато місця. Тож Apple створила HFS + обгортку, щоб зменшити витрачений простір.

Можливо, існує спосіб встановити розмір блоку вище, але чому б ви цього хотіли?

Ось швидкий скрипт bash, в якому буде перераховано весь вихідний файл diskinfo для всіх ваших підключених на даний момент дисків.

#!/bin/bash

for disk in /dev/disk*s*
do
    diskutil info $disk
    echo "**************************************************************************************"
    echo " "
done

Дякую за вашу відповідь, Марк, але я думаю, ви, можливо, неправильно зрозуміли моє запитання. Я шукаю розмір блоку на HFS Plus (поточна файлова система за замовчуванням для Macs). Але це цікаво щодо невдач HFS.
kalaracey

Справа в тому, що вона змінюється, але, здається, це загалом 512 байт.
Ɱark Ƭ

0

Схоже, розмір блоку пристрою зараз становить 4096 байт в iMacs 2017 року (iMac18,1), що створює проблеми людям, що використовують ntfsprogs.

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