Обратите внимание, что tune2fs не печатает размер раздела, а печатает размер файловой системы . Файловая система может быть меньше, чем раздел (если на разделе есть неиспользуемое пространство), она может быть больше, чем раздел (в случае, если раздел был каким-то образом усечен; очевидно, файловая система в этом случае повреждена, но все же это это больше , чем раздел). Он также может охватывать несколько разделов или даже быть «виртуальным», то есть даже не иметь резервного устройства (например, sysfs, procfs, tmpfs).
Йорг Миттаг,
Ответы:
22
Команда:
blockdev --getsize64 /dev/mmcblk0p1
Это дает результат в байтах, как 64-битное целое число. Он запрашивает размер в байтах в виде блочного устройства , так как ядро видеть его размер.
Причина, по которой fdisk -l /dev/mmcblk0p1это не сработало, заключалась в том, что это fdiskделает нечто совершенно иное: он читает в таблице разделов (= первый сектор) блочного устройства и печатает найденное . Он ничего не проверяет, только говорит, что находится в таблице разделов.
Он даже не беспокоится о том, повреждена ли таблица разделов или нет у блочного устройства: он выведет предупреждение о том, что контрольная сумма не в порядке, но он по-прежнему печатает найденные данные, даже если значения явно не соответствуют -смысл.
Это то, что произошло в вашем случае: /dev/mmcblk0p1не имеет таблицы разделов. Как видно из названия устройства, это уже первый раздел физического диска /dev/mmcblk0. Этот диск содержит таблицу разделов, если бы вы запросили его fdisk -l /dev/mmcblk0, он работал (при условии, что у него есть таблица разделов msdos).
Мое пространство разделов составляет ровно 2 ГБ, но blockdev и fdisk оба дают значения меньше, чем то, где находится оставшееся пространство, и, пожалуйста, также сообщите команде, чтобы получить его значение
Sarthak_Bhutani
@Sarthak_Bhutani Какая информация вам не нужна fdisk -l /dev/mmcblk0? В нем должен быть указан размер одного блока, общее количество блоков на устройстве, размер разделов, а также начальный и конечный блоки каждого раздела. Вы также можете определить диапазоны блоков, которые не назначены ни одному разделу из этой информации.
Блэкджек,
9
Попробуйте lsblk, он даже не требует root:
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 34359738368 0 disk
├─xvda1 202:1 0 1676673024 0 part [SWAP]
└─xvda2 202:2 0 32682016768 0 part /var/spool
Я думаю, что это также зависит от того, равен ли размер сектора 512 (что в подавляющем большинстве случаев сегодня).
Петер - Восстановить Монику
1
@peterh В наши дни блочное устройство по-прежнему имеет размер физического сектора 512, но многие вещи (я не могу найти определенную информацию в / sys / class / block) предназначены для отчета в единицах по 512 байт. независимо от фактического размера блока.
Ответы:
Команда:
Это дает результат в байтах, как 64-битное целое число. Он запрашивает размер в байтах в виде блочного устройства , так как ядро видеть его размер.
Причина, по которой
fdisk -l /dev/mmcblk0p1
это не сработало, заключалась в том, что этоfdisk
делает нечто совершенно иное: он читает в таблице разделов (= первый сектор) блочного устройства и печатает найденное . Он ничего не проверяет, только говорит, что находится в таблице разделов.Он даже не беспокоится о том, повреждена ли таблица разделов или нет у блочного устройства: он выведет предупреждение о том, что контрольная сумма не в порядке, но он по-прежнему печатает найденные данные, даже если значения явно не соответствуют -смысл.
Это то, что произошло в вашем случае:
/dev/mmcblk0p1
не имеет таблицы разделов. Как видно из названия устройства, это уже первый раздел физического диска/dev/mmcblk0
. Этот диск содержит таблицу разделов, если бы вы запросили егоfdisk -l /dev/mmcblk0
, он работал (при условии, что у него есть таблица разделов msdos).источник
fdisk -l /dev/mmcblk0
? В нем должен быть указан размер одного блока, общее количество блоков на устройстве, размер разделов, а также начальный и конечный блоки каждого раздела. Вы также можете определить диапазоны блоков, которые не назначены ни одному разделу из этой информации.Попробуйте
lsblk
, он даже не требует root:-b
Параметр указывает ему выход размер в байтах.источник
Чтобы получить точное значение общего размера раздела, выполните:
источник
Мое решение:
где
/dev/hda2
раздел, который не обязательно смонтирован. протестировано сtune2fs
версией 1.42.4источник