Разделите входной файл на X частей общих строк размера / X

Я не действительно уверен я inderstand Ваш вопрос правильно. При попытке разделить образ виртуальной машины, у Вас есть несколько опций:

  1. используйте циклы или картопостроитель устройства в линейном режиме для каждого раздела. Вы не должны иметь, они устанавливают параллельно для форматирования;

  2. partx/kpartx для сообщения ядра, какие разделы это должно рассмотреть на картопостроителе цикла/устройства устройствами или даже регулярным файлом:

    kpartx -av /path/to/file
    

    или

    losetup /dev/loopX /path/to/file
    kpartx -av /dev/loopX
    

    Устройства являются устройствами картопостроителя устройства (т.е. связанный с от /dev/mapper по умолчанию).

  3. использование partprobe

    losetup /dev/loopX /path/to/file
    partprobe /dev/loopX
    

    который даст ядру команду проверять разделение, следовательно создание /dev/loopXpY.

  4. загрузитесь живой CD/образ USB (может быть установщик) в VM, и сделайте разделение из. Это имеет очевидное преимущество способности разделить виртуальный диск даже для образов виртуальной машины, сохраненных в специальных форматах (как qcow2 QEMU, например).

3
20.11.2014, 01:07
1 ответ

Каждая часть получает целочисленное значение ( $ ((A / B)) ). Если номер строки модуль количество деталей ( $ ((% b)) ) не ноль, то вам необходимо распределить запасной номер модуля по частям. Одно решение состоит в том, чтобы дать модульному количеству частей дополнительную строку.

SPLIT_NUM_THREADS=15
TOTAL_LINES=52
for((i=0;i<$((TOTAL_LINES%SPLIT_NUM_THREADS));i++)); do
  echo $((TOTAL_LINES/SPLIT_NUM_THREADS+1))
done
4
4
4
4
4
4
4
for((i=$((TOTAL_LINES%SPLIT_NUM_THREADS));i<SPLIT_NUM_THREADS;i++)); do
  echo $((TOTAL_LINES/SPLIT_NUM_THREADS))
done
3
3
3
3
3
3
3
3
2
27.01.2020, 21:27

Теги

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