Как изменить размер кластера ext4

Для хранения больших файлов создаю ext4 с размером блока 65536. ФС создается,но примонтировать так и не смог. Подскажите пжл., какой размер блока максимальный для сабжевой ФС? ОС CentOS 6.2 с последними обновлениями. Ядро 2.6.32.

man mkfs.ext4 говорит следующее:

       -b block-size
              Specify the size of blocks in bytes.  Valid block-size values are 1024, 2048 and 4096 bytes per  block.   If  omitted,
              block-size  is  heuristically  determined  by the filesystem size and the expected usage of the filesystem (see the -T
              option).  If block-size is preceded by a negative sign ('-'), then mke2fs will use heuristics to determine the  appro‐
              priate block size, with the constraint that the block size will be at least block-size bytes.  This is useful for cer‐
              tain hardware devices which require that the blocksize be a multiple of 2k.

RH_

(19.04.12 08:32:56 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от RH_ 19.04.12 08:32:56 MSK

> man mkfs.ext4 говорит следующее:

но grep говорит следующее:

$ grep MAX_BLOCK_SIZE /usr/src/linux/fs/ext4/ext4.h
#define EXT4_MAX_BLOCK_SIZE             65536
$ _

arsi ★★★★★

(19.04.12 08:36:06 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от arsi 19.04.12 08:36:06 MSK

Может проблема в том, что тестовый раздел был 10GB, но:

# mkfs.ext4 -b 65536 /dev/vg/test 
Warning: blocksize 65536 not usable on most systems.
mke2fs 1.42.1 (17-Feb-2012)
mkfs.ext4: 65536-byte blocks too big for system (max 4096)
Proceed anyway? (y,n) y
Warning: 65536-byte blocks too big for system (max 4096), forced to continue
...

Дальше, при попытке смонтировать это:

# mount /dev/vg/test /tmp
mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg-test,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

gmesg:
[175015.496515] EXT4-fs (dm-4): bad block size 65536

Видимо Vaild != Max

RH_

(19.04.12 08:49:27 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от RH_ 19.04.12 08:49:27 MSK

может зависит от размера раздела. Всё-таки 64-килобайтные блоки для 10G раздела — это как-то дохрена…

Pinkbyte ★★★★★

(19.04.12 10:39:23 MSK)

  • Ссылка

Ответ на:

комментарий
от RH_ 19.04.12 08:49:27 MSK

не, проблема в том, что х86.

попробуй на powerpc с CONFIG_PPC_64K_PAGES (ограничение на размер блока в линуксе: 512 <= BLOCK_SIZE <= PAGE_SIZE).

arsi ★★★★★

(19.04.12 10:52:01 MSK)

  • Показать ответ
  • Ссылка

ВО первых последнее ядро, а во вторых нельзя указывать при монтировании размер блока?

anonymous

(19.04.12 10:56:27 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от arsi 19.04.12 10:52:01 MSK

попробуй на powerpc

мб на amd64 тоже взлетит?

anonymous

(19.04.12 11:42:48 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 19.04.12 11:42:48 MSK

> мб на amd64 тоже взлетит?

нет, конечно. линукс на всех х86 умеет только 4к страницы (базовый размер страницы).

$ grep -rP '#defines+PAGE_SHIFTs+(?16' /usr/src/linux/arch
/usr/src/linux/arch/powerpc/include/asm/page.h:#define PAGE_SHIFT               16
/usr/src/linux/arch/hexagon/include/asm/page.h:#define PAGE_SHIFT 16
/usr/src/linux/arch/sparc/include/asm/page_64.h:#define PAGE_SHIFT   16
/usr/src/linux/arch/mips/include/asm/page.h:#define PAGE_SHIFT  16
$ _

// размер страницы PAGE_SIZE = 1 << PAGE_SHIFT.

arsi ★★★★★

(19.04.12 11:53:56 MSK)

  • Ссылка

Ответ на:

комментарий
от splinter 19.04.12 10:48:09 MSK

Igorrr

Подскажите пжл., какой размер блока максимальный для сабжевой ФС?

Очевидно, 64К — это задел на будущее, и на сегодняшний день не реализован.

Igorrr

CentOS 6.2 с последними обновлениями

facepalm
в RH всем пофиг — у них уже реализован ;)
правда не работает, как обычно…

  • Ссылка

Ответ на:

комментарий
от anonymous 19.04.12 10:56:27 MSK

ВО первых последнее ядро

что «последнее ядро»? Не понял фразы…

нельзя указывать при монтировании размер блока?

Вопрос в том, почему не цепляется по умолчанию. Даже если примонтировать через каике-то костыли, мне нужна уверенность, что ФС не развалится/посыпется после обновления системы или какой-то мелочи которая выбьет этот костыль…

Igorrr

★★★★

(19.04.12 12:45:36 MSK)

  • Ссылка

Ответ на:

комментарий
от Igorrr 19.04.12 12:40:17 MSK

> xfs, как выяснилось, не умеет делать resize раздела.

не resize, а уменьшение (как и jfs, кстати). увеличиваться она умеет (xfs_growfs).

arsi ★★★★★

(19.04.12 12:50:49 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Igorrr 19.04.12 12:40:17 MSK

вроде бы умеет но только в сторону увеличения, ЕМНИП.

splinter ★★★★★

(19.04.12 13:14:59 MSK)

  • Ссылка

Ответ на:

комментарий
от arsi 19.04.12 12:50:49 MSK

Как раз уменьшение и может понадобится (а может и не понадобится)…

Igorrr

★★★★

(19.04.12 17:28:50 MSK)

  • Ссылка

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

На данный момент Ext4 — это самая популярная файловая система для операционных систем семейства Linux, она используется как на серверах, так и на домашних компьютерах, и там и там часто возникает необходимость изменить размер раздела.

В сегодняшней статье мы рассмотрим как расширить раздел Ext4 в графическом интерфейсе или с помощью терминала.

Шаг 1. Увеличение раздела

Если вы хотите изменить размер корневого раздела файловой системы, то вам обязательно надо будет загрузится с LiveCD иначе вы не сможете редактировать примонтированный раздел. Если это не системный раздел, то его можно отмонтировать и затем изменять. Для увеличения раздела будем использовать parted. Сначала запустите утилиту:

sudo parted /dev/sda

Здесь /dev/sda — это ваш диск, один из разделов которого вы хотите расширить. Сначала выведите текущую таблицу разделов, для этого выполните:

(parted) print

Как видите, здесь есть только один раздел и он занимает 16 гигабайт, а всего на диске доступно 21,7 гигабайт. Чтобы расширить Ext4 и занять всё это пространство используйте команду resizepart:

(parted) resizepart 1 21,7GB

Первый параметр, это номер раздела, который вы узнали из предыдущей команды, а второй, размер раздела, доступный размер тоже выводится в предыдущей команде. Теперь утилиту можно закрыть:

(parted) q

Шаг 2. Увеличение файловой системы

Осталось увеличить самую файловую систему до конца раздела. Для этого воспользуемся утилитой resize2fs. Она может работать даже когда файловая система смонтирована.

sudo resize2fs /dev/sda1

Утилита по умолчанию увеличивает файловую систему на всё доступное пространство раздела.

Шаг 3. Проверка на ошибки

После этого не помешает проверить всё на ошибки с помощью fsck:

sudo e2fsck -f /dev/sda1

Шаг 4. Монтирование

Затем можно монтировать полученную файловую систему и проверять её размер, как видите, теперь она занимает 20 гигабайт:

df -h | grep /dev/sda1

Как уменьшить размер Ext4

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

Шаг 1. Проверка файловой системы

Перед тем, как уменьшить размер Ext4 надо проверить её на ошибки. Если файловая система смонтирована, размонтируйте её:

sudo umount /dev/sda1

Для этого выполните:

sudo e2fsck -f /dev/sda1

Шаг 2. Уменьшение файловой системы

Уменьшение размера файловой системы тоже выполняется с помощью resize2fs. Но теперь утилите надо передать в параметрах новый размер файловой системы. Например, 16 гигабайт:

resize2fs /dev/sda1 16G

Размер можно указывать в килобайтах (K), мегабайтах (M) или гигабайтах (G). Теперь вы знаете как изменить размер Ext4. В выводе утилита вы увидите сколько теперь блоков занимает файловая система. Это число надо умножить на 4096 чтобы получить размер файловой системы в байтах. Цифра четыре взята потому что размер одного блока в Ext4 равняется четырём килобайтам. Например, в данном случае это будет 17179869184 байт или 16 гигабайт:

Теперь надо уменьшить размер раздела с помощью parted. Но значение желательно брать чуть больше, для безопасности, потому, что если вы зацепите пространство, где расположена файловая система, то работать с ней вы больше не сможете.

Шаг 3. Уменьшение раздела

Запустите parted и используйте ту же команду resizepart чтобы уменьшить размер раздела:

sudo parted /dev/sda

Затем:

(parted) resizepart 1 16,1GB

Чтобы закрыть программу выполните:

(parted) q

Шаг 4. Монтирование

После этого файловую систему можно монтирововать и проверять её размер:

sudo mount /dev/sda1 /mnt

df -h | grep /dev/sda1

Выводы

В этой статье мы рассмотрели как уменьшить раздел Ext4, а также как его увеличить через терминал. Если вы работаете в графическом интерфейсе, то всё выполняется гораздо проще. Для этого можно воспользоваться утилитой Gparted. Она автоматически меняет как размер раздела, так и файловой системы. К тому же программа может не только менять положение конца раздела, но и начала, иногда это может быть полезно. А как вы меняете размер файловой системы? Напишите в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Как правильно задавать вопросы

Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот

no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

13 сен 2019, 09:11

Добрый день! Понимаю, что вопрос немного оффтопичный, но прошу ногами не бить.
Есть WIFi-роутер (Xiaomi Mi 3G), на нем стоит прошивка Padavan на основе Linux. К роутеру подключен USB-диск, отформатированный в Ext4. Перенес туда некоторые архивные директории и столкнулся с тем, что одни и те же файлы занимают на Ext4 в полтора раза больше места, чем на NTFS (см. картинку). Нормально ли это, и что делать?


Аватара пользователя

FreeStyler

Сообщения: 728
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 680 раз
Поблагодарили: 90 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#2

13 сен 2019, 11:23

Размер кластера? :hm:

deadmau5 — Harmonic Mix

■ Mint 19.3 KDE (initial Xfce) @ Intel NUC Skull Canyon, i7-6770HQ, 16Gb RAM, 512Gb SSD M2, Iris Graphics 580
■ KDE Neon UE (20.04) @ Lenovo IdeaPad 3-15 (81W40079RK) 1920, Ryzen 5 4500U, 18 Гб DDR-4, 1 Тб HDD,128 Гб SSD


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#3

13 сен 2019, 11:40

Размер кластера — это первое, о чем подумал. Но там в папках на 99% фотографии: частично — сырой jpg с камеры (3-5 Мб/шт), частично — обработанный в ФШ (200-500 кб/шт). Чтобы дать в таких условиях увеличение размера в полтора раза, это каким же должен быть кластер? :-D


Аватара пользователя

virhgner

Сообщения: 43
Зарегистрирован: 02 ноя 2017, 00:02
Решено: 2
Благодарил (а): 28 раз
Поблагодарили: 9 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#4

13 сен 2019, 12:57

У меня картинка, увы, не загружается, но первое, что приходит на ум, это свойство EXTx каждому файлу выделять дополнительный «хвост» свободного места, так сказать «на вырост».


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#5

13 сен 2019, 13:58

virhgner писал(а): ↑

13 сен 2019, 12:57


У меня картинка, увы, не загружается…

Можно кликнуть на крутящиеся стрелки, тогда картинка откроется.
Хвосты к файлам? Никогда не слышал. Хотя я не настолько продвинутый линуксоид.


Аватара пользователя

Chocobo

Сообщения: 9954
Зарегистрирован: 27 авг 2016, 22:57
Решено: 214
Откуда: НН
Благодарил (а): 795 раз
Поблагодарили: 2980 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#7

13 сен 2019, 15:12

Zondek,
а в обратную сторону что скажет?
если смотреть на обе директории из под linux с du

Изображение

   

Изображение


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#8

13 сен 2019, 15:38

Chocobo писал(а): ↑

13 сен 2019, 15:12


а в обратную сторону что скажет?
если смотреть на обе директории из под linux

Заглянуть в папку Винды из роутера не могу (а кроме Винды у меня сейчас других ОС нету). Могу посмотреть на директорию в роутере с точки зрения самого роутера (через SSH). Но пока не понимаю, какой для этого адрес нужно скормить команде du. Попробовал десяток вариантов, на все она ругается, что нет такой директории. Повторюсь, я не настолько хорошо разбираюсь в linux. :blush:


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#9

13 сен 2019, 15:57

поищи свою директорию с ls , locate или find .


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#10

13 сен 2019, 16:25

ls, как понимаю, нужно указать конкретное имя родительской папки. А это-то я как раз и ищу :)
locate, похоже, отсутствует в этой сборке.
find находит только две скрытые папки:
==
/home/root # find ./
./
./.ash_history
./.ssh
==
А внутри этих скрытых папок уже ничего не находит:
==
/home/root # find ./.ssh
./.ssh
/home/root # find ./.ash_history
./.ash_history
==
И у меня есть ощущение, что я зря теряю время… :/


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#11

13 сен 2019, 16:33

ls без параметро , просто посмотреть что есть , ходить по директориям — cd


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#12

13 сен 2019, 16:53

Успехи мои невелики…
==
/home/root # ls -a ./
. .. .ash_history .ssh
/home/root # cd ./.ash_history
-sh: cd: can’t cd to ./.ash_history: Not a directory
/home/root # cd ./.ssh
/home/root/.ssh # ls
/home/root/.ssh # ls ./
/home/root/.ssh # find
.
/home/root/.ssh # find ./.ssh
find: ./.ssh: No such file or directory
==


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#13

13 сен 2019, 17:04

А просто cd / а потом просто ls ?


Аватара пользователя

Chocobo

Сообщения: 9954
Зарегистрирован: 27 авг 2016, 22:57
Решено: 214
Откуда: НН
Благодарил (а): 795 раз
Поблагодарили: 2980 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#14

13 сен 2019, 17:26

Если это внешний диск, смотри в df и mount чтоб выяснить где он примонтирован

Изображение

   

Изображение


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#15

13 сен 2019, 17:47

Зри в корень (Козьма Прутков). В смысле начинай искать от корня)))


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#16

13 сен 2019, 18:01

4pda.ru/forum/index.php?showtopic=837667&st=0


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#17

13 сен 2019, 18:36

etamax писал(а): ↑

13 сен 2019, 17:04


А просто cd / а потом просто ls ?

Гениально! :) Что-то получилось. Нашел родительскую папку (по отношению к нужной). Дальше не пускает злой Permission denied.

