Каковы размеры секторов в Mac OS X?


15

Я прочитал на странице Википедии HFS Plus, что размер сектора по умолчанию на Mac составляет 512 б. Тем не менее, я также читал, что Mac поддерживают секторы 4 КБ. Как я могу определить, какие у меня есть сектора 512 б или 4 кб? Я думаю, что 512 правильный ответ, но я хотел бы быть уверен.

Ответы:


27

В терминале вы можете использовать diskutil для получения информации о диске, включая размер блока устройства:

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

1
Спасибо Тимоти - не знал об этой команде. Выглядит как клад для информации / манипуляций с дисками под OS X.
kalaracey

Внимание: этот ответ не различает размер блока устройства и размер блока выделения. Они могут сильно отличаться, и размер блока выделения вполне может быть тем, что ищет OP, поскольку именно его использует файловая система. Смотрите ответ Майка.
LarsH

12

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

Во-вторых, вы можете создать файловую систему HFS + с размерами блоков более 4 Кб с помощью программы командной строки newfs_hfs. Самый простой способ - использовать Дисковую утилиту для разбиения диска и создания раздела с форматированием по умолчанию, а затем использовать /bin/dfдля определения блочного устройства (только пример:) /dev/disk0s2. Затем размонтируйте этот раздел (используя umount /dev/diskXXXили Дисковую утилиту) и переформатируйте в HFS + с блоками по 64 КБ:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Используйте приведенный выше совет Get Info, чтобы убедиться, что небольшой файл теперь занимает 64 КБ на диске (может быть 65 КБ для модулей с степенью 10).

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

Я обнаружил, что на больших дисках (> 1 ТБ), отформатированных как HFS с размером блока 4 КБ по умолчанию, когда диск приближается к емкости, производительность записи ужасно снижается. Я предполагаю, что это происходит из-за фрагментации раздела и необходимости искать и клевать свободные блоки, чтобы выписать последние 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 535 блоков выделения. Размер блока был функцией размера диска в байтах, разделенного на максимальное количество блоков выделения, 65 535. Для небольших дисков это было хорошо, но когда размеры дисков начали приближаться к 1 ГБ, минимальный размер блока выделения составил 16 КБ (1073741824/65535) = 16384,25, но вам нужно сократить до 16384.

Это означает, что для 1-байтового файла на 1-гигабайтном HFS-диске требовалось 16384 байт для хранения на жестком диске, поэтому было слишком много потерянного места. Поэтому Apple создала оболочку HFS +, чтобы уменьшить потерянное пространство.

Может быть способ увеличить размер блока, но зачем вам это?

Вот быстрый скрипт bash, в котором перечислены все выходные данные diskinfo для всех подключенных в данный момент дисков.

#!/bin/bash

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

Спасибо за ваш ответ, Марк, но я думаю, что вы, возможно, неправильно поняли мой вопрос. Я ищу размер блока в HFS Plus (текущая файловая система по умолчанию для Mac). Это интересно о недостатках HFS, хотя.
kalaracey

Дело в том, что оно варьируется, но обычно составляет 512 байт.
Ɱark Ƭ

0

Похоже, что размер блока устройства теперь составляет 4096 байт в iMac 2017 (iMac18,1), что создает проблемы для людей, использующих ntfsprogs.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.