Skip to content

Latest commit

 

History

History
143 lines (95 loc) · 5.64 KB

File metadata and controls

143 lines (95 loc) · 5.64 KB

Лабораторная 2

Рейнгеверц - K33401

Установленно

yum install tree
  • Использовался CentOS

Задание 1

Запуск скрипта создающего файловую структуру

script.sh

# Create directory structure
mkdir -p dir_parent/dir_current/dir_child && cd dir_parent
touch dir_current/orig_file
# Create soft links
ln -s dir_current/orig_file dir_current/sl_file
ln -s dir_current/orig_file dir_current/pdsl_file
ln -s dir_current/orig_file dir_current/dir_child/cdsl_file
# Create hard links
ln dir_current/orig_file dir_current/hl_file
ln dir_current/orig_file dir_current/pdhl_file
ln dir_current/orig_file dir_current/dir_child/cdhl_file
# Draw directory tree
cd ..
tree dir_parent

Выводы

Для нахождения мягких ссылок использовалась следующая команда

ls -lR dir_parent/ | grep ^l

Она рекурсивно проходится dir_parent и следует по символическим ссылкам. В выводе фильтруются только они.

Для нахождения жестких ссылок использовалась другая команда

find . -samefile dir_parent/dir_current/orig_file

Основана она на том, что у жестких ссылок и у оригинального файла одинаковое содержимое (они ссылаются на тот же inode)

Задание 2

Запуск скрита создающего образ диска и файловую систему на нем

script2.sh

# Create image of floppy disk
dd if=/dev/zero of=img.1440 bs=1k count=1440
mkfs img.1440
su -c 'mount -t ext2 -o loop=/dev/loop0 img.1440 /mnt'
# Create new file
touch myfile
# Create hard and soft links
su -c 'ln myfile /mnt/hard_link'
su -c 'ln -s myfile /mnt/soft_link'

Сначала команда mount выдавала ошибку mount: /root/img.1440: failed to setup loop device: No such file or directory

Но вроде как ее получилось пофиксить монтированием loop устройства

modprobe loop

lsmod | grep lopo
#> loop           28072  2

Но после этого ошибку начала выдавать команда ln

Мол пути находятся на разных разделах диска

Так как это огранчение специфичное для жестких ссылок, в итоге получилось создать только символическую ссылку

Выводы

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

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

Отличительным достоинством жесткой ссылки (на Windows) является то, что она автоматически обновляется при перемещении ее файла

Задание 3

Были выполнены следующие команды

ZmsbqWZ.png

И было обнаружено что создание 174 пустых файлов на флоппи диске тратит все доступные inode

Выводы

Найдите решение (предотвращение) проблемы заканчивающихся inode (например, на этапе создания ФС)

What to do when a Linux system is running out of available inodes | Ctrl blog

Убедится в этом можно выполнив следующую команду: SUnFizs.png

Для того чтобы увеличить количество inodes, можно пересоздать файловую систему, указав желаемое количество inodes

script3.sh

umount /dev/loop0

# Create image of floppy disk
dd if=/dev/zero of=img.1440 bs=1k count=1440
# Set inode count to 10000
mkfs -N 10000 img.1440
su -c 'mount -t ext2 -o loop=/dev/loop0 img.1440 /mnt'

После выставления файловой системе 10000 inode'ов

mEIkrx1.png

Это работает для файловых систем ext2-4 (inode выставляются только на этапе mkfs)

В файловых системах ntfs, fat, zfs и reiserfs нет inode в принципе

В "современных" файловых системах (btrfs, XFS) используются динамические inode'ы (inode'ы аллоцируются по мере создания файлов)