BTRFS Raid10 показывает значительно меньше доступного места, HD-диски такого же размера

Это кажется совершенно произвольным выбором. Это может быть что угодно, но кто-то 1 посчитал, что 4 миллионов достаточно. Использовать исходный код :

/*
 * A maximum of 4 million PIDs should be enough for a while.
 * [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.]
 */
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
    (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))

История git, кажется, восходит только к 2005 году, а значение было таким, по крайней мере, столько же.


1 В справочной странице говорится, что / proc / sys / kernel / pid_max был добавлен в 2.5.34, и глядя на журнал изменений , похоже, что кем-то был Инго Мольнар :


    [PATCH] pid-max-2.5.33-A0

    This is the pid-max patch, the one i sent for 2.5.31 was botched.  I
    have removed the 'once' debugging stupidity - now PIDs start at 0 again.
    Also, for an unknown reason the previous patch missed the hunk that had
    the declaration of 'DEFAULT_PID_MAX' which made it not compile ...

Однако Инго добавил только DEFAULT_PID_MAX . PID_MAX_LIMIT был добавлен Линусом Торвальдсом в 2.5.37 :


    Make pid_max grow dynamically as needed.

Оказывается, я неправильно прочитал журнал изменений.

Изменения внесены в набор обновлений 2.5.37 :

diff -Nru a/include/linux/threads.h b/include/linux/threads.h
--- a/include/linux/threads.h   Fri Sep 20 08:20:41 2002
+++ b/include/linux/threads.h   Fri Sep 20 08:20:41 2002
@@ -17,8 +17,13 @@
 #define MIN_THREADS_LEFT_FOR_ROOT 4

 /*
- * This controls the maximum pid allocated to a process
+ * This controls the default maximum pid allocated to a process
  */
-#define DEFAULT_PID_MAX 0x8000
+#define PID_MAX_DEFAULT 0x8000
+
+/*
+ * A maximum of 4 million PIDs should be enough for a while:
+ */
+#define PID_MAX_LIMIT (4*1024*1024)

 #endif

На этом мои поисковые навыки позволяют мне.


Благодаря @hobbs, похоже, Инго кто-то в конце концов. Патч, который я цитировал выше, первым прислал он. Из сообщения LKML , сопровождающего его:

объем памяти нового распределителя PID динамически масштабируется с помощью / proc / sys / kernel / pid_max: 32K PID по умолчанию вызывают выделение 4K, { {1}} pid_max, равный 1 миллиону, приводит к занимаемому месту размером 128 КБ.Текущий абсолютный предел для pid_max составляет 4 миллиона идентификаторов PID - это не вызывает какого-либо выделения в ядре, растровые изображения распределяются по запросу во время выполнения. Таблица pidmap занимает 512 байты.

Была бурная дискуссия о более высоких лимитах, но, похоже, в конце концов из этого ничего не вышло.

1
05.03.2018, 18:01
1 ответ

Ti; Dr.

btrfs fi usage /mnt2/mountpointes la ÚNICA forma de obtener una estimación del espacio disponible bastante precisa.


El espacio libre en Btrfs es muy complicado, por lo que la mayoría de las herramientas que normalmente se utilizan para obtener espacio libre son inexactas. Desafortunadamente, la mejor documentación sobre este problema se encuentra distribuida en varias preguntas frecuentes en la wiki, comenzando aquíhttps://btrfs.wiki.kernel.org/index.php/FAQ#How_much_free_space_do_I_have.3F

En mi caso obtuve:

[root@big ~]# btrfs fi usage /mnt2/big
Overall:
Device size:          43.66TiB
Device allocated:         18.97TiB
Device unallocated:       24.69TiB
Device missing:          0.00B
Used:             12.82TiB
Free (estimated):         15.42TiB  (min: 15.42TiB)
Data ratio:               2.00
Metadata ratio:           2.00
Global reserve:      512.00MiB  (used: 0.00B)

Observe cómo Used / Data ratio + Free (estimated)suma 21,83 TiB, exactamente el espacio máximo teórico que obtendría de seis unidades de 8 TB en RAID 10. Mientras tanto, df sigue informando que mi matriz tiene 3,5 TiB inutilizables, lo cual es normal.

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdf         22T  6.5T   12T  37% /mnt2/big
0
28.01.2020, 00:39

Теги

Похожие вопросы