Журнал LinuxFormat - перейти на главную

LXF163: Руб­ри­ка си­сад­ми­на

Материал из Linuxformat
Перейти к: навигация, поиск

По рецептам доктора Брауна

chris.linuxformat@gmail.com

(thumbnail)
Д-р Крис БраунДоктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.

Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние из при­чуд­ли­вых за­во­ро­тов ки­шок сер­вер­ной

Содержание

Не ку­пи­те ли /22?

2012-й мо­жет стать го­дом, когда исчерпают­ся IP-ад­ре­са.

Что об­ще­го у пло­ща­ди тро­пи­че­­ских ле­сов на планете и ко­ли­че­­ст­ва доступ­ных ад­ре­сов IPV4? От­вет: (1) и то, и дру­гое та­ет, (2) и то, и дру­гое опас­но бли­зит­ся к ну­лю и (3) чис­ло тех, кто принима­ет контр­ме­ры, недоста­точ­но.

Вы­де­ление IP-ад­ре­сов про­ис­хо­дит по ие­рар­хи­че­­ской пи­ще­вой це­поч­ке. В ее на­ча­ле IANA [аме­ри­кан­ская неком­мер­че­­ская ор­ганиза­ция, управ­ляю­щая про­стран­ст­ва­ми IP-ад­ре­сов Ин­тернета, – прим. пер.] вы­да­ет бло­ки ад­ре­сов пя­ти ре­гио­наль­ным ре­ги­ст­ра­то­рам Ин­тернета, а те, в свою оче­редь, локаль­ным ре­ги­ст­ра­то­рам, та­ким как про­вай­де­ры и универ­си­те­ты.

Не выделенные адреса
Регистратор Регион Осталось блоков на /8
AfriNIC Африка 4.18
APNIC Азия и Океания 0.92
ARIN Северная Америка 3.17
LACNIC Южная Америка 3.43

В фев­ра­ле 2011 го­да IANA вы­де­ли­ла ре­гио­наль­ным ре­ги­ст­ра­то­рам пять по­следних бло­ков /8. Ко­ли­че­­ст­во бло­ков, остав­ших­ся у них на мо­мент на­пи­сания ста­тьи, при­ве­де­но в таб­ли­це внизу. Все­го это составляет око­ло 200 мил­лио­нов ад­ре­сов. Вро­де и мно­го, но на прак­ти­ке – хва­тит лишь на несколь­ко ме­ся­цев. Мы нау­чи­лись бо­лее эко­ном­но рас­хо­до­вать ад­ре­са IPV4, на­при­мер, с по­мо­щью NAT, а про­вай­де­ры да­же на­слаи­ва­ют уст­рой­ст­ва NAT, что­бы вы­га­дать на диа­па­зо­нах ад­ре­сов. Но NAT всегда бы­ли при­шлеп­кой, раз­ру­шав­шей ба­зо­вую кон­цеп­цию Ин­тернета о пря­мой ад­ре­са­ции ка­ж­до­го уз­ла. Кста­ти, неко­то­рые на­зна­чен­ные, но не ис­поль­зуе­мые диа­па­зо­ны ад­ре­сов мож­но восста­но­вить и на­зна­чить сно­ва, от­ло­жив пол­ное ис­то­щение за­па­сов еще на ка­кое-то вре­мя. Ин­те­рес­но, ско­ро ли бло­ки ад­ре­сов IPV4 нач­нут про­да­вать на eBay?

Но на­стоя­щее ре­шение – про­то­кол IPV6. С дли­ной ад­ре­са в 128 бит он по­зво­ля­ет по­лу­чить 3,4 × 10^38 ад­ре­сов. Это поч­ти по 60 мил­лио­нов на ка­ж­дую бак­те­ри­аль­ную клет­ку планеты. Linux, как и мно­гие круп­ные сай­ты, под­дер­жи­ва­ет се­те­вой стек IPV6 уже несколь­ко лет, но про­вай­де­ры не спе­шат пре­доста­вить со­от­вет­ст­вую­щие сер­ви­сы. Хо­те­лось бы знать, мно­гие ли из вас поль­зу­ют­ся внут­ренними се­тя­ми IPV6, и мно­гим ли про­вай­де­ры обе­ща­ли под­держ­ку IPV6 в бу­ду­щем. На­пи­ши­те мне на chris.linuxformat@gmail.com.

