¿Por qué el tamaño de partición y la salida de df son diferentes?

16

Tengo una partición / dev / sda1.
La utilidad de disco muestra que tiene una capacidad de 154 GB.
df -h muestra

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             123G  104G   14G  89% /
devtmpfs             1006M  280K 1006M   1% /dev
none                 1007M  276K 1006M   1% /dev/shm
none                 1007M  216K 1006M   1% /var/run
none                 1007M     0 1007M   0% /var/lock
none                 1007M     0 1007M   0% /lib/init/rw

¿Por qué los resultados son diferentes? ¿Dónde están los 31 GB que faltan?

xralf
fuente
3
Publique el resultado de fdisk -l /dev/sda(ejecutar como root).
Gilles 'SO- deja de ser malvado'
2
¿Qué sistema de archivos estás usando? Si es ext2 / 3/4, puede usar tune2fs -l /dev/sda1para examinarlo. Mire el recuento de bloques y el tamaño de bloque y multiplíquelos para obtener el tamaño del sistema de archivos. Además, fdisk -s /dev/sda1para obtener el tamaño de la partición en bloques de 1k. Multiplique eso por 1024 para obtener el tamaño en bytes. Ese número solo debe ser ligeramente mayor que el sistema de archivos. En mi partición ext4 de 40 GB, es 3072 bytes más grande. Si su sistema de archivos es extrañamente más pequeño, puede intentar cambiar su tamaño. Para ext2 / 3/4, use resize2fs /dev/sda1. Puede hacer esto mientras usa la computadora normalmente.
penguin359
@Gilles sudo fdisk -l / dev / sda muestra (estoy publicando solo la partición sda1, porque otros no nos interesan). Dispositivo Inicio Arranque Fin Bloques Id Sistema / dev / sda1 1 18706 150253568 83 Linux
xralf
@ penguin359 Tengo un sistema de archivos ext4. recuento de bloques = 32668162, tamaño de bloque = 4096, 32668162 * 4096 = 133808791552, fdisk -s / dev / sda1 * 1024 = 153859653632. Parece extrañamente más pequeño. ¿Puedo cambiar el tamaño sin pérdida de datos? ¿Qué causó que sea más pequeño?
xralf
@xralf: cambiar el tamaño debe ser seguro, nunca he perdido datos al hacerlo. Puede ser un poco más seguro hacerlo en una partición desmontada, por ejemplo, con un CD en vivo. Pero aún así, consiga una copia de seguridad primero. Siempre obtenga una copia de seguridad antes de hacer cosas importantes de administración del sistema.
Faheem Mitha

Respuestas:

25

Una razón por la cual las capacidades de la partición pueden diferir es que parte del espacio está reservado para la raíz, en caso de que las particiones se llenen. Si no hay espacio reservado para la raíz, y las particiones se llenan, el sistema no puede funcionar. Sin embargo, esta diferencia suele ser del orden del 1%, por lo que no explica la diferencia en su caso. Desde la página del manual para df

Si un argumento es el nombre de archivo absoluto de un nodo de dispositivo de disco que contiene un sistema de archivos montado, df muestra el espacio disponible en ese sistema de archivos en lugar de en el sistema de archivos que contiene el nodo del dispositivo (que siempre es el sistema de archivos raíz).

Entonces df realmente muestra el tamaño de su sistema de archivos, que generalmente es el tamaño del dispositivo, pero esto puede no ser cierto en su caso. ¿Su sistema de archivos se extiende por toda su partición?

Hace

resize2fs /dev/sda1

hacer alguna diferencia? Este comando intenta aumentar su sistema de archivos para cubrir toda la partición. Pero asegúrese de tener una copia de seguridad si intenta esto.

Faheem Mitha
fuente
>> ¿Su sistema de archivos se extiende por toda la partición? Creo que sí. Es ext4. <br> ¿Qué debo hacer una copia de seguridad? No tengo ningún disco secundario para hacer una copia de seguridad más grande.
xralf
@xralf: (Ok, esto está fuera de tema en términos de esta pregunta, pero ...) Si no tiene una copia de seguridad, configure una de inmediato. La única alternativa de una buena copia de seguridad (y no es una buena alternativa) es el uso sistemático de un sistema de control de versiones distribuido y llevarlo a alguna ubicación remota. Pero, por supuesto, no puede poner todo bajo control de versiones, por ejemplo. medios de comunicación. Por favor, disculpe si estoy siendo un entrometido.
Faheem Mitha
@xralf: publicaría sus resultados de salida en la pregunta en sí, es más fácil de ver y leer.
Faheem Mitha
resize2fs es una operación bastante segura, no hay necesidad de hacer una copia de seguridad (si tiene una potencia estable y utiliza un software estable). Por cierto, el recuento predeterminado de bloques reservados es del 5% para los sistemas de archivos ext *.
rvs
@rvs: no estoy de acuerdo con la copia de seguridad. Tiene razón sobre el 5% al ​​menos en Debian. Estaba recordando mal. Pero no sé si eso es estándar en todas las distribuciones.
Faheem Mitha
5

