ОБНОВИТЬ
Итак, после долгого изучения официальной документации я обнаружил, что btrfs выделяет пространство кусками по 1 Гб, и при использовании одиночного режима эти куски выделяются на диске с наиболее незанятым пространством в настоящее время. Поэтому данные распределяются между разными дисками, и, как я вижу, потеря одного диска приведет к полной потере файлов размером более 1 ГБ.
Я пришел к выводу, что единственное преимущество использования одиночного режима по сравнению с raid0 (также поддерживаемое btrfs) - это возможность использования дисков разного размера. Есть другие мысли?
Исходный пост
Поэтому я создал файловую систему btrfs, состоящую из 3 устройств с одиночным режимом данных, используя следующую команду:
sudo mkfs.btrfs -f -d single /dev/sdb7 /dev/sdb8 /dev/sdb9
Затем я подключил fs к папке nonRaid и создал файл размером 10 ГБ, используя
fallocate -l 10G nonRaid/example
Я понимаю, что разница между использованием raid0 и single заключается в том, что raid0 будет разделять данные на 3 устройства в моем случае, и в одном режиме данные не будут разбиты на полосы, а будут сохранены как целый фрагмент на диске, как это делает NTFS. Я правильно понимаю?
Если да, то как это объяснить при использовании
btrfs filesystem usage nonRaid/
он показывает мне следующий результат:
Overall:
Device size: 59.98GiB
Device allocated: 13.02GiB
Device unallocated: 46.96GiB
Device missing: 0.00B
Used: 10.05GiB
Free (estimated): 47.91GiB (min: 24.43GiB)
Data ratio: 1.00
Metadata ratio: 2.00
Global reserve: 16.00MiB (used: 0.00B)
Data,single: Size:11.01GiB, Used:10.05GiB
/dev/sdb7 3.01GiB <---
/dev/sdb8 5.00GiB <---
/dev/sdb9 3.00GiB <---
Данные 10G разделяются между 3 устройствами, но не так равномерно, как при использовании raid0. Btrfs не поддерживает режим, при котором все диски заполняются целиком? Потому что эта чередование все равно будет означать, что если / dev / sdb8 выйдет из строя, все мои данные всей файловой системы исчезнут - верно?
Я знаю, что это немного старый вопрос, хотя я нашел его во время исследования того же трека. В списке рассылки btrfs-kernel есть довольно подробное объяснение от Хьюго Миллса (https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg44523.html).
tl; dr; btrfs хранит файлы блоками по 1 ГБ и распределяет их поровну по доступному свободному пространству на каждом диске. Таким образом, «с устройствами одинакового размера первый 1 ГиБ будет размещен на первом устройстве, второй 1 ГиБ на втором устройстве и так далее».