Домашнее задание на неделю 50

Задания на изучение способов организации данных. Контрольный срок сдачи — . Задание не является обязательным — ввиду выпадения контрольного срока на зачетную неделю. Предполагается, что оно будет выполнено желающими улучшить средний бал за домашние задания.

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

Строки дампа, состоящие из единственного символа *, означают повтор (возможно — многократный) предшествующей строки до следующего смещения. Аналогично, строка 0* означает заполнение нулевыми октетами. Если не указано обратного, интерпретация этих условных обозначений, а равно и самих «скрытых» так данных, не является отдельным вариантом задания.

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

  1. Zip-архив (ИСО/МЭК 21320-1:2015) содержит следующие данные. Обратившись к тексту спецификации APPNOTE.TXT и статье Википедии Zip (file format), опишите назначение непрерывной последовательности шестнадцатеричного дампа длиной не менее 20 октетов. Желательно, чтобы последовательность соответствовала одной—двум сущностям (например — файловым описателям) формата.

    Обратите внимание, что для содержащихся в данном архиве файлов не используется сжатие.

    00000   50 4b 03 04 0a 00 00 00 00 00 56 85 8c 4f f8 b0 PK........V..O..
    00010   f3 71 26 00 00 00 26 00 00 00 0c 00 00 00 49 52 .q&...&.......IR
    00020   4f 4e 53 48 41 44 2e 54 58 54 41 20 73 77 69 66 ONSHAD.TXTA swif
    00030   74 20 63 72 61 73 68 69 6e 67 20 6f 66 20 68 6f t crashing of ho
    00040   72 73 65 73 20 74 68 72 6f 75 67 68 20 74 68 65 rses through the
    00050   50 4b 03 04 0a 00 00 00 00 00 59 85 8c 4f f5 29 PK........Y..O.)
    00060   e6 4c 29 00 00 00 29 00 00 00 09 00 00 00 51 55 .L)...).......QU
    00070   45 45 4e 2e 54 58 54 42 65 6c 69 65 76 65 20 67 EEN.TXTBelieve g
    00080   72 65 65 6e 20 62 75 64 73 20 61 77 61 6b 65 6e reen buds awaken
    00090   20 69 6e 20 74 68 65 20 73 70 72 69 6e 67 2c 0d  in the spring,.
    000a0   50 4b 03 04 0a 00 00 00 00 00 5b 85 8c 4f 6c 4a PK........[..OlJ
    000b0   d3 a4 27 00 00 00 27 00 00 00 0b 00 00 00 47 57 ..'...'.......GW
    000c0   41 48 4c 55 52 2e 54 58 54 54 68 65 20 63 6c 69 AHLUR.TXTThe cli
    000d0   66 66 73 20 72 6f 73 65 20 73 68 65 65 72 20 66 ffs rose sheer f
    000e0   72 6f 6d 20 74 68 65 20 6a 75 6e 67 6c 65 2c 20 rom the jungle, 
    000f0   50 4b 03 04 0a 00 00 00 00 00 5d 85 8c 4f 2c c8 PK........]..O,.
    00100   48 2a 26 00 00 00 26 00 00 00 0c 00 00 00 5a 41 H*&...&.......ZA
    00110   4d 42 4f 55 4c 41 2e 54 58 54 e2 80 9c 50 65 72 MBOULA.TXT...Per
    00120   69 6c 20 68 69 64 65 73 20 69 6e 20 74 68 65 20 il hides in the 
    00130   68 6f 75 73 65 20 6f 66 20 41 72 61 6d 20 42 61 house of Aram Ba
    00140   50 4b 03 04 0a 00 00 00 00 00 5d 85 8c 4f 05 c3 PK........]..O..
    00150   76 17 1f 00 00 00 1f 00 00 00 09 00 00 00 56 41 v.............VA
    00160   4c 49 44 2e 48 54 4d 3c 21 44 4f 43 54 59 50 45 LID.HTM<!DOCTYPE
    00170   20 68 74 6d 6c 3e 3c 74 69 74 6c 65 3e 3c 2f 74  html><title></t
    00180   69 74 6c 65 3e 0d 50 4b 01 02 1e 03 0a 00 00 00 itle>.PK........
    00190   00 00 56 85 8c 4f f8 b0 f3 71 26 00 00 00 26 00 ..V..O...q&...&.
    001a0   00 00 0c 00 00 00 00 00 00 00 00 00 00 00 a4 81 ................
    001b0   00 00 00 00 49 52 4f 4e 53 48 41 44 2e 54 58 54 ....IRONSHAD.TXT
    001c0   50 4b 01 02 1e 03 0a 00 00 00 00 00 59 85 8c 4f PK..........Y..O
    001d0   f5 29 e6 4c 29 00 00 00 29 00 00 00 09 00 00 00 .).L)...).......
    001e0   00 00 00 00 00 00 00 00 a4 81 50 00 00 00 51 55 ..........P...QU
    001f0   45 45 4e 2e 54 58 54 50 4b 01 02 1e 03 0a 00 00 EEN.TXTPK.......
    00200   00 00 00 5b 85 8c 4f 6c 4a d3 a4 27 00 00 00 27 ...[..OlJ..'...'
    00210   00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 a4 ................
    00220   81 a0 00 00 00 47 57 41 48 4c 55 52 2e 54 58 54 .....GWAHLUR.TXT
    00230   50 4b 01 02 1e 03 0a 00 00 00 00 00 5d 85 8c 4f PK..........]..O
    00240   2c c8 48 2a 26 00 00 00 26 00 00 00 0c 00 00 00 ,.H*&...&.......
    00250   00 00 00 00 00 00 00 00 a4 81 f0 00 00 00 5a 41 ..............ZA
    00260   4d 42 4f 55 4c 41 2e 54 58 54 50 4b 01 02 1e 03 MBOULA.TXTPK....
    00270   0a 00 00 00 00 00 5d 85 8c 4f 05 c3 76 17 1f 00 ......]..O..v...
    00280   00 00 1f 00 00 00 09 00 00 00 00 00 00 00 00 00 ................
    00290   00 00 a4 81 40 01 00 00 56 41 4c 49 44 2e 48 54 ....@...VALID.HT
    002a0   4d 50 4b 05 06 00 00 00 00 05 00 05 00 1b 01 00 MPK.............
    002b0   00 86 01 00 00 00 00                            .......
    
  2. Файл /etc/fstab имеет следующий вид. Опишите назначение двух строк файла.

    /dev/vgjavba-i/lvroot-z5debba   /       ext4    rw,noatime      0 1
    proc                            /proc   proc    defaults        0 0
    tmp                             /tmp    tmpfs   nodev,nosuid    0 0
    /dev/vgjavba-i/lvvar-z5debbc    /var    ext4    nosuid,nodev,noatime  0 2
    /dev/mapper/swbiwys             none    swap    defaults        0 0
    /dev/cdrom              /media/cdrom    iso9660 ro,noauto,nodev,nosuid,user 0 0
    /dev/fd0		/media/floppy	vfat	rw,noauto,nodev,nosuid,user 0 0
    LABEL=sweet                     /home   ext4    nodev           0 2
    UUID=ee70261d-0a0a-4199-9392-b2555350fbc2 /home/storage btrfs nodev,noatime 0 2
    /dev/disk/by-id/wwn-0x508f9913-part37 /home/bigdata squashfs  ro,nodev  0 0
    
  3. В отношении блочных устройств выполнена команда lsblk и получен результат ниже. Что можно сказать о перечисленных в выводе блочных устройствах?

    NAME                                              MAJ:MIN RM  SIZE RO TYPE
    sdx11                                               8:379  0   64G  0 part
    `-md131                                             9:131  0   64G  0 raid1
      |-vgyoocy--u--i-lvfiles--z5dfc68                253:306  0  4.4G  1 lvm
      `-vgyoocy--u--i-lvvarlog--z5dfdb9-real          253:307  0  512M  0 lvm
        |-vgyoocy--u--i-lvvarlog--z5dfdb9             253:308  0  512M  0 lvm
        `-vgyoocy--u--i-lvvarlog--z5dfdb9--x5dfdb9ff  253:309  0  512M  1 lvm
    sdy11                                               8:395  0   64G  0 part
    `-md131                                             9:131  0   64G  0 raid1
      |-vgyoocy--u--i-lvfiles--z5dfc68                253:306  0  4.4G  1 lvm
      `-vgyoocy--u--i-lvvarlog--z5dfdb9-real          253:307  0  512M  0 lvm
        |-vgyoocy--u--i-lvvarlog--z5dfdb9             253:308  0  512M  0 lvm
        `-vgyoocy--u--i-lvvarlog--z5dfdb9--x5dfdb9ff  253:309  0  512M  1 lvm
    
  4. Стандартом IEEE Std 1003.1-2017 (POSIX.1-2017) определена функция stat, позволяющая получить такую информацию о файле, как размер, режим доступа, идентификатор пользователя-владельца, etc. С другой стороны, в случае файловой системы Ext2, библиотека Libext2fs предлагает функцию ext2fs_read_inode (и семейство функций ext2fs_namei для поиска номера inode по имени файла) — позволяющую получить доступ к, в сущности, той же информации (cf., например, определение структуры stat в sys/stat.h POSIX.1-2017 и описание структуры ext2_inode в ext2fs/ext2_fs.h.)

    Перечислите отличия между использованием функции stat POSIX.1-2017 и функции ext2fs_read_inode библиотеки Libext2fs. В каких случаях разработчик может предпочесть ту или иную функцию?

    Для примера, ниже приведен вывод, для одного и того же файла, команды stat пакета GNU Coreutils и одноименной команды инструмента debugfs пакета e2fsprogs, являющиеся команднострочными интерфейсами для вышеуказанных двух функций.

    $ stat -- bsdgames_2.17-28_amd64.deb 
      File: bsdgames_2.17-28_amd64.deb
      Size: 962404          Blocks: 1880       IO Block: 4096   regular file
    Device: 50fd07h/5307655d        Inode: 80028       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-11-16 03:40:07.566586095 +0000
    Modify: 2018-04-28 14:25:34.000000000 +0000
    Change: 2019-11-16 02:56:21.006325859 +0000
     Birth: -
    $ debugfs -- /dev/vgnaijo/lvcokea 
    debugfs:  stat <80028> 
    Inode: 80028   Type: regular    Mode:  0644   Flags: 0x80000
    Generation: 927611923    Version: 0x00000000:00000001
    User:     0   Group:     0   Project:     0   Size: 962404
    File ACL: 0
    Links: 1   Blockcount: 1880
    Fragment:  Address: 0    Number: 0    Size: 0
     ctime: 0x5dcf6555:0182198c -- Sat Nov 16 02:56:21 2019
     atime: 0x5dcf6f97:8715abbc -- Sat Nov 16 03:40:07 2019
     mtime: 0x5ae4845e:00000000 -- Sat Apr 28 14:25:34 2018
    crtime: 0x5dcf6553:dbe21cf8 -- Sat Nov 16 02:56:19 2019
    Size of extra inode fields: 32
    Inode checksum: 0x63fece6e
    EXTENTS:
    (0-234):44032-44266
    debugfs:  quit 
    $