etamax писал(а): ↑

13 сен 2019, 18:01


4pda.ru/forum/index.php?showtopic=837667&st=0

там тоже этот вопрос задал. но там никто не знает, почему «все так произошло». Объяснили только, что виноват размер кластера. Но мне все равно непонятно. К примеру, есть папка (вложенная) с тремя десятками файлов на общую «сумму» 2,7 Мб, а места она занимает аж 36 Мб. Не верится в размер кластера как причину.


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#18

13 сен 2019, 18:38

Chocobo писал(а): ↑

13 сен 2019, 17:26


Если это внешний диск, смотри в df и mount чтоб выяснить где он примонтирован

Эт я и так знал — в /media :) Вопрос был как туда добраться.


Аватара пользователя

symon2014

Сообщения: 5136
Зарегистрирован: 16 дек 2017, 21:59
Решено: 29
Откуда: Феодосия
Благодарил (а): 31 раз
Поблагодарили: 646 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#19

13 сен 2019, 18:44

А у этого ксяоми рута чтоли нет?


no avatar

Zondek

Сообщения: 16
Зарегистрирован: 20 янв 2018, 16:16
Поблагодарили: 1 раз
Контактная информация:

Архив на Ext4 занимает в полтора раза больше места, чем на NTFS

#20

13 сен 2019, 19:10

