Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800521

.pdf
Скачиваний:
3
Добавлен:
01.05.2022
Размер:
4.21 Mб
Скачать

диска в linux, удаление и создание раздела linux, в терминале с помощью утилиты parted. Сначала рассмотрим саму команду parted.

СИНТАКСИС PARTED

Синтаксис parted выглядит следующим образом: $ parted [опции] устройство [команда]

В квадратных скобках указанны необязательные аргументы.

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

устройство — жесткий диск с которым будет работать программа.

команда — действие которое нужно выполнить над жестким диском.

ОПЦИИ И КОМАНДЫ PARTED

У parted всего несколько опций и огромное количество команд.

Вот опции:

-h — вывести справку о программе

-v — вывести версию программы

-s — скриптовый режим, программа работает без запросов к пользователю

-i — интерактивный режим, пользователь вводит команды в интерактивном режиме. По умолчанию программа работает в этом режиме.

Команд не очень много, но даже помнить их все вовсе не обязательно. Рассмотрим только те, которые нам пригодятся в сегодняшних примерах:

help команда — помощь по выбранной команде

mkpart тип раздела файловая система начало конец — создание раздела linux с файловой системой начиная

спозиции начало заканчивая конец, два последних параметра задаются в мегабайтах по умолчанию

41

mktable тип — создать таблицу разделов

print — отобразить таблицу разделов

quit — выйти

resize раздел конец — изменить размер раздела

rm раздел — удалить раздел

select раздел — установить раздел как текущий

set раздел флаг состояние — установить флаг для раздела. Состояние может быть on (включен) или off(выключен)

Раньше поддерживались также опции работы с файловой системой mkfs, check, mkpartfs но начиная с версии 2.4 они были удаленны.

РАЗМЕТКА ДИСКА В LINUX

Во всем, что вы изучаете нужна практика и работа с жесткими дисками linux не исключение. Но практиковаться на реальном диске, рискуя повредить файловую систему не совсем правильно, а создавать виртуальную машину для таких целей слишком непрактично. Но есть решение. В Linux все есть файлами, и жесткий диск в том числе тоже представлен в виде файла. Из этого выплывает интересная возможность. Мы можем использовать обычный файл вместо жесткого диска для своих экспериментов.

Создадим себе тестовый полигон командой:

dd if=/dev/zero of=/disk.iso bs = 1 count=0 seek=2G

Таким образом, мы получим файл размером 2 гигабайта, заполненный нулями, с которым можно спокойно работать. Запустим parted, передав ему вместо устройства наш файл чтобы дальше была выполнена разбивка жесткого диска linux:

parted /disk.iso

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

42

Рис. 3.1. disk.iso

Пока созданный диск пуст. Нужно создавать новую таблицу разделов. Для этого воспользуемся командой mktable: mktable gpt

Рис. 3.2 mktable

Mы создали таблицу разделов типа gpt, но можно выбрать одну из этих: aix, amiga, bsd, dvh, gpt_sync_mbr, gpt, mac, msdos, pc98, sun, loop

Теперь давайте создадим новый раздел с файловой системой ext4 размером 400 мегабайт. Для этого есть команда mkpart, как вы помните ей нужно передать три параметра: тип раздела, файловую систему и координаты. Тип раздела может быть: primary, logical, extended (первичный, логический и расширенный).

В gpt можно создавать нужное количество первичных разделов и не задумываться об их типе. Это все было создано для MBR, в этой таблице есть ограничение на количество первичных разделов — только четыре. Поэтому приходилось создавать три первичных и один расширенный, в который вкладывались уже сколько нужно логических.

Ну так вот, создаем первичный: mkpart primary ext4 1 400М

43

Поскольку это первый раздел, начинаем мы с одного (первый мегйбайт зарезервирован), а заканчиваем нужным нам размером — 400 мегабайт.

Смотрим список разделов еще раз: print

Рис. 3.3. print

Создадим еще несколько разделов, например для коня системы и для домашней папки:

mkpart disk_1 ext4 400 1000M mkpart disk_2 ext4 1000M -0M

Параметр -0 означает вести отсчет от конца раздела, таким образом будет занято все доступное пространство под третий раздел. Смотрим что получилось:

Рис. 3.4. Параметр -0

44

Работа с диском в Linux осуществляется по их номерах. Давайте уменьшим последний раздел и создадим после него

еще один:

 

 

 

 

resize 3 1600

 

 

 

А теперь создаем:

 

 

 

mkpart primary ext4 1600M -0M

 

Смотрим:

 

 

 

print

 

 

 

 

Number

Start End

Size

File system

Name Flags

1

17,4kB

400MB

398MB

primary

2

400MB

1000MB

600MB

disk_1

3

1000MB

1600MB

600MB

disl_2

4

1600MB 2147MB 547MB

disk_3

Удалим только что созданный четвертый раздел: rm 1

Зададим метки для существующих разделов с помощью команды name:

name 1 boot name 2 root name 3 home

Вот в принципе и все. Разбивка диска на разделы Linux завершена. Теперь вы знаете достаточно информации чтобы не потеряться в случае, если окажетесь без доступа к графическому интерфейсу и вам понадобится разбивка жесткого диска linux.

45

3.5.Контрольные вопросы

1.Типы устройств

2.Работа с устройствами

3.Статическая организация каталога /dev

4.Процесс работы в статической организации каталога

/dev

5.Динамическая организация каталога DevFS

6.Файловая система в DevFS

7.UDEV. Основные сведения

