Копия СПЗ (копия)
.docЛАБОРАТОРНАЯ РАБОТА 2 Изучение файловой системы в ОС UNIX
Лабораторная работа 1.
2.1 Цель работы
Исследование команд навигации в файловой системе, команд управления файлами и каталогами, создания новой файловой системы, монтирования и размонтирования ФС. Ознакомление с командами связи, создания специальных файлов, сопровождения и восстановления ФС и создания архивов на ленте или диске.
2.2 Основные команды их значение
cd: cd [-L|-P] [dir] − Cменяет текущую директорию на DIR.
-P использовать физическую структуру вместо символических ссылок; -L
восстанавливает тип символических ссылок.
pwd – вывод текущей директории
СИНТАКСИС
pwd [OPTION]
ОПИСАНИЕ
Вывести полный путь к текущему каталогу.
more – фильтр для просмотров
СИНТАКСИС
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]
ОПИСАНИЕ
Для просмотра текста по страницам.
more - выводит создержимое текстового файла по частям
more +linenumber - выводится текст со строки linunumber
more +pattern - выводится текст за 2 строки до выражения pattern
more -n - размер экрана в строках под текст
more -w - ожидание завершения пользователем программы
find [ключи] [path...] [выражение] − поиск файлов и выполнение над
ними каких-либо действий.
-P − никогда не следовать по символическим ссылкам.
-L − использовать символические ссылки.
-type c
Файлы типа c:
b − спец. блочный
c − спец. символьный
d − директория
Действия:
-delete − Удалить файлы
-exec command ; − Выполнить command
-fprint file
grep [опции] строка [FILE...]
grep [опции] [-e строка | -f FILE] [FILE...] − поиск по набору строк
cat [опции] [FILE] − объединяет файлы или стандартный ввод в
стандартный
grep -w - поиск по словам
grep -r - рекурсивный поиск
grep -n - добавляет номер строки, где найдено вхождение
cat > - перенаправление стандартного вывода
cat >> - перенаправление стандартного вывода, без перезаписи, добавление
cat < - перенаправление стандартного ввода
cat -n - количество выведенных строк
chmod:
a - все категории пользователей;
u - владелец;
g - группа;
o - все пользователи;
"+" или "-" - наличие или отсутствие права;
"=" - присвоить право, вне зависимости было оно или нет ранее
право - одно из трех прав:
r - право на чтение;
w - право на запись;
x - право на выполнение;
chown - синтаксис аналогичен
для выяснения имени текущего пользователя можно использовать whoami
chgrp - аналогичен двум предыдущим
* - изменить атрибуты всех файлов в каталоге
mkfs [ -V ] [ -t тип ] [ параметры ] файл [ блоки ]
-t - указание типа
-m - резервное место, в процентах
mount
-t - указание типа
-o - смонтировать iso-образ
tar:
-A, --catenate, --concatenate
склеить файлы tar в один архив
-c, --create
создать новый архив
-d, --diff, --compare
найти различия между архивом и файловой системой
--delete
удалить из архива (не применяется к магнитным лентам!)
-r, --append
добавить файлы в конец архива
-t, --list
показать содержимое архива
-u, --update
добавить только новые версии файлов файлов
-x, --extract, --get
извлечь файлы из архива
mknod имя [b] [c] старший_номер младший_номер
b - создать файл блочного устройства (буферизованный)
c, u - создать файл символьного устройства (небуферизованный)
p - создать именованный канал
-m, --mode=РЕЖИМ установить РЕЖИМ доступа
2.3 Результаты выполнения работы
/*
* Structure of an inode on the disk
*/
struct ext3_inode {
__le16 i_mode; /* File mode */ //тип или режим файла
__le16 i_uid; /* Low 16 bits of Owner Uid */ //Последние 16 бит идентификатора пользователя
__le32 i_size; /* Size in bytes */ //Размер файла
__le32 i_atime; /* Access time */ //Время доступа(последнее)
__le32 i_ctime; /* Creation time */ //Время создания
__le32 i_mtime; /* Modification time */ //Время изменения
__le32 i_dtime; /* Deletion Time */ // ?
__le16 i_gid; /* Low 16 bits of Group Id */ //Последние 16 бит идетификатора группы
__le16 i_links_count; /* Links count */ //Количество ссылок
__le32 i_blocks; /* Blocks count */ //Количество блоков
. __le32 i_flags; /* File flags */ //Флаги файла
union {
struct {
__u32 l_i_reserved1; //Зарезервированое место1, на дополнительные нужды структуры
} linux1;
struct {
__u32 h_i_translator; //Зарезервированое место1, на дополнительные нужды структуры
} hurd1;
struct {
__u32 m_i_reserved1; //Зарезервированое место1, на дополнительные нужды структуры
} masix1;
} osd1; /* OS dependent 1 */
__le32 i_block[EXT3_N_BLOCKS];/* Pointers to blocks */ //указатели на блоки хранения
__le32 i_generation; /* File version (for NFS) */ //Версия файла
__le32 i_file_acl; /* File ACL */
__le32 i_dir_acl; /* Directory ACL */
__le32 i_faddr; /* Fragment address */
union {
struct {
__u8 l_i_frag; /* Fragment number */
__u8 l_i_fsize; /* Fragment size */
__u16 i_pad1;
__le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2;
} linux2;
struct {
__u8 h_i_frag; /* Fragment number */
__u8 h_i_fsize; /* Fragment size */
__u16 h_i_mode_high;
__u16 h_i_uid_high;
__u16 h_i_gid_high;
__u32 h_i_author;
} hurd2;
struct {
__u8 m_i_frag; /* Fragment number */
__u8 m_i_fsize; /* Fragment size */
__u16 m_pad1;
__u32 m_i_reserved2[2];
} masix2;
} osd2; /* OS dependent 2 */
__le16 i_extra_isize;
__le16 i_pad1;
};
=========================================================================================
/*
* Structure of a directory entry
*/
#define EXT3_NAME_LEN 255
struct ext3_dir_entry {
__le32 inode; /* Inode number */ //айнод
__le16 rec_len; /* Directory entry length */ //
__le16 name_len; /* Name length */ //
char name[EXT3_NAME_LEN]; /* File name */
};
/*
* The new version of the directory entry. Since EXT3 structures are
* stored in intel byte order, and the name_len field could never be
* bigger than 255 chars, it's safe to reclaim the extra byte for the
* file_type field.
*/
struct ext3_dir_entry_2 {
__le32 inode; /* Inode number */ //порядковый номер inode файла
__le16 rec_len; /* Directory entry length */ //длина записи в байтах
__u8 name_len; /* Name length */ //имя файла
__u8 file_type;
char name[EXT3_NAME_LEN]; /* File name */ //длина имени файла
};
============================================================================================
struct ext3_super_block {
/*00*/ __le32 s_inodes_count; /* Inodes count */ //Количество дескрипторов
__le32 s_blocks_count; /* Blocks count */ //Количество блоков
__le32 s_r_blocks_count; /* Reserved blocks count */
__le32 s_free_blocks_count; /* Free blocks count */ //Количество свободных блоков
/*10*/ __le32 s_free_inodes_count; /* Free inodes count */ //Количество свободных дескрипторов
__le32 s_first_data_block; /* First Data Block */ //Первый блок данных
__le32 s_log_block_size; /* Block size */ //Размер блока
__le32 s_log_frag_size; /* Fragment size */ //Размер фрагмента
/*20*/ __le32 s_blocks_per_group; /* # Blocks per group */
__le32 s_frags_per_group; /* # Fragments per group */
__le32 s_inodes_per_group; /* # Inodes per group */
__le32 s_mtime; /* Mount time */ //Время монтирования
/*30*/ __le32 s_wtime; /* Write time */ //Время записи
__le16 s_mnt_count; /* Mount count */ //Количество раз монтирования
__le16 s_max_mnt_count; /* Maximal mount count */ //Максимальное количество раз монтирования
__le16 s_magic; /* Magic signature */
__le16 s_state; /* File system state */ //Состояние ФС
__le16 s_errors; /* Behaviour when detecting errors */
__le16 s_minor_rev_level; /* minor revision level */
/*40*/ __le32 s_lastcheck; /* time of last check */ //Время последней проверки
__le32 s_checkinterval; /* max. time between checks */ //Максимальное время между проверками
__le32 s_creator_os; /* OS */
__le32 s_rev_level; /* Revision level */
/*50*/ __le16 s_def_resuid; /* Default uid for reserved blocks */
__le16 s_def_resgid; /* Default gid for reserved blocks */
/*
* These fields are for EXT3_DYNAMIC_REV superblocks only.
*
* Note: the difference between the compatible feature set and
* the incompatible feature set is that if there is a bit set
* in the incompatible feature set that the kernel doesn't
* know about, it should refuse to mount the filesystem.
*
* e2fsck's requirements are more strict; if it doesn't know
* about a feature in either the compatible or incompatible
* feature set, it must abort and not try to meddle with
* things it doesn't understand...
*/
__le32 s_first_ino; /* First non-reserved inode */
__le16 s_inode_size; /* size of inode structure */ //Размер мтруктуры дескриптора
__le16 s_block_group_nr; /* block group # of this superblock */ Номер группы блока этого суперблока
__le32 s_feature_compat; /* compatible feature set */
/*60*/ __le32 s_feature_incompat; /* incompatible feature set */
__le32 s_feature_ro_compat; /* readonly-compatible feature set */
/*68*/ __u8 s_uuid[16]; /* 128-bit uuid for volume */
/*78*/ char s_volume_name[16]; /* volume name */
/*88*/ char s_last_mounted[64]; /* directory where last mounted */
/*C8*/ __le32 s_algorithm_usage_bitmap; /* For compression */
/*
* Performance hints. Directory preallocation should only
* happen if the EXT3_FEATURE_COMPAT_DIR_PREALLOC flag is on.
*/
__u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/
__u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */
__le16 s_reserved_gdt_blocks; /* Per group desc for online growth */
/*
* Journaling support valid if EXT3_FEATURE_COMPAT_HAS_JOURNAL set.
*/
/*D0*/ __u8 s_journal_uuid[16]; /* uuid of journal superblock */
/*E0*/ __le32 s_journal_inum; /* inode number of journal file */
__le32 s_journal_dev; /* device number of journal file */
__le32 s_last_orphan; /* start of list of inodes to delete */
__le32 s_hash_seed[4]; /* HTREE hash seed */
__u8 s_def_hash_version; /* Default hash version to use */
__u8 s_reserved_char_pad;
__u16 s_reserved_word_pad;
__le32 s_default_mount_opts;
__le32 s_first_meta_bg; /* First metablock block group */
__le32 s_mkfs_time; /* When the filesystem was created */
__le32 s_jnl_blocks[17]; /* Backup of the journal inode */
/* 64bit support valid if EXT4_FEATURE_COMPAT_64BIT */
/*150*/ __le32 s_blocks_count_hi; /* Blocks count */
__le32 s_r_blocks_count_hi; /* Reserved blocks count */ //Зарезервированные блоки
__le32 s_free_blocks_count_hi; /* Free blocks count */ //Количество сваободных блоков
__le16 s_min_extra_isize; /* All inodes have at least # bytes */
__le16 s_want_extra_isize; /* New inodes should reserve # bytes */
__le32 s_flags; /* Miscellaneous flags */
__le16 s_raid_stride; /* RAID stride */
__le16 s_mmp_interval; /* # seconds to wait in MMP checking */
__le64 s_mmp_block; /* Block for multi-mount protection */
__le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/
__u8 s_log_groups_per_flex; /* FLEX_BG group size */
__u8 s_reserved_char_pad2;
__le16 s_reserved_pad;
__u32 s_reserved[162]; /* Padding to the end of the block */
};
2.4 Выводы
В результате выполнения лабораторной работы была изучена работа с ФС UNIX система, также были рассмотрены несколько ФС, которые используются или использовались в системах UNIX, у всех у них есть есть свои плюсы и свои миинусы.