etamax писал(а): ↑

13 сен 2019, 18:44


А у этого ксяоми рута чтоли нет?

есть рут. из под него все и работает, насколько я понял


All storage devices have a minimum storage unit that they can use. This smallest usable unit is generally referred to as a sector, as this was the smallest subdivision of the rotating parts of traditional storage devices (solid state drives use memory cells, and their smallest unit is a page). See [1]

Different storage devices use different sector sizes. Since 2011, modern hard disk drives normally use 4 KiB sectors, instead of the conventional 512 bytes. Solid state drives can sometimes support multiple formats.

The different «layers», ie. device / stacked block devices / file systems should use the same sector sizes. If they do not use the same sector sizes, the firmware will have to do the mapping between file system sectors and physical drive sectors. While this is usually transparently done by the translation layer, it is an overhead that can be avoided, and doing so will achieve increased performance.

Hard disk drives – Advanced Format

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Some HDDs with 4 KiB physical sector size support changing their logical sector size. E.g. Seagate FastFormat. (Discuss in Talk:Advanced Format)

The Advanced Format is a generic term pertaining to any disk sector format used to store data on magnetic disks in hard disk drives that uses 4 kibibyte sectors instead of the traditional 512 byte sectors. The main idea behind using 4096-byte sectors is to increase the bit density on each track by reducing the number of gaps which hold Sync/DAM and error correction code (ECC) information between data sectors. The old format gave a format efficiency of 88.7%, whereas Advanced Format results in a format efficiency of 97.3%.

