Линукс файлова система (Част 2)

Системни директории


В Линукс има два основи вида дялове (партишъни):

data partition: системните данни на Линукс. В повечето Линукс системи ID на дяла с данни е 83 (виж изхода от командата fdisk: https://dreamlandpoly.blogspot.com/p/linux-file-system-1.html#fdisk-l).

swap partition: разширение на компютърната физическа памет, допълнителна памет от твърдия диск (използването ѝ е по-бавно, отколкото реалната памет на компютъра). Размерът на SWAP дяла обикновено е 2 пъти размера на RAM паметта на компютъра. В повечето Линукс системи ID на swap дяла е 82 (виж изхода от командата fdisk: https://dreamlandpoly.blogspot.com/p/linux-file-system-1.html#fdisk-l).

При сървърите задължително се създават повече партишъни с данни и swap дялове.

Системните директории съдържат файлове, приложения, скриптове, които са нeобходими за работа и управление на Линукс. Те се създават автоматично по време на инсталация на операционната система. От изхода на командата fdisk -l: https://dreamlandpoly.blogspot.com/p/linux-file-system-1.html#fdisk-l се вижда, че root директорията на файловата система е монтирана в блоково устройство sda4.

Как да получа информация за mime типа на блоковото устройство и поддиректориите, които се съдържат в root директорията?

В терминала въвеждам:

file -i /dev/sda4 && ls -l /

Изход от командата file -l

Изход от командата stat

Основните системни поддиректории на root директорията (/) са: /mnt, /var, /etc, /usr, /dev, /tmp, /home, /boot (няма да изброявам всички) и схематично могат да се представят така:

Системни директории
Системни директории в Линукс

Ще разгледам директория /home. За целта, в терминала въвеждам:

file -i /home && ls -li /home
Директория /home

Какво научавам за поддиректория /home?

MIME type: inode:directory;
charset: binary;
inode: 1067647
общ брой блокове: 4;
съдържа една поддиректория: poli
брой твърди линкове към директорията: 52
собственик и група: poli poli
дължина на файла в байтове: 4096
последна модификация: 2 декември, 20:21
име на директорията: poli
Таблица-1: Описание на общите системни директории
Директория/Поддиректория Описание
/ Главна директория в Линукс. Всички останали файлове и директории се създават и управляват под тази директория. Размерът ѝ обикновено е 100-500 MB. Стандартната инсталация изисква около 250 MB дисково пространство. Съдържа системните конфигурационни файлове, повечето основни команди и сървърни програми, системни библиотеки, временни файлове и директорията на административно създадения потребител.
/home Подразбиращата се директория за потребителските данни. Винаги, когато добавим нов потребител, Линукс автоматично създава домашна директория с името на потребителя. При вход на потребител в системата, Линукс стартира сесия от тази директория.
/boot Съдържа файловете, необходими за зареждане на операционната система.
/bin Съдържа файловете за стандартните команди. Командите, съхранени в тази директория са налични за всички потребители и обикновено не се изискват специални позволения, за да се стартират.
/dev Съдържа файловете за устройствата, отговарящи на хардуера. Те се генерират автоматично от системата и никога не се налага редактирането им.
/mnt Служи като точка за монтиране на отдалечени файлови системи и външни устройства като СD, DVD, дигитална камера и др.
/var Съхранява данни за системните програми, променливите на средата.
/usr Съдържа приложенията, инсталирани от потребителя, документацията към тях и библиотеките за програмните езици.
/tmp Тук се съхраняват временните файлове, създадени от системата и потребителите.
/lost+found Съдържа файловете, съхранени по време на срив на системата.
/proc Виртуална файлова система, съдържаща информация за системните процеси и системните ресурси.
/lib Споделени библиотеки и модулите на ядрото.
/opt Софтуерни пакети на допълнителни приложения, инсталирани в Линукс.
/sbin Основни системни бинарни файлове (Файлове на основни програми на операционната система).
/srv Данни за услугите, доставяни от системата.
/media Служи като точка за монтиране на сменяеми носители.

Блокова структура на файловата система

Всеки дял (партишън) от диска има собствена файлова система. Всяка файлова система съдържа:

Блокова структура на файловата система
  • boot сектор (MBR, EFI (или UEFI)) – разположен е в първите няколко сектора на файловата система. Съдържа програмата, необходима за зареждане на операционната система и таблица с партишъните върху твърдия диск. Размерът му е 512 байта.
  • superblock – описва състоянието на файловата система (общ размер на партишъните, размер на блоковете, указатели към свободни блокове, inode номера на root директорията и др.). Всяка файлова система си има суперблок, който съдържа следната информация: Тип файлова система, размер, статус (монтирана или не, други метаданни). Линукс държи множество копия на файловата система, което е много важно в случай на срив на системата, например. Тези копия могат да се ползват за ресторване на състоянието на първичния суперблок, например. Информация за първичния суперблок и резервните му копия, можем да получим чрез командата:

    sudo dumpe2fs /dev/sda4 | grep -i superblock
    Supperblock

Други полезни команди: e2fsck, tune2fs, dumpe2fs ...

  • inodes – Всеки обект от файловата система се представя с неговия inode номер, който съдържа метаданни за обект от файловата система и указател към блоковете от файловата система, които съдържат данните от обекта, но не името му.

    Метаданните за обект включват:

    собственик на файла
    група, собственик на файла;
    позволения;
    флагове за тип на файла – обикновен файл, директория, специално устройство, pipe ...;
    размер (за обикновените файлове) и major и minor номер на устройството (за специалните устройства);
    номер на блока, където е съхранен;
    време за достъп;
    време на промяна;
    време на изтриване;
    брой линкове към файла (aliases);
    фрагменти;
    версия;
    разширени атрибути;
    адрес, определящ актуалната локация на файла;
    access control list (ACL) има ли поставен setuid (sticky) bit.

Как да получа inode номера на файл или директория?

Чрез командите

ls -i [път до файла/директорията]

или

stat [път до файла/директорията]

По-горе съм дала примери: Пример

Как да изтрия файл чрез неговия inode номер?

find . -inum [inode number] -exec rm -i {} \;

Шел (Shell)

Шелът е командния интерпретатор. Той взема командата/ите, въведени от потребителя, преобразува ги в двоичен код, подава ги на ядрото и извежда резултата:

Shell-command-interpreter-environment

Шелът поддържа I/O (Вход/Изход) пренасочване, което означава, че може да чете команди от нестандартни източници, като например скриптове. Шелът може да пренасочва изхода към външни устройства – принтери, сървъри за данни и т.н.

За да получа информация за всички налични шелове в системата, в терминала въвеждам:

cat /etc/shells
File-/etc/shells

Файлът /etc/shells съдържа пълните пътища до валидните шелове при лог в системата. Ако път до даден шел не съществува в този файл, нямаме достъп до него.

За да получа информация за текущия шел, в терминала въвеждам:

echo $SHELL && echo $0
Bash-shell

За временна промяна на текущия шел (при следващо влизане в системата, подразбиращият се шел ще се възстанови):

exec /bin/sh

За постоянна промяна на шела (необходим е рестарт след изпълнение на командата в терминала):

chsh –s /bin/sh

Ядро на операционната система (Kernel)

Ядрото е сърцето на операционната система. То комуникира директно със системните устройства - памет, CPU, CDROM, твърд диск и др. Когато потребителят иска да получи достъп до някое системно устройство, въвежда команда в шела, който интерпретира командата и я подава в двоичен вид към ядрото, което я изпраща от своя страна към хардуера. Информацията достига до потребителя по обратния път.



Работа с файлове:
https://dreamlandpoly.blogspot.com/p/files-1.html

Работа с директории:
https://dreamlandpoly.blogspot.com/p/directories-1.html

Няма коментари:

Публикуване на коментар