La principal diferencia es porque algunas cosas dicen que 1 kilobyte es 1000 bytes, y otras dicen que 1 kilobyte es 1024 bytes.

Gnome Disk Utility muestra la capacidad usando 1 kilobyte = 1000 bytes, porque los fabricantes de discos describen los tamaños de disco de esta manera. Esto significa que su capacidad de disco es cercana a 154,000,000,000 bytes .

Por otro lado, la mayoría de los sistemas operativos dicen 1 kilobyte = 1024 bytes. A todas las herramientas les gusta dfy fdiskusan esta convención. Entonces 154,000,000,000 bytes / 1024/1024/1024 = 143.4 GB .

Como jlliagre señala correctamente (y Gilles implica cuando pregunta por su fdisksalida), la utilidad de disco le dice el tamaño de todo su disco duro. Pero /dev/sda1es una sola partición en su disco duro. Por ejemplo, su disco duro probablemente tenga algunas otras particiones, como una partición de 4-8 GB para intercambio (también conocida como memoria virtual) y una partición de arranque que generalmente tiene alrededor de 100 MB.

No publicó la salida de fdisk -l /dev/sda, así que supongamos que su partición de intercambio es de 8 GB. Ahora hemos reducido a 135 GB .

Luego, hay algunas otras cosas que contribuyen a la diferencia.

Por ejemplo, el sistema de archivos utiliza parte de la partición del disco para metadatos. Los metadatos son cosas como nombres de archivos, permisos de archivos, qué partes de la partición pertenecen a qué archivos y qué partes de la partición están libres. En mi sistema, aproximadamente el 2% de la partición se usa para esto. Suponiendo que el suyo es similar, reduciría el espacio libre a aproximadamente 132 GB .

El sistema de archivos también puede reservar algo de espacio que solo puede ser utilizado por el usuario root. En mi sistema, es el 5% de la partición, por lo que en su caso, significaría una capacidad total de aproximadamente 125 GB .

Los números exactos dependen de si está usando ext2, ext3, ext4, fat, ntfs, btrfs, etc., y qué configuraciones se usaron al formatear la partición.

Si está usando ext2 o ext3, sudo tune2fs -l /dev/sda1puede ayudarlo a comprender hacia dónde va el espacio.

Mikel
fuente
La utilidad de disco muestra exactamente la capacidad de 154 GB (153,859,653,632 bytes).
xralf
>> sudo tune2fs -l / dev / sda1 << ¿Qué parámetros me dicen a dónde va el espacio?
xralf
2

Probablemente los usan los inodos. MBR puede usar cierta cantidad.

balki
fuente
1
El MBR no aparece como está en el cilindro 0 (ni siquiera en la primera partición, que a menudo comienza en el sector 2048). Sin embargo, hay copias del superbloque. Aún así, son los inodes. Vea también: unix.stackexchange.com/questions/13547/… y los comandos "lsblk / dev / sdX" y "dumpe2fs -h / dev / sdX"
David Tonhofer
1

sda1 no es todo su disco sino su primera partición primaria. Es posible que haya creado otras particiones desmontadas que no se muestran en la salida de df o simplemente que sda1 no llena todo el espacio utilizable por alguna razón o que el sistema de archivos no utiliza todo el espacio disponible en su partición.

fdisk -l le dirá cómo se ve su tabla de particiones.

jlliagre
fuente
Por supuesto. Estamos hablando solo de la partición / dev / sda1, no del disco completo.
xralf
Eso no era obvio por su pregunta, ya que se refería a una utilidad de disco sin mostrar su salida. Debería editarlo para que quede claro. También sería útil contarle cómo creó el sistema de archivos /.
jlliagre
La parte relevante de la salida de la utilidad de disco es "capacidad de partición sda1 = 154 GB".
xralf
Edite su pregunta original para que quede claro.
jlliagre