There are two types of Advanced Format drives:

  • Advanced Format drives, marked with an orange «AF» logo: internally, they use 4k sectors, but provide an emulation layer for compatibility with operating systems which lack support for them.
  • Advanced Format 4k native drives, marked with a blue «4Kn» logo: they require support from the operating system (Windows 8+, or Linux 2.6.31+). Because they do not need a translation layer, they are cheaper, however they might be incompatible with old tools.

Check supported sector sizes

The physical and logical sector size of hard disk /dev/sdX can be determined by reading the following sysfs entries:

$ cat /sys/class/block/sdX/queue/physical_block_size
$ cat /sys/class/block/sdX/queue/logical_block_size

Drives with a translation layer (see above) will usually report a logical block size of 512 (for backwards compatibility) and a physical block size of 4096 (indicating they are Advanced Format drives).

Tools which will report the sector of a drive (provided the drive will report it correctly) includes:

  • fdisk:
    # LC_ALL=C fdisk -l /dev/sdX | grep 'Sector size'
  • smartmontools:
    # smartctl -a /dev/sdX | grep 'Sector Size'
  • hdparm:
    # hdparm -I /dev/sdX | grep 'Sector size:'

Note that both works even for USB-attached discs (if the USB bridge supports SAT aka SCSI/ATA Translation, ANSI INCITS 431-2007).

