Почему `losetup` должен связывать кольцевые устройства с блочными устройствами?

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

$ valgrind c-projects/objtest/bin/objtest 
==6543== Memcheck, a memory error detector
==6543== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==6543== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==6543== Command: c-projects/objtest/bin/objtest
==6543== 
|ERROR|array:189: array_delete: delete index 0 but the highest is -1 (delete from empty array): index out of bounds
==6543== 
==6543== HEAP SUMMARY:
==6543==     in use at exit: 480 bytes in 20 blocks
==6543==   total heap usage: 7,390 allocs, 7,370 frees, 256,217 bytes allocated
==6543== 
==6543== LEAK SUMMARY:
==6543==    definitely lost: 96 bytes in 4 blocks
==6543==    indirectly lost: 384 bytes in 16 blocks
==6543==      possibly lost: 0 bytes in 0 blocks
==6543==    still reachable: 0 bytes in 0 blocks
==6543==         suppressed: 0 bytes in 0 blocks
==6543== Rerun with --leak-check=full to see details of leaked memory
==6543== 
==6543== For counts of detected and suppressed errors, rerun with: -v
==6543== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Если вы опытный пользователь и вам нужны красивые графики, вы можете использовать ms_printи команду, например:

valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1

см. Пиковое использование памяти процессом linux/unix .

2
26.02.2019, 03:36
1 ответ

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

Например, losetupможет принимать аргументы--offsetoffset и--sizelimitlimit , что позволяет отображать только часть базового блочного устройства. (Аналогично тому, как работают разделы, но не обязательно там, где у вас есть таблица разделов.)

Также можно использовать опцию-r или--чтение -только , чтобы сделать запись блока контурного устройства, что может быть полезно для предотвращения нежелательной записи из приложений, которые берут блок. устройства и не должны писать на них.

Наконец, losetupможет принимать аргумент-e ,-E или--шифрованиетип шифрования _для использования передаточной функции, которая реализует шифрование поверх базового блочного устройства.

Эти три варианта использования потенциально полезны поверх других блочных устройств (, а также файлов ), поскольку их результатом является не просто идентичный перевод базового устройства.

Возможно, devicemapper является более современным API для выполнения такого рода преобразований (, а современные функции для управления ими, такие как LVM и cryptsetup, основаны на devicemapper. )Первоначальные функции losetupпо-прежнему присутствуют, поскольку пользователи могут по-прежнему зависеть от них.

См. справочную страницу lossup (8)для более подробной информации об опциях, описанных выше.

4
27.01.2020, 21:58

Теги

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