46

4.КЭШИРОВАНИЕ

В Linux применяется следующее основное правило: неиспользуемая страница оперативной памяти считается потерянной памятью. Оперативная память тратится не только для данных, используемых прикладными приложениями. В ней также хранятся данные для самого ядра и, самое главное, в эту память могут отображаться данные, хранящиеся на жестком диске, что используется для супер-быстрого к ним доступа

Сохранение кэша означает, что, если кому-нибудь еще раз потребуются те же самые данные, то есть большая вероятность, что они все еще будут находиться в кэше в оперативной памяти.

Страничный кэш в системе Linux является в большинстве систем самым крупным потребителем памяти. Каждый раз, когда выполняется операция чтения read () из файла, расположенного на диске, данные считываются в память и помещаются в страничный кэш. После того, как операция read () завершается, ядро может просто выбросить страницу памяти, так как она не используется. Однако, если выполнить во второй раз операцию чтения той же самой части файла, данные будут считываться непосредственно из памяти и обращения к диску не будет. Это невероятно ускоряет работу и, поэтому, в Linux так интенсивно используется кэширование страниц: ставка делается на то, что если однажды было обращение к некоторой странице дисковой памяти, то вскоре обращение к ней снова повторится.

4.1.Dentry/inode caches

Каждый раз, когда в файловой системе выполняется операция ls (или любая другая операция: open (), stat () и т.д.), ядру требуются данные, которые находятся на диске. Ядро анализирует эти данные, находящиеся на диске, и помещает

47

его в некоторых структуры данных, независимые от файловой системы, с тем, чтобы они могли в различных файловых системах обрабатываться одним и тем же образом. Таким же самым образом, как кэширование страниц в приведенных выше примерах, ядро может после того, как будет завершена команда ls, стереть эти структуры. Тем не менее, делается такое же предположение, как и раньше: если однажды считались данные, то они обязательно прочитаются еще раз. Ядро хранит эту информацию в нескольких местах, которые называются кэш памятью dentry и inode. Кэш память dentries является общей для всех файловых систем, но каждая файловая система имеет свой собственный кэш inodes. Эта оперативная память является в meminfo составной частью Slab

Просмотреть различную кэш память и узнать ее размеры возможно с помощью следующей команды:

head -2 /proc/slabinfo; cat /proc/slabinfo | egrep dentry\|inode

4.2.Buffer Cache

Кэш буфера является близким родственником кэш памяти dentry/inode. Данные dentries и inodes, размещаемые в памяти, представляют собой описание структур на диске, но располагаются они по-разному. Это связано с тем, что в копии, расположенной в памяти, используется такая структура, как указатель, но на диске ее нет. Может также случиться, что на диске байты будут располагаться не в том порядке, как это нужно процессору.

4.3. Отображение памяти в команде top: VIRT,

RES и SHR

Если запустить команду top, то строки VIRT, RES и SHR будут описывать использование памяти.

48

VIRT является сокращением от virtual size of a process

(виртуальный размер процесса) и представляет собой общий объем используемой памяти: памяти, отображаемой самой в себя (например, памяти видеокарты для X-сервера), файлов на диске, которые отображаются в память (особенно это касается разделяемых библиотек) и памяти, разделяемой совместно с другими процессами. Значение VIRT указывает, сколько памяти в настоящий момент доступно программе.

RES является сокращением от resident size (размер резидентной части) и является точным указателем того, сколько в действительности потребляется процессом реальной физической памяти. (Что также соответствует значению, находящемуся непосредственно в колонке %MEM). Это значение практически всегда меньше, чем размер VIRT, т.к. большинство программ зависит от библиотеки C.

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

4.4.Подкачка памяти (swap)

Что происходит, когда больше нет свободной оперативной памяти? Прежде всего, ядро пытается не допустить, чтобы значение свободной оперативной памяти приближалось к 0 байтов. Это связано с тем, что когда нужно освободить оперативную память, то обычно требуется выделить немного больше памяти. Это обусловлено тем, что ядру требуется своего рода «рабочее пространство» для

49

выполнения своих действий, и поэтому, если размер свободной оперативной памяти становится равным нулю, ядро ничего больше сделать не сможет.

На основании общего объема оперативной памяти и соотношения ее различных типов (память high/low), ядро эвристически определяет то количество памяти в качестве рабочего пространства, при котором оно чувствует себя комфортно. Когда эта величина достигается, ядро начинает возвращать память для других различных задач.

Как только ядро принимает решение, что ему не требуется получать память из каких-либо других источников, которые мы описывали ранее, оно запускает память подкачки swap. В ходе этого процесса оно получает данные пользовательских приложений и записывает их в специальное место (или места) на диске. Это происходит не только тогда, когда оперативная память близка к заполнению, ядро может принять решение перенести в память swap также данные, находящиеся в оперативной памяти, если они некоторое время не использовались.

По этой причине, даже система с огромным количеством оперативной памяти может использовать память подкачки swap. Есть много страниц памяти, в которых находятся данные пользовательских приложений, но эти страницы используются редко. Все это является причиной, чтобы перенести их в раздел swap и использовать оперативную

память для других целей.

команды free

 

 

С

 

помощью

можно проверить,

используется ли память swap:

 

 

xfalcon@ubuntu:~$ free

 

 

 

 

total

used

free

shared

buff/cache

 

available

 

 

 

Mem:

2027048

1503420

83056

55700

440572

266276

 

 

 

Swap:

2094076

362988 1731088

 

50