Solid state drives

Most solid state drives (SSDs) report their sector size as 512 bytes, even though they use larger sectors — typically 4 KiB, 8 KiB, or sometimes larger. As a result, file systems cannot automatically optimize for the native sector size. To avoid sub-optimal performance, one can either:

  • Manually specify the sector size when creating a file system,
  • Change the native sector size reported by the device.

Check supported sector sizes of NVMe drives

Use smartmontools to check supported sector sizes:

# smartctl -a device
...
Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         2
 1 -    4096       0         1
...

Setting native sector size

As an alternative to manually overriding the auto-detected sector size, some SSDs can have their sector size changed during formatting, so that they report a number closer to their true sector size.

NVMe

To see whether a given NVMe device supports this, use the Identify Namespace command.

# nvme id-ns -H /dev/nvme0n1 | grep "Relative Performance"
LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good (in use)
LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better
  • Metadata Size is (probably) the number of extra metadata bytes per sector, and this is not well supported under Linux so best to select a format with a value of 0 here.
  • Relative Performance indicates which format will provide the best performance.

To change the sector size, use nvme format and specify the preferred value with the --lbaf parameter. If nvme format fails, try putting the machine to sleep (e.g., with systemctl suspend) and then try running nvme format again after waking it. If nvme format still fails, fiddling with your BIOS settings might help.