Итак, вы хо­ти­те стать си­сад­ми­ном?

Тре­тья часть се­рии, ко­то­рая пре­вра­тит вас из но­вич­ка в звез­ду сис­тем­но­го ад­ми­ни­ст­ри­ро­ва­ния. На этот раз го­во­рим об управ­ле­нии же­ст­ки­ми дис­ка­ми.

Ме­сяц на­зад мы на­страи­ва­ли IP-се­ти на сер­ве­рах Linux. Те­перь рас­смот­рим осно­вы управ­ления хранили­ща­ми. Для на­ча­ла до­ба­вим пустой но­вый диск, ра­зо­бьем его на раз­де­лы, соз­да­дим на них фай­ло­вые сис­те­мы и под­клю­чим их к де­ре­ву фай­ло­вой сис­те­мы Linux.

Во всех стать­ях этой се­рии мы поль­зу­ем­ся CentOS 6.2. Ес­ли вы хо­ти­те сле­до­вать за мной (что я силь­но со­ве­тую), уста­но­ви­те CentOS (мож­но и в вир­ту­аль­ную ма­ши­ну) в со­от­вет­ст­вии с опи­санием из пер­вой ста­тьи.

Од­но из досто­инств обу­чения на вир­ту­аль­ной ма­шине в том, что в ней лег­ко до­ба­вить но­вые дис­ки, не при­бе­гая ни к от­верт­ке, ни к кре­дит­ной кар­те. И в VMWare Workstation, и в VirtualBox есть про­стой мас­тер до­бав­ления но­во­го обо­ру­до­вания. Мой об­раз за­пу­щен в VirtualBox. Из­на­чаль­но в нем был один вир­ту­аль­ный же­ст­кий диск на 20 ГБ (Linux зна­ет его как /dev/sda), по­это­му начнем с до­бав­ления вто­ро­го вир­ту­аль­но­го дис­ка объ­е­мом 10 ГБ; он по­лу­чит имя /dev/sdb. За­тем мы соз­да­дим на нем два раз­де­ла: один для /home, а вто­рой для но­вой спе­ци­аль­ной пап­ки, ко­то­рую мы на­зо­вем /bigdata. Конеч­но, 10 ГБ по нынешним стан­дар­там ме­лочь. Их доста­точ­но для ил­лю­ст­ра­ции идеи (в чем и со­сто­ит на­ша цель), но в ре­аль­ном ми­ре к этим циф­рам нуж­но при­пи­сать еще па­ру ну­лей.

Про­ве­ря­ем, что это ра­бо­та­ет

В VirtualBox я до­ба­вил 10-ГБ диск к кон­трол­ле­ру SATA. По­сле за­груз­ки сис­те­мы сто­ит про­ве­рить, что яд­ро об­на­ру­жи­ло но­вое уст­рой­ст­во. Поскольку уст­рой­ст­во вир­ту­аль­ное, то вряд ли оно не бу­дет ра­бо­тать, но мы все-та­ки про­ве­рим. Для это­го по­лу­чим со­дер­жи­мое бу­фе­ра со­об­щений яд­ра ко­ман­дой dmesg, вы­де­лив нуж­ные за­пи­си с по­мо­щью grep:

$ dmesg | grep SCSI

SCSI subsystem initialized

sd 3:0:0:0: [sdb] Attached SCSI disk

sd 2:0:0:0: [sda] Attached SCSI disk

Для по­лу­че­ния под­роб­но­стей про sdb по­про­буй­те ввести сле­дую­щую команду:

$ dmesg | grep sdb

sd 3:0:0:0: [sdb] 20971520 512-byte logical blocks: (10.7 GB/10.0 GiB)

sd 3:0:0:0: [sdb] Write Protect is off

sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00

sdb: unknown partition table

sd 3:0:0:0: [sdb] Attached SCSI disk

За­меть­те, что яд­ро вер­но ото­бра­жа­ет объ­ем дис­ка, но жа­лу­ет­ся на таб­ли­цу раз­де­лов – и неуди­ви­тель­но, по­то­му что ее на дис­ке еще нет.

