10 июля 2024 Linux losetup cfdisk dd mkfs


Для получения навыка работы в дисковыми устройствами в среде Linux лучше начать экспериментировать в виртуальными устройствами в домашней папке пользователя

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

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

 

  1. Создать пустой файл размером 1Гб
    dd if=/dev/zero of=test-image bs=1M count=1024
    1024+0 записей получено
    1024+0 записей отправлено
    1073741824 байт (1,1 GB, 1,0 GiB) скопирован, 0,678707 s, 1,6 GB/s
    
  2. Подключить файл как блочное устройство(диск), тут с помощью утилиты losetup ядро получает имя нового виртуального устройства и имя файла, затем ядро связывает эти данные в новое виртуальное устройство
  3. sudo losetup /dev/loop33 test-image 
  4. Теперь в директории /dev/ появлось виртуальное устройство /dev/loop33 и с ним можно работать как с обычными диском используя инструменты fdisk cfdisk или gparted

    Разметить разделы на новом "диске" под свои тестовые нужны

    sudo cfdisk /dev/loop33
  5. Так как структура файла изменилась и на нём появились разделы, необходимо перемонтировать файл-виртуальное устройство
    # отмонтировать
    sudo losetup -d /dev/loop33 
    
    # примонтировать с поиском разделов
    sudo losetup -P  /dev/loop33  test-image
  6. Теперь в директории /dev/ появятся файлы устройств-разделов находящихся в тестовом файле и с ними можно работать как обычными разделами, там можно создавать файловые системы
    ffsdmad@basm:~$ sudo mkfs.ext4  /dev/loop33p1
    [sudo] пароль для ffsdmad: 
    mke2fs 1.46.5 (30-Dec-2021)
    Discarding device blocks: done                            
    Creating filesystem with 128000 4k blocks and 128000 inodes
    Filesystem UUID: d184b921-84f1-4fbe-8e98-729e67fbbfeb
    Superblock backups stored on blocks: 
    	32768, 98304
    
    Allocating group tables: done                            
    Сохранение таблицы inod'ов: done                            
    Создание журнала (4096 блоков): готово
    Writing superblocks and filesystem accounting information: готово
    
    ffsdmad@basm:~$ sudo mkfs.ext4  /dev/loop33p2
    mke2fs 1.46.5 (30-Dec-2021)
    Discarding device blocks: done                            
    Creating filesystem with 133888 4k blocks and 33520 inodes
    Filesystem UUID: fc175588-43de-4731-973c-875722ed273f
    Superblock backups stored on blocks: 
    	32768, 98304
    
    Allocating group tables: done                            
    Сохранение таблицы inod'ов: done                            
    Создание журнала (4096 блоков): готово
    Writing superblocks and filesystem accounting information: готово
    

    gparted

  7. Просмотр разделов устройства с помощью консольной версии gparted

    Просмотр разделов устройства с помощью консольной версии gparted

  8. Смонтировать новые файловые системы
    # создаёт две директории в /tmp
    mkdir -p /tmp/{1..2}
    
    # монтирование в созданные директории
    sudo mount /dev/loop33p1 /tmp/1 
    sudo mount /dev/loop33p2 /tmp/2
    
  9. Заполнить тестовыми данными
    sudo cp -r /etc /tmp/1/
    
    sudo cp -r /var/mail /tmp/2/
    
    # открыть смонтированные файловые системы в файловом менеджере mc
    mc  /tmp/1/  /tmp/2/ 

  10. Отмонтировать файловые системы, отмонтировать виртуальные устройства и удалить следы
    # отмонтировать файловые системы
    sudo umount /tmp/{1..2}
    
    # отмонтировать виртуальное устройств
    losetup -d /dev/loop33
    
    # удалить файл устройства
    rm test-image