SATA

For SATA devices, manufacturer specific programs must be used. Not all SATA devices support having the sector size changed.

Intel

For Intel use the Intel Memory and Storage (MAS) Tool (intel-mas-cli-toolAUR) with the -set PhysicalSectorSize=4096 option.

Seagate

For Seagate use seagate-seachestAUR.

Scan all drives to find the correct one, and print info from the one you found:

# SeaChest_Basics --scan
# SeaChest_Basics -d /dev/sgX -i

Should print out information about the drive. Make sure to check the serial number.

Check the logical block sizes supported by the drive:

# SeaChest_Format -d /dev/sgX --showSupportedFormats

If 4096 is listed, you can change the logical sector size to it as follows:

# SeaChest_Format -d /dev/sgX --setSectorSize=4096 --confirm this-will-erase-data

This will take a couple of minutes, after which your drive now uses a 4K native sector size.

Partition alignment

Aligning partitions correctly avoids excessive read-modify-write cycles. A typical practice for personal computers is to have each partition’s start and size aligned to 1 MiB (1 048 576 bytes) marks. This covers all common page and block size scenarios, as it is divisible by all commonly used sizes—1 MiB, 512 KiB, 128 KiB, 4 KiB, and 512 B.

Warning: Misaligned partitions will prevent being able to use 4096 byte sectors with dm-crypt/LUKS. See [2].

  • fdisk, cfdisk and sfdisk handle alignment automatically.
  • gdisk and cgdisk handle alignment automatically.
    • sgdisk by default only aligns the start of partitions. Use the -I/--align-end option to additionally enable partition size/end alignment.
  • Parted only aligns the start of the partition, but not the size/end. When creating partitions, make sure to specify the partition end in mebibytes or a larger IEC binary unit.

dm-crypt

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

As of Cryptsetup 2.4.0, luksFormat automatically detects the optimal encryption sector size for LUKS2 format [3].

However, for this to work, the device needs to report the correct default sector size, see #Setting native sector size.

After using cryptsetup luksFormat, you can check the sector size used by the LUKS2 volume with

# cryptsetup luksDump device | grep sector

If the default sector size is incorrect, you can force create a LUKS2 container with a 4K sector size and otherwise default options with:

# cryptsetup luksFormat --sector-size=4096 device

The command will abort on an error if the requested size does not match your device:

# cryptsetup luksFormat --sector-size 4096 device
(...)
Verify passphrase: 
Device size is not aligned to requested sector size.

Note: See cryptsetup issue 585 for why the command may fail while the underlying drive does use 4K physical sectors.

If you encrypted your device with the wrong sector size, the device can be re-encrypted by running:

Warning: The contained file system must have a block size of 4096 bytes or a multiple of it, otherwise it will break.

# cryptsetup reencrypt --sector-size=4096 device

File systems

mkfs.btrfs(8), mkfs.jfs(8), mkfs.nilfs2(8), mkfs.reiserfs(8) and mkswap(8) default to a 4096 byte sector size.

mkfs.ext4(8) defaults to 1024 byte sectors for file systems smaller than 512 MiB and 4096 byte sectors for 512 MiB and larger.

mkfs.xfs(8) defaults to 512 byte sectors, but will use 4096 for 512e and 4Kn disks.

mkfs.f2fs(8), mkfs.fat(8), mkfs.ntfs(8) and mkfs.udf(8) use the backing device’s logical sector size. I.e. they will use 512 byte sectors for 512e disks and 4096 byte sectors for 4Kn disks.