Еще один спо­соб про­ве­рить, что диск рас­по­знан – вы­вес­ти спи­сок со­от­вет­ст­вую­щих уст­ройств:

$ ls -l /dev/sd*

brw-rw----. 1 root disk 8, 0 Jul 19 22:15 /dev/sda

brw-rw----. 1 root disk 8, 1 Jul 19 14:31 /dev/sda1

brw-rw----. 1 root disk 8, 2 Jul 19 14:30 /dev/sda2

brw-rw----. 1 root disk 8, 16 Jul 19 22:15 /dev/sdb

Здесь мы ви­дим, что на пер­вом дис­ке (sda) есть два раз­де­ла, а на вто­ром их нет. С это­го мо­мен­та для вы­полнения боль­шин­ст­ва команд вам нуж­но вой­ти в сис­те­му от имени суперпользователя-root. Будь­те осто­рож­ны! Мож­но сра­зу соз­дать фай­ло­вую сис­те­му на це­лом дис­ке, но обыч­но спер­ва соз­да­ют­ся раз­де­лы, а за­тем на них по­ме­ща­ют­ся фай­ло­вые сис­те­мы. Су­ще­ст­ву­ет несколь­ко ути­лит для раз­биения дис­ка на раз­де­лы – неко­то­рые опи­са­ны ниже в таб­ли­це. Я бу­ду кон­сер­ва­то­ром и вы­бе­ру fdisk. Да, она неук­лю­жа, но осво­ив ее, поль­зо­вать­ся ею до­воль­но про­сто. На­ши дей­ст­вия по соз­данию раз­де­лов по­ка­за­ны на ри­сун­ке на стр. 58 – то, что вво­дит поль­зо­ва­тель, вы­де­ле­но крас­ным. Прой­дем­ся по ним шаг за ша­гом:

Ути­ли­ты для раз­бие­ния дис­ка
fdisk Ути­ли­та ко­манд­ной стро­ки, не­ук­лю­жая, но на­деж­ная. По­ни­ма­ет толь­ко тра­ди­ци­он­ные таб­ли­цы раз­де­лов MSDOS.
cfdisk Воз­мож­но­сти ана­ло­гич­ны fdisk, но ин­тер­фейс – гра­фи­че­ский, за­пус­кае­мый из тер­ми­на­ла.
parted Бо­лее со­вре­мен­ная ути­ли­та, спо­соб­ная соз­да­вать раз­де­лы раз­лич­ных ти­пов. В ча­ст­но­сти, уме­ет соз­да­вать таб­ли­цы раз­де­лов GPT, тре­буе­мые для дис­ков свы­ше 2 ТБ.

» В команд­ной стро­ке за­пустим fdisk, ука­зав имя но­во­го дис­ка как ар­гу­мент. Здесь луч­ше обой­тись без опе­ча­ток!

» По­про­сим fdisk соз­дать но­вый раз­дел (n), ко­то­рый дол­жен был пер­вич­ным (p). По­же­лай мы на дис­ке боль­ше че­ты­рех раз­де­лов, при­шлось бы зна­ко­мить­ся с рас­ши­рен­ны­ми и ло­ги­че­­ски­­ми раз­де­ла­ми, но это не наш слу­чай.

» У нас спро­сят но­мер пер­во­го ци­лин­д­ра. Про­сто при­мем зна­чение по умол­чанию – 1, что­бы наш раз­дел по­пал в на­ча­ло дис­ка.

» У нас спро­сят но­мер по­следнего ци­лин­д­ра. Вме­сто но­ме­ра ци­лин­д­ра мож­но ука­зать раз­мер раз­де­ла (5G – это 5 ГБ). Кста­ти, ес­ли вам ин­те­рес­но, что та­кое ци­линдр, то на за­ре эпо­хи же­ст­ких дис­ков так на­зы­ва­лись все до­рож­ки за­дан­но­го ра­диу­са (на всех дис­ках), т. е. ци­линдр – это область диска, доступ­ная из дан­но­го по­ло­жения счи­ты­ваю­щих го­ло­вок. В со­вре­мен­ных дис­ках но­ме­ра ци­лин­д­ров име­ют ма­ло об­ще­го с фи­зи­че­­ской гео­мет­ри­ей дис­ка, и ци­линдр сле­ду­ет счи­тать единицей вы­де­ляе­мых дан­ных. fdisk со­об­щит вам чис­ло байт в ци­лин­д­ре для ва­ше­го дис­ка.

» По­вто­рим эти дей­ст­вия для соз­дания вто­ро­го раз­де­ла, но на сей раз для но­ме­ров пер­во­го и по­следнего ци­лин­д­ра про­сто при­мем зна­чения по умол­чанию. По­это­му наш вто­рой раз­дел начнет­ся сра­зу по­сле пер­во­го и про­дол­жит­ся до кон­ца дис­ка.

» Те­перь вы­ве­дем таб­ли­цу раз­де­лов (p) и про­ве­рим, что она вы­гля­дит так, как мы ожи­да­ем. Зна­чения па­ра­мет­ров Start [на­ча­ло] и End [Конец] опять же за­да­ют­ся как но­ме­ра ци­лин­д­ров.


» На­конец, за­пи­шем таб­ли­цу раз­де­лов на диск (w). До это­го на диск ниче­го не пи­са­лось, а те­перь уже на­ста­ла точ­ка невоз­вра­та. Кста­ти, parted за­пи­сы­ва­ет из­менения на диск неза­мед­ли­тель­но, а зна­чит, менее тер­пи­ма к опе­чат­кам.

Мы вновь в команд­ной стро­ке. Про­ве­рим, что яд­ро зна­ет о на­ших но­вых раз­де­лах:

# cat /proc/partitions

major minor #blocks name

8 0 20971520 sda

8 1 10240000 sda1

8 2 1024000 sda2

8 16 10485760 sdb

8 17 5253223 sdb1

8 18 5229157 sdb2

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

Соз­да­ем фай­ло­вую сис­те­му

(thumbnail)
Файл — про­сто ме­та­фо­ра хра­ни­ли­ща, но за ней ле­жит не­сколь­ко сло­ев ре­аль­но­сти.

Мож­но ли те­перь за­пи­сы­вать фай­лы на но­вый диск? Не со­всем: на ка­ж­дом из раз­де­лов на­до соз­дать пустую фай­ло­вую сис­те­му. Linux под­дер­жи­ва­ет боль­шой диа­па­зон фай­ло­вых сис­тем, но са­мый по­пу­ляр­ный ва­ри­ант на дан­ный мо­мент – ext4.

Мож­но соз­дать фай­ло­вые сис­те­мы на на­ших но­вых двух раз­де­лах так:

# mkfs.ext4 -L /home /dev/sdb1
# mkfs.ext4 -L /bigdata /dev/sdb2

Для опе­ча­ток опять же не вре­мя – по­ста­рай­тесь не пе­ре­фор­ма­ти­ро­вать раз­дел, где уже имеется фай­ло­вая сис­те­ма! От­ме­тим, что ко­ман­да mkfs по ме­ре сво­ей ра­бо­ты вы­ве­дет под­роб­ный от­чет о па­ра­мет­рах фай­ло­вой сис­те­мы (здесь я его не при­вел). Я дал двум фай­ло­вым сис­те­мам мет­ки /home и /bigdata. Это про­сто тек­сто­вые стро­ки, но я сле­дую со­гла­шению, по ко­то­ро­му в ка­че­­ст­ве мет­ки ис­поль­зу­ет­ся имя точ­ки мон­ти­ро­вания. Поз­же вы пой­ме­те, по­че­му.

Эти фай­ло­вые сис­те­мы не со­всем пусты. На них есть ка­та­лог lost+found, ко­то­рый ис­поль­зу­ет­ся про­грам­мой fsck (про­ве­ряю­щей це­ло­ст­ность фай­ло­вой сис­те­мы), ес­ли на дис­ке най­дут­ся фай­лы, ли­шен­ные ссыл­ки. Это­го мо­жет не про­изой­ти никогда, но со­ве­тую тем не менее оста­вить этот ка­та­лог в по­кое. При уда­лении его мож­но воссоз­дать ко­ман­дой mklost+found.

Пре­ж­де чем поль­зо­вать­ся но­вы­ми фай­ло­вы­ми сис­те­ма­ми, нуж­но сде­лать еще од­ну вещь: смон­ти­ро­вать их в де­ре­во фай­ло­вой сис­те­мы. У ка­ж­до­го раз­де­ла долж­на быть точ­ка мон­ти­ро­вания – ка­та­лог, к ко­то­ро­му она под­клю­ча­ет­ся. На­звав раз­дел bigdata, соз­да­дим ему но­ве­хонь­кую точ­ку мон­ти­ро­вания:

# mkdir /bigdata

Те­перь его мож­но смон­ти­ро­вать:

# mount /dev/sdb2 /bigdata

Ну вот, на­ша но­вая фай­ло­вая сис­те­ма го­то­ва к упот­реб­ле­нию. Что­бы в этом убе­дить­ся, ско­пи­руй­те в нее па­ру фай­лов, на­при­мер:

# cp /etc/*.conf /bigdata

С раз­де­лом home все немно­го сложнее, ведь у нас уже есть ка­та­лог /home, где уже име­ют­ся ка­кие-то фай­лы. Во-пер­вых, убе­ди­тесь, что в сис­те­ме нет обыч­ных поль­зо­ва­те­лей, ко­то­рые мо­гут ис­поль­зо­вать фай­ло­вую сис­те­му /home. Это про­ве­ря­ет­ся ко­ман­дой who:

# who

root pts/0 2012-07-19 23:56 (192.168.1.72)

Как ви­ди­те, в сис­те­ме есть толь­ко суперпользователь-root (в дан­ном слу­чае, под­клю­чен­ный по ssh), и мы мо­жем про­дол­жать. Нуж­но смон­ти­ро­вать но­вый раз­дел в ка­та­лог /home и ско­пи­ро­вать ту­да ис­ход­ное со­дер­жи­мое ка­та­ло­га. Сна­ча­ла вре­мен­но пе­ре­име­ну­ем ка­та­лог /home:

# mv /home /home-temp

Те­перь соз­да­дим но­вую точ­ку мон­ти­ро­ва­ния:

# mkdir /home

Ес­ли в сис­те­ме вклю­чен SELinux (а в CentOS 6 он вклю­чен по умол­чанию), так­же по­тре­бу­ет­ся из­менить кон­текст безо­пас­но­сти но­во­го ка­та­ло­га:

# restorecon -v /home

Смон­ти­руй­те но­вый раз­дел как пре­ж­де:

# mount /dev/sdb1 /home

Те­перь ско­пи­руй­те (cp) все ис­ход­ные фай­лы в но­вую фай­ло­вую сис­те­му. Па­ра­метр -a оз­на­ча­ет, что ско­пи­ру­ют­ся все под­ка­та­ло­ги и со­хра­нят­ся все ат­ри­бу­ты фай­лов:

# cp -a /home-temp/* /home

На­ко­нец (пред­ва­ри­тель­но про­ве­рив, что но­вый раз­дел ра­бо­та­ет нор­маль­но), уда­ли­те ис­ход­ный ка­та­лог:

# rm -rf /home-temp


Го­то­во. На­ша фай­ло­вая сис­те­ма /home пе­ре­еха­ла на но­вый раз­дел, и ни­кто ни­че­го не за­по­доз­рит.

Про­ве­рим ко­ман­дой df, что все смон­ти­ро­ва­лось пра­виль­но:

# df -h 

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 9.7G 2.9G 6.3G 32% /

tmpfs 504M 124K 504M 1% /dev/shm

/dev/sdb 1 5.0G 140M 4.6G 3% /home

/dev/sdb 2 5.0G 138M 4.6G 3% /bigdata

Мон­ти­ро­ва­ние на­все­гда

На са­мом де­ле это еще не все, так как на­ши ко­ман­ды mount влия­ют толь­ко на те­ку­щее яд­ро, и по­сле пе­ре­за­груз­ки из­менения ис­чез­нут. А пе­ре­за­груз­ки – взглянем прав­де в гла­за – бы­ва­ют и в Linux. Что­бы сде­лать из­менения «по­сто­ян­ны­ми», нуж­но соз­дать несколь­ко за­пи­сей в /etc/fstab. Я под­роб­но опи­сы­вал его со­дер­жи­мое (в се­рии «Etcetera с ил­лю­ст­ра­ция­ми») в LXF152-153. Не бу­ду по­вто­рять­ся – про­сто при­ве­ду стро­ки, ко­то­рые нуж­но до­ба­вить в fstab. Про­ще все­го до­ба­вить две та­ких:

/dev/sdb1 /home ext4 defaults 0 2

/dev/sdb2 /bigdata ext4 defaults 0 2

Кста­ти, поосто­рожнее при ре­дак­ти­ро­вании это­го фай­ла. Ошиб­ки в нем мо­гут при­вес­ти к от­ка­зу при за­груз­ке сис­те­мы. Здесь для иден­ти­фи­ка­ции раз­де­лов мы ука­зы­ва­ем име­на уст­ройств в Linux. Это пре­крас­но, ес­ли мы мо­жем га­ран­ти­ро­вать, что при ка­ж­дой за­груз­ке сис­те­мы яд­ро бу­дет об­на­ру­жи­вать дис­ки в од­ном и том же по­ряд­ке (и, сле­до­ва­тель­но, да­вать им одни и те же име­на). Но бо­лее на­деж­ный спо­соб иден­ти­фи­ка­ции раз­де­лов – мет­ки, ис­поль­зо­ван­ные при соз­дании фай­ло­вых сис­тем. Для это­го из­меним за­пи­си в fstab сле­дую­щим об­ра­зом:

LABEL=/home /home ext4 defaults 0 2

LABEL=/bigdata /bigdata ext4 defaults 0 2

Есть и тре­тий спо­соб иден­ти­фи­ка­ции раз­де­ла – универ­саль­ный иден­ти­фи­ка­тор (UUID) – од­но из тех жут­ких 128-бит­ных чи­сел, уникаль­ных в пре­де­лах Все­лен­ной (на­счет это­го со­мнева­юсь...), ко­то­рых во­круг пруд пру­ди. UUID на­зна­ча­ет­ся фай­ло­вой сис­те­ме ав­то­ма­ти­че­­ски при вы­полнении ко­ман­ды mkfs. Ес­ли, как я и ре­ко­мен­до­вал, вы ра­бо­тае­те в CentOS, вы уви­ди­те, что та­кие иден­ти­фи­ка­то­ры ис­поль­зу­ют­ся в fstab для корнево­го раз­де­ла и раз­де­ла под­кач­ки. Мет­ку и UUID то­ма по­кажет ко­ман­да dumpe2fs:

# dumpe2fs /dev/sdb1 | head -3

Filesystem volume name: /home

Last mounted on: /home

Filesystem UUID: 4b4322f0-cc27-4d39-99d5-c9b3e7fb60a5

Для за­да­ния но­вой мет­ки или из­ме­не­ния су­ще­ст­вую­щей при­го­дит­ся ко­ман­да tune2fs:

# tune2fs -L mynewlabel /dev/sdb1

На во­прос «У ка­ко­го раз­де­ла та­кая-то мет­ка?» от­ве­тит ко­ман­да findfs:

# findfs LABEL=/home

/dev/sdb1

Итак, под­ве­дем ито­ги. Мы до­ба­ви­ли но­вый диск, убе­ди­лись, что яд­ро об­на­ру­жи­ло его, раз­би­ли диск на раз­де­лы, соз­да­ли на них фай­ло­вые сис­те­мы и под­клю­чи­ли их к на­ше­му де­ре­ву ка­та­ло­гов. На­конец, мы до­ба­ви­ли за­пи­си в fstab, что­бы сде­лать эти из­менения «по­сто­ян­ны­ми». Вы мо­же­те пой­ти и даль­ше, на­при­мер, экс­пор­ти­ро­вав фай­ло­вую сис­те­му /bigdisk с NFS. Я под­роб­но опи­сал это в LXF160 и по­вто­рять­ся не бу­ду.

Ес­ли у вас возник­нут во­про­сы, пи­ши­те мне на chris.linux­format@gmail.com, и я по­про­бую по­мочь. Не обе­щаю от­ве­тить на все, но чем яснее фор­му­ли­ров­ка про­бле­мы, тем вы­ше ве­ро­ят­ность то­го, что я от­ве­чу! |

> Для соз­да­ния раз­де­лов с fdisk ис­поль­зу­ют­ся од­но­бу­к­вен­ные коман­ды. Кру­то? Не очень. На­деж­но? Да!

Персональные инструменты
купить
подписаться
Яндекс.Метрика