If the storage device does not report the correct sector size, you can explicitly format the partitions according to the physical sector size.

In particular shingled magnetic recording (SMR) drives that are firmware-managed are severely and negatively impacted if using a logical sector size of 512 bytes if their physical sector size is of 4096 bytes. Those drives have different performance writing zones and remapping reallocation occurs while being idle, but during heavy active writes (e.g., RAID resilvering, backups, writing many small files, rsync, etc.), a different file system sector size could drop write speed to single digit megabytes/second, as the higher performance write areas get depleted, and the sector translation layer gets overworked on the shingled areas.

Here are some examples to set the 4096-byte sector size explicitly:

  • ext4:
    # mkfs.ext4 -b 4096 /dev/device
  • XFS:
    # mkfs.xfs -s size=4096 /dev/device
  • FAT:
    # mkfs.fat -S 4096 /dev/device
  • NTFS-3G:
    # mkfs.ntfs -Q -s 4096 /dev/device
  • UDF:
    # mkfs.udf -b 4096 /dev/device

See also

  • Western Digital’s Advanced Format: The 4K Sector Transition Begins
  • White paper entitled «Advanced Format Technology.»
  • Failure to align one’s HDD results in poor read/write performance. See [4] for specific examples.

Обновлено 22.03.2022

Ошибка дискаДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами устранили проблему не позволяющую расширить том, там было не активно поле «Расширить Том». Сегодня я опять столкнулся с проблемой расширения локального диска, при попытке это сделать я получал ошибку «The volume cannot be extended because the number of clusters will exceed the maximum number of clusters supported by the file system«. Давайте я покажу как это исправить и в чем собственно причина.

Описание проблемы

И так, у меня есть отказоустойчивый кластер построенный на операционной системе Windows Server 2019. Мне потребовалось расширить том с 30 ТБ до 40 ТБ, при попытке это сделать в оснастке по управлению дисками я получил ошибку:

The volume cannot be extended because the number of clusters will exceed the maximum number of clusters supported by the file system

The volume cannot be extended because the number of clusters

Что такое Bytes Per Cluster

Перед тем, как я вам дам несколько решений, я хочу чтобы вы поняли, что тут имеется ввиду за кластер. Если перевести данную ошибку на родной язык, то выйдет «Том нельзя расширить, потому что количество кластеров превысит максимальное количество кластеров, поддерживаемое файловой системой». Откройте командную строку от имени администратора и выполните команду:

Где m: это буква тома, где имеются проблемы. Тут нас будет интересовать поле «Bytes Per Cluster«, именно в нем будет весь сыр бор.

Bytes Per Cluster

Файловая система NTFS использует кластеры в качестве основной единицы размещения дисков. В компьютерных науках кластер (также называемый единицей размещения начиная с DOS 4.0) — это единица дискового пространства для файлов и каталогов. Размер кластера по умолчанию для файловой системы NTFS зависит от размера тома.

Кластер — это наименьшая логическая единица, состоящая из секторов. На диске, использующем сектора по 512 байт, кластер размером 512 байт содержит один сектор, тогда как кластер размером 4 КБ содержит 8 секторов. В зависимости от размера файла один файл может занимать несколько кластеров, но один кластер может использоваться только для хранения одного файла, даже если в нем много незанятых секторов.

Смысл изменения размера кластера в том, чтобы более разумно использовать дисковое пространство. Например, если раздел в основном используется для хранения документов, изображений и других небольших файлов, размер кластера по умолчанию 4 КБ экономит место на диске. Для разделов, которые сохраняют большие файлы, такие как фильмы высокой четкости, следует использовать больший размер кластера, чтобы увеличить скорость чтения-записи диска в целом.

Размер кластера можно изменить только при форматировании раздела или диска, либо специальным софтом. Максимальное количество кластеров в томе NTFS, это

2 ^ 32 -1 кластеров, или примерно 4 миллиарда

Теперь, когда у нас есть обе части информации, нам просто нужно выполнить простую математику, чтобы найти максимальный размер тома. Умножьте максимальное количество кластеров на размер кластера. В приведенном выше примере это будет 4 294 967 295 * 8192 = 35 184 372 080 640 байт. Чтобы перевести это в мегабайты, разделите число на 1 048 576 (1024*1024). В этом примере мы получаем 32 ТБ. Размеры кластера по умолчанию для файловой системы NTFS показаны в следующей таблице:

Размеры кластера по умолчанию

Как изменить размер кластера (Bytes Per Cluster)

Сразу скажу, что штатными средствами Windows вы не сможете поменять размер кластеров на томе БЕЗ потери данных. Тут алгоритм такой:

  1. Вы переносите с тома данные в другое место
  2. Форматируете том и выбираете нужный размер кластера
  3. Расширяете том
  4. Копируете данные обратно

Когда это диск размером путь до 1 ТБ, то хорошо еще можно погонять данные через robocopy, но когда их 30 ТБ, как в моем случае, то это дико не удобно и потребует дополнительного места. Чтобы обойти данную проблематику я буду использовать программный комплекс MiniTool Partition 12, который я применял для создания GPT диска.

Запустите MiniTool Partition, найдите в списке томов нужный вам. Через правый клик вызовите контекстное меню, в котором найдите пункт «Change Cluster Size«.

MiniTool Partitionизменяем размер кластера на томе диска

Выбираем нужный размер кластера, я выберу 32 кб.

Смена размера кластера на томе

Вам будет предложено подтвердить, хотите ли вы применить изменения, в левом нижнем углу нажмите «Apply«.

Запуск задания в MiniTool Partition

Необходимо согласиться, нажав  Да.

Подтверждение задания по изменению размера кластера тома

Пожалуйста, терпеливо подождите, пока сервер MiniTool Partition Wizard не завершит изменение размера кластера. Дожидаемся окончания и радуемся жизни. Еще можете получиться ситуация, что при дальнейшей попытке расширить, вам придется передвинуть раздел со свободным местом, как в статье с неактивным пунктом при расширении.

Операция по расширения кластера через MiniTool Partition

Расширение тома через MiniTool Partition

Вторым вариантом, вы можете не производить специальным образом манипуляции с «Bytes Per Cluster», вы можете это завуалированно пропустить и сразу запустить процесс расширения тома через MiniTool Partition. Для этого запустите MiniTool Partition и вызовите контекстное меню на нужном диске. Далее выберите пункт «Extend«.

расширение диска в MiniTool Partition

Далее перетаскиваем ползунок в правую сторону, до того размера, который будет в конечном итоге. В моем примере расширение раздела идет на 10 ТБ.

Расширить раздел MiniTool Partition

Так же в левом углу нажмите кнопку «Apply«.

подтверждение расширения раздела

Подтвердите, что вы будите производить расширение.

Подтверждение расширения раздела в MiniTool Partition

Дожидаемся, когда ползунок дойдет до конца.

Немного, о времени. У меня изначально раздел был 30 ТБ, и я расширял его на 10 ТБ. Весь процесс занял почти двое суток. Это вы тоже должны учитывать при выполнении данной операции

Еще важным фактором является обязательное наличие свободного дискового пространства, например чтобы не вылетела ошибка во время процедуры на 30 ТБ диске, вам нужно иметь хотя бы 200-300 ГБ.

Шкала прогресса по расширению тома в MiniTool Partition

На этом у меня все, мы успешно устранили ошибку «The volume cannot be extended because the number of clusters will exceed the maximum number of clusters supported by the file system«, мешавшую расширению диска. Если остались вопросы, то пишите их в комментариях. С вами был Иван Сёмин, автор и создатель IT портала pyatilistnik.org.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить размер клавиш на клавиатуре андроид
  • Как изменить размер клавиш на swiftkey
  • Как изменить размер клавиатуры шрифт
  • Как изменить размер клавиатуры на телефоне хуавей
  • Как изменить размер клавиатуры на телефоне хонор

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии