FAT

Поделись знанием:
(перенаправлено с «FAT16»)
Перейти к: навигация, поиск

FAT (англ. File Allocation Table — «таблица размещения файлов») — классическая архитектура файловой системы, которая из-за своей простоты всё ещё широко используется для флеш-накопителей. Используется в дискетах и некоторых других носителях информации. Ранее использовалась и на жёстких дисках.

Разработана Биллом Гейтсом и Марком МакДональдом (англ.) в 1976-1977 годах[1][2]. Использовалась в качестве основной файловой системы в операционных системах семейств DOS и Windows (кроме семейства Windows NT).

Структура FAT следует стандарту ECMA-107 и подробно определяется официальной спецификацией от Microsoft, известной под названием FATGEN[3].





Версии системы FAT

Существует три версии FAT — FAT12, FAT16 и FAT32. Они отличаются разрядностью записей в дисковой структуре, то есть количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет, FAT16 — для дисков малого объёма. На основе FAT была разработана новая файловая система exFAT (extended FAT), используемая преимущественно для флеш-накопителей.

Изначально FAT не поддерживала иерархическую систему каталогов. Все файлы располагались в корневом каталоге. Это оказалось неудобно и к тому же малый размер корневого каталога ограничивал количество файлов на диске. Каталоги были введены с выходом MS-DOS 2.0.

В различных операционных системах также были внедрены различные расширения FAT. Например, в DR-DOS имеются дополнительные атрибуты доступа к файлам; в Windows 95, Linux — поддержка длинных имён файлов (LFN) в формате Unicode (Virtual FAT — VFAT); в OS/2 — расширенные атрибуты всех файлов.

VFAT

VFAT — это расширение FAT, появившееся в Windows 95. В FAT имена файлов имеют формат 8.3 и состоят только из символов кодировки ASCII. В VFAT была добавлена поддержка длинных (до 255 символов) имён файлов (англ. Long File Name, LFN) в кодировке UTF-16LE, при этом LFN хранятся одновременно с именами в формате 8.3, ретроспективно называемыми SFN (англ. Short File Name). LFN нечувствительны к регистру при поиске, однако, в отличие от SFN, которые хранятся в верхнем регистре, LFN сохраняют регистр символов, указанный при создании файла[4][5].

Структура системы FAT

В файловой системе FAT смежные секторы диска объединяются в единицы, называемые кластерами. Количество секторов в кластере равно степени двойки (см. далее). Для хранения данных файла отводится целое число кластеров (минимум один), так что, например, если размер файла составляет 40 байт, а размер кластера 4 кбайт, реально занят информацией файла будет лишь 1 % отведенного для него места. Для избежания подобных ситуаций целесообразно уменьшать размер кластеров, а для сокращения объёма адресной информации и повышения скорости файловых операций — наоборот. На практике выбирают некоторый компромисс. Так как ёмкость диска вполне может и не выражаться целым числом кластеров, обычно в конце тома присутствуют так называемые surplus sectors — «остаток» размером менее кластера, который не может отводиться ОС для хранения информации.

Пространство тома FAT32 логически разделено на три смежные области:

  • Зарезервированная область. Содержит служебные структуры, которые принадлежат загрузочной записи раздела (Partition Boot Record — PBR, для отличия от Master Boot Record — главной загрузочной записи диска; также PBR часто некорректно называется загрузочным сектором) и используются при инициализации тома;
  • Область таблицы FAT, содержащая массив индексных указателей («ячеек»), соответствующих кластерам области данных. Обычно на диске представлено две копии таблицы FAT в целях надежности;
  • Область данных, где записано собственно содержимое файлов — то есть текст текстовых файлов, кодированное изображение для файлов рисунков, оцифрованный звук для аудиофайлов и т. д. — а также т. н. метаданные — информация относительно имен файлов и папок, их атрибутов, времени создания и изменения, размеров и размещения на диске.

В FAT12 и FAT16 также специально выделяется область корневого каталога. Она имеет фиксированное положение (непосредственно после последнего элемента таблицы FAT) и фиксированный размер в 32-хбайтных элементах, т.е. при описании в Partition Boot Record указывается именно количество 32-хбайтных элементов, каждый из которых описывает какой-либо элемент корневого каталога (будь то файл или другой вложенный каталог).

Если кластер принадлежит файлу, то соответствующая ему ячейка в таблице FAT содержит номер следующего кластера этого же файла. Если ячейка соответствует последнему кластеру файла, то она содержит специальное значение (FFFF16 для FAT16). Таким образом выстраивается цепочка кластеров файла. Неиспользуемым кластерам в таблице соответствуют нули. «Плохим» кластерам (которые исключаются из обработки, например, по причине нечитаемости соответствующей области устройства) также соответствует специальный код.

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

Загрузочная запись

Первая структура тома FAT называется BPB (англ. BIOS parameter block) и расположена в зарезервированной области, в нулевом секторе. Эта структура содержит информацию, идентифицирующую тип файловой системы и физические характеристики носителя (дискеты или раздела на жёстком диске).

BIOS Parameter Block

BPB, в принципе, отсутствовал в FAT, обслуживавшей MS-DOS 1.x, так как в то время предполагалось лишь два различных типа тома — одно- и двусторонние пятидюймовые дискеты на 360 кб, причём формат тома определялся по первому байту области FAT. BPB был введен в MS-DOS 2.x в начале 1983 года как обязательная структура загрузочного сектора, по которой впредь следовало определять формат тома; старая схема определения по первому байту FAT лишилась поддержки. Также в MS-DOS 2.0 была введена иерархия файлов и папок (до этого все файлы хранились в корневом каталоге).

Структура BPB в MS-DOS 2.x содержала 16-битное поле «общего количества секторов», что означало принципиальную неприменимость этой версии FAT для томов объёмом более 216 = 65 536 секторов, то есть более 32 Мб при стандартном размере сектора 512 байт. В MS-DOS 4.0 (1988) вышеназванное поле BPB было расширено до 32 бит, что означало увеличение теоретического размера тома до 232 = 4 294 967 296 секторов, то есть до 2 ТБ при 512-байтном секторе.

Следующая модификация BPB появилась вместе с Windows 95 OSR2, в которой была введена FAT32 (в августе 1996 года). Было снято ограничение в 2 Тб на размер тома, том FAT32 теоретически может иметь размер до 8 Тб. Впрочем, размер каждого отдельного файла при этом не может превышать 4 Гб. BIOS Parameter Block FAT32 в целях совместимости с ранними версиями FAT повторяет BPB FAT16 вплоть до поля BPB_TotSec32 включительно, далее следуют различия.

«Загрузочный сектор» FAT32 в действительности представляет собой три 512-байтных сектора — сектора 0, 1 и 2. Каждый из них содержит сигнатуру 0xAA55 по адресу 0x1FE, то есть в последних двух байтах, в случае если размер сектора равен 512 байт. Если же размер сектора более, чем 512 байт, то сигнатура содержится как по адресу 0x1FE, так и в последних двух байтах нулевого сектора, то есть дублируется.

FSInfo

Загрузочная запись раздела FAT32 содержит структуру под названием FSInfo, используемую для хранения значения числа свободных кластеров тома. FSInfo, как правило, занимает сектор 1 (см. поле BPB_FSInfo) и имеет следующую структуру (адреса относительно начала сектора):

  • FSI_LeadSig. 4-байтовая подпись 0x41615252, свидетельствует, что сектор используется для структуры FSInfo.
  • FSI_Reserved1. Промежуток с 4-го по 483-й байт сектора включительно, обнуляется.
  • FSI_StrucSig. Ещё одна подпись, расположена по адресу 0x1E4 и содержит значение 0x61417272.
  • FSI_Free_Count. Четырёхбайтовое поле по адресу 0x1E8, содержит последнее известное системе значение числа свободных кластеров тома. Значение 0xFFFFFFFF означает, что число свободных кластеров неизвестно и должно вычисляться.
  • FSI_Nxt_Free. Четырёхбайтовое поле по адресу 0x1EC, содержит номер кластера, от которого должен начинаться поиск свободных кластеров по таблице индексных указателей. Обычно это поле содержит номер последнего кластера FAT, отведенного для хранения файла. Значение 0xFFFFFFFF означает, что поиск свободного кластера должен проводиться с самого начала таблицы FAT, то есть со второго кластера.
  • FSI_Reserved2. Зарезервированное 12-байтное поле по адресу 0x1F0.
  • FSI_TrailSig. Подпись 0xAA550000 — последние 4 байта сектора FSInfo.

Смысл введения FSInfo в оптимизации работы системы, так как в FAT32 таблица индексных указателей может иметь значительные размеры и её побайтовый просмотр может занять значительное время. Однако значения полей FSI_Free_Count и FSI_Nxt_Free могут не соответствовать действительности и должны проверяться на адекватность. Кроме того, они даже не обновляются в резервной копии FSInfo, расположенной, как правило, в секторе 7.

Определение типа FAT тома

Определение типа FAT тома (то есть выбор между FAT12, FAT16 и FAT32) производится ОС по количеству кластеров в томе, которое, в свою очередь, определяется из полей BPB. Прежде всего вычисляется количество секторов корневого каталога:

RootDirSectors = (BPB_RootEntCnt * 32) / BPB_BytsPerSec

Далее определяется, какие из полей BPB_FATSz16/32 и BPB_TotSec16/32 не равны нулю, и они используются при определении количества секторов области данных тома:

DataSec = TotSec — (BPB_ResvdSecCnt + (BPB_NumFATs * FATSz) + RootDirSectors)

Наконец, определяется количество кластеров области данных:

CountofClusters = DataSec / BPB_SecPerClus

По количеству кластеров проводится однозначное соответствие с файловой системой:

  • CountofClusters < 4085 — FAT12
  • CountofClusters = 4085 ÷ 65524 — FAT16
  • CountofClusters > 65524 — FAT32

Согласно официальной спецификации, это единственный допустимый способ определения типа FAT. Искусственное создание тома, нарушающего указанные правила соответствия, приведёт к его некорректной обработке Windows. Тем не менее, рекомендуется избегать значений CountofClusters, близких к критическим (4085 и 65525), для верного определения типа файловой системы любыми, часто некорректно написанными драйверами.

На дискете при форматировании всегда создается FAT12. Что касается жестких дисков и флеш-накопителей, то при размере накопителя до 512 Мб (при 512-байтном секторе) по умолчанию создается FAT16, свыше 512 Мб — FAT32. Размер кластера определяется при форматировании, исходя из файловой системы и размера тома.

Серийный номер тома

Серийный номер тома (поле BS_VolID) в Windows 98 создается из даты и времени форматирования таким образом, что восстановить их невозможно без дополнительной информации.

Таблица FAT

Следующая важная структура тома FAT — это сама таблица FAT, занимающая отдельную логическую область. Она определяет список (цепочку) кластеров, в которых размещаются файлы и папки тома. Между кластерами и индексными указателями таблицы имеется взаимно однозначное соответствие — N-й указатель соответствует кластеру с тем же номером. Первому кластеру области данных присваивается номер 2. Значение индексного указателя соответствует состоянию соответствующего кластера. Возможны следующие состояния:

  • кластер свободен — указатель обнулен;
  • кластер занят файлом и не является последним кластером файла — значение указателя — это номер следующего кластера файла;
  • кластер является последним кластером файла — указатель содержит метку EOC (End Of Clusterchain), значение которой зависит от версии FAT: для FAT12 меткой EOC считается любое значение, большее или равное 0x0FF8 (по умолчанию 0x0FFF); для FAT16 — большее или равное 0xFFF8 (по умолчанию 0xFFFF); для FAT32 — любое значение, большее или равное 0x0FFFFFF8 (по умолчанию 0x0FFFFFFF);
  • кластер поврежден — указатель содержит специальную метку, значение которой для FAT12 0x0FF7, для FAT16 0xFFF7 и для FAT32 0x0FFFFFF7. Повреждённый кластер не может использоваться файловой системой для хранения данных; соответствующие указатели не затрагиваются при форматировании тома, когда все остальные указатели обнуляются;
  • кластер зарезервирован «для будущей стандартизации» — указатель содержит значение, превышающее CountofClusters, но меньшее метки повреждённого кластера (то есть до 0xFFF6 включительно для FAT16). В этом случае кластер, не соответствуя никаким реальным данным, считается занятым и пропускается при поиске свободного, но никакой другой информации о нём не предоставляется.

Кластеры 0 и 1 отражаются FAT особо. Индексный указатель, соответствующий нулевому кластеру (самый первый указатель таблицы FAT), содержит значение BPB_Media в нижних 8 битах; остальные биты устанавливаются в 1. Например, если BPB_Media = 0xF8 (жесткий диск), FAT[0] = 0x0FFFFFF8 для FAT32. Таким образом, формально FAT[0] = EOC, что используется при обработке файлов нулевого размера (см. далее).

Второй зарезервированный указатель, FAT[1], при форматировании устанавливается в значение метки EOC. В FAT12 он не используется больше никак, а в FAT16 и FAT32 верхние два бита этого указателя могут содержать отметку о необходимости проверки тома (т. н. «грязный бит»), причём все остальные биты выставлены в 1. Наличие грязного бита проверяется в процессе загрузки Windows программой autochk.exe. Грязный бит формируется при некорректном отключении тома или при аппаратной ошибке носителя и соответственно принимает два возможных значения.

Индексный указатель FAT32 по определению является 32-битным, однако верхние 4 бита в действительности игнорируются, так что значение указателя, по сути, является 28-битным. Единственной операцией, оперирующей с верхними 4 битами указателя, является форматирование тома, когда обнуляется весь указатель. Это означает, что, например, значения указателя 0x10000000, 0xF0000000 и 0x00000000 все соответствуют свободному кластеру, так как они отличаются лишь в верхних 4 битах.

Значение размера таблицы FAT по BPB, то есть BPB_FATSz16/32, может превышать реальное, так что в конце каждой таблицы FAT могут находиться сектора, не соответствующие никаким реальным кластерам данных. При форматировании эти сектора обнуляются, а в процессе функционирования тома никак не используются. Поэтому действительный адрес последнего сектора таблицы FAT, содержащего указатели на реальные кластеры тома, всегда должен рассчитываться из общего количества кластеров области данных, а не из поля BPB_FATSz16/32. Кроме того, последний сектор, занятый таблицей FAT, вовсе не обязательно весь занят ею — в этом случае избыточное пространство сектора так же не используется и забивается нулями при форматировании тома.

Файловые записи

Непосредственно после окончания последней таблицы FAT следует область данных, содержащая файлы и папки. Каталог FAT (папка, директория) является обычным файлом, помеченным специальным атрибутом. Данными (содержимым) такого файла в любой версии FAT является цепочка 32-байтных файловых записей (записей каталога). Каталог не может штатно содержать два файла с одинаковым именем. Если программа проверки диска обнаруживает искусственно созданную пару файлов с идентичным именем в одном каталоге, один из них переименовывается.

Корневой каталог

Единственным обязательно присутствующим каталогом является корневой каталог. В FAT12/FAT16 корневой каталог имеет фиксированный размер в секторах, который вычисляется из значения BPB_RootEntCnt, и следует на диске непосредственно после таблицы FAT.

В FAT32 корневой каталог, как и любой другой, имеет переменный размер и является цепочкой кластеров. Номер первого кластера корневого каталога отражается BPB_RootClus. Корневой каталог имеет следующие отличия от других каталогов тома FAT:

  • у него нет меток даты и времени;
  • нет собственного имени (кроме «\»);
  • он не содержит файлов с именами «.» и «..» (см. далее);
  • является единственным каталогом, в котором может штатно располагаться файл метки тома (см. далее).

Структура файловой записи

Файловая запись FAT32 состоит из следующих структур:

  • DIR_Name. 11-байтное поле по относительному адресу 0, содержит короткое имя файла (в рамках стандарта 8.3). По поводу имен файлов см. далее.
  • DIR_Attr. Байт по адресу 0x0B, отвечающий за атрибуты файла.
  • DIR_NTRes. Байт по адресу 0x0C, используется в Windows NT.
  • DIR_CrtTimeTenth. Байт по адресу 0x0D. Счётчик десятков миллисекунд времени создания файла, допустимы значения 0-199. Поле часто неоправданно игнорируется.
  • DIR_CrtTime. 2 байта по адресу 0x0E. Время создания файла с точностью до 2 секунд.
  • DIR_CrtDate. 2 байта по адресу 0x10. Дата создания файла.
  • DIR_LstAccDate. 2 байта по адресу 0x12. Дата последнего доступа к файлу (то есть последнего чтения или записи — в последнем случае приравнивается DIR_WrtDate). Аналогичное поле для времени не предусмотрено.
  • DIR_FstClusHI. 2 байта по адресу 0x14. Номер первого кластера файла (старшее слово, на томе FAT12/FAT16 равен нулю).
  • DIR_WrtTime. 2 байта по адресу 0x16. Время последней записи (модификации) файла, например, его создания.
  • DIR_WrtDate. 2 байта по адресу 0x18. Дата последней записи (модификации) файла, в том числе создания.
  • DIR_FstClusLO. 2 байта по адресу 0x1A. Номер первого кластера файла (младшее слово).
  • DIR_FileSize. DWORD, содержащий значение размера файла в байтах. Фундаментальное ограничение FAT32 — максимально допустимое значение размера файла составляет 0xFFFFFFFF (то есть 4 Гб минус 1 байт).

Если первый байт записи FAT (то есть DIR_Name[0]) содержит 0xE5 или 0x05, это значит, что запись свободна (соответствующий файл был удалён). Ноль в DIR_Name[0] означает, что свободна не только эта запись, но и все следующие записи каталога; Windows не анализирует остаток каталога после обнулённой записи.

Имя файла в FAT

Поле DIR_Name логически разбивается на первые 8 символов, образующие имя файла, и последние 3, образующие расширение. Точка-разделитель добавляется на уровне операционной системы и не хранится в поле имени. Если имя и расширение файла не заполняют отведённое для них место, остальные байты поля DIR_Name заполняются пробелами (0x20). Имя и расширение файла могут содержать любую комбинацию букв, цифр или символов с ASCII-кодами свыше 127; специальные символы распределяются на три группы:

  • Разрешённые: ! # $ % & () - @ ^ _ ` { } ~ '
  • Запрещённые: +.; = [ ]
  • Служебные: * ? <: > / \ | "

Служебные символы имеют особое значение в DOS и Windows и не могут входить в состав имени файла (знаки * ? являются метасимволами, а знаки : / \ используются как разделители в путях к файлам, остальные служебные и запрещённые знаки являются управляющими в интерпретаторах командной строки COMMAND.COM и cmd.exe), в то время как символы из числа запрещённых всё же можно включить в имя файла ценой возникновения LFN-записи (см. ниже). Например, каталог с именем, начинающимся точкой или содержащим несколько точек, можно создать в режиме командной строки (mkdir .directory) или в оболочках вроде FAR Manager, Total Commander, WinRAR. Имя файла не может начинаться или заканчиваться пробелом; ни в каком байте поля имени недопустимы управляющие символы ASCII (то есть 0х00-0х1F), за исключением оговорённого выше случая кода 5. Информация о текущей (на момент создания файла) кодовой странице DOS не сохраняется, поэтому доступ к файлам, в именах которых есть национальные коды из Extended ASCII (например, знаки кириллицы из кодовой страницы 866), при другой кодовой странице может быть проблематичным или невозможным (поскольку перед поиском файла в каталоге его имя переводится в верхний регистр в соответствии с таблицей, заложенной в кодовой странице). Полный путь к файлу не может превышать 80 байтов (3 — буква диска; 64 — путь; 12 — имя файла, включая точку-разделитель; 1 — терминальный нулевой знак).

Все буквенные символы 8.3 имени всегда переводятся и сохраняются в поле DIR_Name в верхнем регистре. Для сохранения исходного регистра имени Windows NT используется байт DIR_NTRes: 1 в бите 3 говорит, что имя следует отображать в нижнем регистре; за расширение отвечает бит 4. Если имя или расширение содержат символы обоих регистров, для такого файла создается LFN-запись (см. ниже). Windows 9x для сохранения нетривиального регистра имени всегда создает LFN-запись и игнорирует поле DIR_NTRes. Как следствие, имя одного и того же файла, лишённого ассоциированной LFN-записи, может отображаться Windows 9x целиком в верхнем регистре, а Windows NT — (частично) в нижнем.

Файловые атрибуты

В байте атрибутов верхние два бита являются резервными и всегда должны быть обнулены. Остальные биты распределяются таким образом, что значение 0x01 соответствует атрибуту «только для чтения», 0x02 — «скрытый», 0x04 — «системный», 0x20 — «архивный». Набор нескольких атрибутов составляется суммированием основных значений. Кроме этих стандартных атрибутов, используются ещё следующие: 0x10 — свидетельствует, что файл является каталогом (контейнером для других файлов); 0x08 — ATTR_VOLUME_ID, специальный атрибут уникального файла нулевого размера в корневом каталоге, имя которого считается меткой тома. Ограничение длины метки тома FAT в 11 символов связано с размером поля DIR_Name. Если файл имеет набор атрибутов READ_ONLY | HIDDEN | SYSTEM | VOLUME_ID (значение 0х0F), это свидетельствует, что запись не соответствует отдельному файлу, а содержит часть длинного имени другого файла, не вписывающегося в рамки 8.3 (см. далее).

Искусственное присвоение ненулевого значения верхним двум битам DIR_Attr используется для формирования файлов, которые невозможно удалить или переименовать штатными средствами файловой системы без форматирования. Это полезно, например, при борьбе с вирусами Autorun.inf (программа Panda USB and AutoRun Vaccine). С другой стороны, это же средство могут использовать сами вирусы. Значение DIR_Attr = 0x40 резервировано для внутреннего использования (устройство).

Что происходит при создании каталога

При создании каталога для него «пожизненно» выставляется DIR_FileSize = 0. Размер содержимого каталога определяется простым следованием по цепочкам кластеров до метки End Of Chain. Размер самого каталога лимитируется файловой системой в 65 535 32-байтных записей (то есть записи каталога в таблице FAT не могут занимать более 2Мб). Это ограничение призвано ускорить операции с файлами и позволить различным служебным программам использовать 16-битное целое (WORD) для подсчета количества записей в каталоге (как следствие, возникает теоретическое ограничение на количество файлов в каталоге — 65 535 при условии, что все имена файлов следуют стандарту 8.3). Каталогу отводится один кластер области данных (за исключением случая, если это корневой каталог FAT12/FAT16) и полям DIR_FstClusHI / DIR_FstClusLO присваивается значение номера этого кластера. В таблицу FAT для записи, соответствующей этому кластеру, помещается метка EOC, а сам кластер забивается нулями. Далее создаются два специальных файла, без которых каталог FAT считается повреждённым (первые две 32-байтных записи в области данных кластера) — файлы нулевого размера с именами «.» (одна точка, идентификатор каталога) и «..» (две точки, указатель на родительский каталог). Отметки даты и времени этих файлов приравниваются значениям для самого каталога на момент создания и не обновляются при изменениях каталога. Поля DIR_FstClusHI / DIR_FstClusLO файла «.» содержат значение номера содержащего его кластера, а файла «..» — номера первого кластера каталога, содержащего данный. Таким образом, файл «.» отсылает к самому каталогу, а файл «..» — к начальному кластеру родительского каталога; если родительский каталог — корневой, начальным кластером считается нулевой.

Время и дата

Двухбайтовая отметка даты имеет следующий формат:

  • биты 0—4 — день месяца, допускаются значения 1—31;
  • биты 5—8 — месяц года, допускаются значения 1—12;
  • биты 9—15 — год, считая от 1980 года («эпоха MS-DOS»), возможны значения от 0 до 127 включительно, то есть 1980—2107 годы.

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

  • биты 0—4 — счётчик секунд (по две), допустимы значения 0—29, то есть 0—58 секунд;
  • биты 5—10 — минуты, допустимы значения 0—59;
  • биты 11—15 — часы, допустимы значения 0—23.

Из отметок даты и времени критическим является лишь время последней модификации (то есть DIR_WrtTime и DIR_WrtDate), остальные могут не поддерживаться многими системами; при операциях с файлом в такой системе (например, DOS или Windows 3.1) эти поля игнорируются. FAT сохраняет отметки даты и времени по местному часовому поясу, при его смене отметки не меняются.

Временные отметки каталогов задаются при создании и не изменяются при записи новых файлов в каталог, переименовании или выделении ему нового кластера.

Дата последнего доступа к файлу обновляется при каждом обращении, например, при просмотре свойств файла, при перемещении на другой том (но не в пределах тома). При копировании файла в Windows 98 дата последнего доступа исходного файла обновляется, в Windows XP — нет.

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

Дата и время создания задается при выделении файловой записи для нового, не существовавшего до этого файла. Иначе говоря, при переименовании или перемещении файла дата и время создания не изменяется, а при копировании новый файл получает новую отметку. Таким образом, при копировании файла в Windows файл может получить более позднюю дату создания, чем дату модификации.

LFN-записи

Файлы и каталоги с длинным именем (свыше 8.3) обрабатываются файловой системой FAT особым образом. Структура 32-байтной записи для файла с LFN (Long File Name) отличается от обычной (SFN-записи):

  • LDIR_Ord. Первый байт записи, служит для нумерации записей в наборе.
  • LDIR_Name1. Десятибайтовое поле по адресу 0х01, содержит первые пять символов имени файла (вернее, той части его имени, которая отражена в данной LFN-записи).
  • LDIR_Attr. Байт атрибута по адресу 0х0B, равен 0х0F (ATTR_LONG_NAME).
  • LDIR_Type. Байт по адресу 0х0C, обнулен и дополнительно свидетельствует, что данная запись таблицы FAT относится к файлу с длинным именем.
  • LDIR_Chksum. Байт по адресу 0х0D, содержит контрольную сумму SFN псевдонима файла, соответствующего набору LFN-записей.
  • LDIR_Name2. 12-байтовое поле по адресу 0х0E, содержащее шестой-одиннадцатый символы имени файла.
  • LDIR_FstClusLO. 2-байтовое поле по адресу 0х1A, в контексте LFN-записи лишено смысла и обнуляется.
  • LDIR_Name3. 4-байтовое поле по адресу 0х1C, содержащее 12-й и 13-й символы имени файла.

Набор LFN-записей каталога FAT всегда должен быть связан с обычной SFN-записью, которой физически предшествует на диске. Набор LFN-записей, обнаруженный без соответствующей обычной записи, называется орфаном и запись считается повреждённой; подобный файл является совершенно невидимым в старых версиях MS-DOS/Windows.

В последовательности LFN-записей каждая из них имеет собственный порядковый номер, определяемый первым байтом (LDIR_Ord). Маска 0х40 свидетельствует, что данная запись является крайней в ряду следующих за ней LFN-записей (то есть, например, для третьей в ряду LFN-записи значение байта LDIR_Ord будет 0x43, для 17-й — 0x51). В последующих записях этот байт изменяется от N для N-й «длинной» записи по счету от соответствующей обычной, до 1 для ближайшей к обычной записи.

Длинные имена файлов хранятся в кодировке UNICODE (UTF-16), при этом сохраняется вводимый регистр буквенных символов. Если некоторый символ имени в кодировке OEM или UNICODE не может быть превращен в символ кодовой страницы, он всегда отображается в виде символа подчеркивания «_», причём сохранённый на диске действительный символ не изменяется.

Байт контрольной суммы вычисляется по определенному алгоритму на основе 8.3 имени обычной записи (для файла с длинным именем «имя» из обычной записи называется псевдонимом — alias) и копируется во все соответствующие ей «длинные» записи. Если какое-либо из значений не согласуется с именем файла (например, если файл был переименован под ранней версией MS-DOS/Windows), возникает орфан.

SFN-псевдоним файла с длинным именем состоит из основной части и, при необходимости, цифрового «хвоста». Если файл имеет расширение, его первые 3 символа сохраняются в псевдониме. Соответствующее имя образуется переводом в кодировку OEM символов длинного имени файла, причём все пробелы длинного имени игнорируются, а символы, непереводимые в OEM либо запрещенные в контексте короткого имени, заменяются подчеркиванием «_». Цифровой хвост «~n», где n = 1 ÷ 999999, добавляется к псевдониму, если первоначально полученный псевдоним конфликтовал с именем какого-либо файла в том же каталоге, либо превышал стандарт 8.3, или если какой-либо символ при смене кодировки не нашёл OEM-аналога и был заменён подчеркиванием. Таким образом образуются псевдонимы типа NEWFIL~1.DJV (LFN = New file for me.djvu). Схема образования псевдонима файла оптимизирована для скорости операций и поэтому малопредсказуема в подробностях.

Имя файла длиной, не кратной 13 символам, не заполняет поля имени LFN-записей таблицы FAT полностью. В таком случае имя файла искусственно оканчивается символом NUL (0x00), а избыточные байты забиваются единицами (то есть символами 0xFF).

Для длинных имен длина имени ограничена 255 символами, не считая разделителя NUL, а полный путь — 260 символами, включая NUL. В длинном имени также допускается использование шести специальных символов, запрещенных в коротких именах: +,; = [ ]

При попытке создания в томе FAT32 файла или каталога с именем, содержащим такой символ, автоматически генерируется LFN-запись независимо от длины имени файла. Аналогичный процесс происходит при создании файла/папки с именем, содержащим не-ASCII символы.

Возможна ситуация, когда файл метки тома физически не предшествует всем записям тома с длинными именами (когда том не имеет метки или метка была назначена после записи какого-либо файла с длинным именем). Тогда метка тома в FAT12/FAT16 будет отображаться неправильно, так как будет взята из ближайшей LFN-записи (поскольку она также имеет атрибут VOLUME_ID), и при попытке изменения метки тома в действительности будет происходить нарушение имени соответствующего файла. При удалении файла, имеющего ассоциированные LFN-записи, последние не затрагиваются и становятся орфаном. При дальнейшем создании нового файла упомянутый орфан может быть ошибочно ассоциирован с ним в случае совпадения контрольных сумм имен старого и нового файлов, однако используемый алгоритм вычисления контрольной суммы (ASCII-код первого символа псевдонима файла циклически сдвигается на бит вправо и прибавляется код следующего символа и т. д.) делает такую вероятность ничтожно малой.

Смысл файловых операций в FAT

Форматирование тома — таблица индексных указателей обнуляется, за исключением первых трёх (FAT[0] и FAT[1], зарезервированы, а FAT[2] содержит запись, соответствующую файлу метки тома, либо, при отсутствии её — метку EOC) и записей повреждённых кластеров; записи корневого каталога обнуляются (за исключением файла метки тома, если она есть), в остальном область данных не затрагивается.

Удаление файла — первый символ файловой записи и всех ассоциированных LFN-записей заменяется кодом 0xE5; занимаемые файлом кластеры помечаются в таблице FAT как свободные, а в области данных не затрагиваются.

Создание файла или каталога командой «Создать» контекстного меню — создается файловая запись для нового «пустого» файла с именем по умолчанию (например, «Новая папка») и размером, определяемым типом файла; сам файл, если имеет ненулевой размер (что верно для практически всех «пустых» файлов, кроме каталогов и текстовых документов) записывается в области данных в выделенные ему кластеры; в таблице FAT создается соответствующая кластерная цепочка. После присвоения файлу действительного имени (не по умолчанию) первоначально созданная файловая запись помечается как удаленная и создается новая.

Переименование файла — создается новая запись с обновлённым именем; старая запись помечается как удаленная.

Сохранение файла из приложения (не из командной строки) — создается запись, содержащая все поля, кроме размера и начального кластера файла; после завершения сохранения файла создается новая запись, содержащая все поля, а прежняя удаляется.

Копирование файла — в новом местоположении создается идентичная файловая запись (возможно, за исключением некоторых временных отметок, см. выше), файлу выделяется первый свободный кластер и содержимое файла копируется в новое место, причём происходит копирование текущего кластера, поиск следующего свободного и заполнение таблицы FAT.

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

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

Поиск свободного кластера по таблице индексных указателей для выделения новому файлу начинается в общем случае не с начала области данных (то есть с кластера 2), а с последнего выделенного какому-либо файлу кластера, номер которого сохраняется в структуре FSInfo. Другими словами, если файлу 1 был отведен кластер 30, а файлу 2 — кластер 31, после чего файл 1 был удален, то при создании нового файла 3 он, скорее всего, будет физически размещен начиная с кластера 32.

Отказоустойчивость системы

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

Характеристики[3]

FAT12 FAT16 FAT32
Разработчик Microsoft
Полное название File Allocation Table (Таблица размещения файлов)
(12-битная версия) (16-битная версия) (32-битная версия)
Представлена 1980 (Microsoft Disk BASIC) Ноябрь 1987 (MS-DOS 3.31) Август 1996 (Windows 95 OSR 2)
Идентификатор тома 0x01 (MBR) 0x04, 0x06, 0x0E (MBR) 0x0B, 0x0C (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
Структуры
Содержимое каталога Таблица
Размещение файлов Линейный список
Сбойные блоки Тегирование кластера
Ограничения
Размер файла 32 MiB 2 GiB 4 GiB
Количество кластеров 4084 65 524 268 435 445 (228−12)
Длина имени файла 8.3 или 255 символов при использовании LFN
Размер тома 32 MiB 2 GiB
4 GiB (64 Кб на кластер, поддерживается не везде)
2 TiB
8 TiB (2 Кб на сектор)
Возможности
Сохраняемые даты Создания, модификации, доступа
Диапазон дат 1 января 1980 — 31 декабря 2107
Дополнительные данные Изначально не поддерживаются
Атрибуты файлов Только для чтения, скрытый, системный, метка тома, подкаталог, архивный
Разграничение прав доступа Нет
Прозрачное сжатие Отдельные утилиты (Stacker, DoubleSpace, DriveSpace)
Прозрачное шифрование Сторонние утилиты или клоны DOS

Лицензирование

Майкрософт запатентовала некоторые алгоритмы работы с FAT и VFAT.

В США при повторном рассмотрении[когда?] было принято решение аннулировать некоторые из патентов, но потом его отменили.

В октябре 2006 года в Германии был аннулирован за очевидность патент на VFAT, выданный Европейским патентным бюро[6].

Со временем FAT стали широко использовать в различных устройствах для совместимости между DOS, Windows, OS/2, Linux. Майкрософт не выказывала намерений принуждать к их лицензированию[уточнить][7].

В феврале 2009 года Майкрософт подала в суд на компанию TomTom, производителя автомобильных навигационных систем на основе Linux, обвиняя её в нарушении патентов[8].

По мнению Джереми Эллисона[уточнить], цель Майкрософт — поставить различные компании перед выбором: заключить с Майкрософт договор о патентной защите (такой, который с ней заключила Novell в ноябре 2006 года), нарушив тем самым лицензию GNU GPL, и сделав невозможным для себя использование Linux, или не заключать такого договора, и быть обвинённой в нарушении патентов, защита по которым предоставляется при его заключении при условии неразглашения[9][10].

В марте 2009 года TomTom подала встречный иск о нарушении патентов[11].

См. также

Напишите отзыв о статье "FAT"

Примечания

  1. cd.textfiles.com/megademo2/INFO/OS2_HPFS.TXT
  2. [web.archive.org/web/*/www.microsoft.com/mscorp/ip/tech/fathist.asp www.microsoft.com/mscorp/ip/tech/fathist.asp] в archive.org
  3. 1 2 [download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc Microsoft Extensible Firmware Initiative FAT32 File System Specification 1.03]. Microsoft (6 декабря 2000). — Документа в формате Microsoft Word, 268 Кб. Проверено 5 апреля 2010. [www.webcitation.org/6181vmpI3 Архивировано из первоисточника 22 августа 2011].
  4. [technet.microsoft.com/en-us/library/cc750354.aspx#XSLTsection125121120120 What About VFAT?]. TechNet Archive. Microsoft (15 октября 1999). Проверено 5 апреля 2010. [www.webcitation.org/6181uHOVV Архивировано из первоисточника 22 августа 2011].
  5. Не следует путать расширение файловой системы VFAT с одноимённым драйвером файловой системы, который появился в Windows for Workgroups 3.11 и предназначен для обработки вызовов функций MS-DOS (INT 21h) в защищённом режиме (см.: [support.microsoft.com/kb/126746 KB126746: Windows for Workgroups Version History]. VERSION 3.11 → Non-Network Features. Microsoft (14 ноября 2003). Проверено 5 апреля 2010. [www.webcitation.org/6181uptwO Архивировано из первоисточника 22 августа 2011].)
  6. [www.heise.de/english/newsticker/news/86141 Federal Patent Court declares FAT patent of Microsoft null and void] (англ.). heise online. Heise Zeitschriften Verlag (2 марта 2007). Проверено 10 марта 2009. [www.webcitation.org/6181wE3ui Архивировано из первоисточника 22 августа 2011].
  7. Brian Kahin. [www.huffingtonpost.com/brian-kahin/microsoft-roils-the-world_b_171985.html Microsoft Roils the World with FAT Patents] (англ.). The Huffington Post (10 марта 2009). Проверено 10 марта 2009. [www.webcitation.org/6181yXtEr Архивировано из первоисточника 22 августа 2011].
  8. Ryan Paul. [arstechnica.com/microsoft/news/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device.ars Microsoft suit over FAT patents could open OSS Pandora's Box] (англ.). Ars Technica. Condé Nast Publications (25 февраля 2009). Проверено 9 марта 2009. [www.webcitation.org/6181zQIdD Архивировано из первоисточника 22 августа 2011].
  9. Glyn Moody. [www.computerworlduk.com/toolbox/open-source/blogs/index.cfm?entryid=1953&blogid=14 The Real Reason for Microsoft’s TomTom Lawsuit] (англ.). ComputerworldUK. IDG (5 марта 2009). Проверено 9 марта 2009. [www.webcitation.org/6181zvabs Архивировано из первоисточника 22 августа 2011].
  10. Steven J. Vaughan-Nichols. [blogs.computerworld.com/linux_companies_sign_microsoft_patent_protection_pacts Linux companies sign Microsoft patent protection pacts] (англ.). Блоги Computerworld. IDG (5 марта 2009). Проверено 9 марта 2009. [www.webcitation.org/618211DQy Архивировано из первоисточника 22 августа 2011].
  11. Erica Ogg. [news.cnet.com/8301-10805_3-10200526-75.html TomTom countersues Microsoft in patent dispute] (англ.). CNet (19 марта 2009). Проверено 20 марта 2009. [www.webcitation.org/61821fwRJ Архивировано из первоисточника 22 августа 2011].

Ссылки

  • [www.ecma-international.org/publications/files/ECMA-ST/Ecma-107.pdf ECMA-107] (англ.) стандарт FAT
  • [litl-admin.ru/content/detail.php?ID=147 работа с FAT средствами WinHEX]

Отрывок, характеризующий FAT

– Всё таки я не понял, de quoi vous avez peur, [Чего ты боишься,] – медлительно проговорил князь Андрей, не спуская глаз с жены.
Княгиня покраснела и отчаянно взмахнула руками.
– Non, Andre, je dis que vous avez tellement, tellement change… [Нет, Андрей, я говорю: ты так, так переменился…]
– Твой доктор велит тебе раньше ложиться, – сказал князь Андрей. – Ты бы шла спать.
Княгиня ничего не сказала, и вдруг короткая с усиками губка задрожала; князь Андрей, встав и пожав плечами, прошел по комнате.
Пьер удивленно и наивно смотрел через очки то на него, то на княгиню и зашевелился, как будто он тоже хотел встать, но опять раздумывал.
– Что мне за дело, что тут мсье Пьер, – вдруг сказала маленькая княгиня, и хорошенькое лицо ее вдруг распустилось в слезливую гримасу. – Я тебе давно хотела сказать, Andre: за что ты ко мне так переменился? Что я тебе сделала? Ты едешь в армию, ты меня не жалеешь. За что?
– Lise! – только сказал князь Андрей; но в этом слове были и просьба, и угроза, и, главное, уверение в том, что она сама раскается в своих словах; но она торопливо продолжала:
– Ты обращаешься со мной, как с больною или с ребенком. Я всё вижу. Разве ты такой был полгода назад?
– Lise, я прошу вас перестать, – сказал князь Андрей еще выразительнее.
Пьер, всё более и более приходивший в волнение во время этого разговора, встал и подошел к княгине. Он, казалось, не мог переносить вида слез и сам готов был заплакать.
– Успокойтесь, княгиня. Вам это так кажется, потому что я вас уверяю, я сам испытал… отчего… потому что… Нет, извините, чужой тут лишний… Нет, успокойтесь… Прощайте…
Князь Андрей остановил его за руку.
– Нет, постой, Пьер. Княгиня так добра, что не захочет лишить меня удовольствия провести с тобою вечер.
– Нет, он только о себе думает, – проговорила княгиня, не удерживая сердитых слез.
– Lise, – сказал сухо князь Андрей, поднимая тон на ту степень, которая показывает, что терпение истощено.
Вдруг сердитое беличье выражение красивого личика княгини заменилось привлекательным и возбуждающим сострадание выражением страха; она исподлобья взглянула своими прекрасными глазками на мужа, и на лице ее показалось то робкое и признающееся выражение, какое бывает у собаки, быстро, но слабо помахивающей опущенным хвостом.
– Mon Dieu, mon Dieu! [Боже мой, Боже мой!] – проговорила княгиня и, подобрав одною рукой складку платья, подошла к мужу и поцеловала его в лоб.
– Bonsoir, Lise, [Доброй ночи, Лиза,] – сказал князь Андрей, вставая и учтиво, как у посторонней, целуя руку.


Друзья молчали. Ни тот, ни другой не начинал говорить. Пьер поглядывал на князя Андрея, князь Андрей потирал себе лоб своею маленькою рукой.
– Пойдем ужинать, – сказал он со вздохом, вставая и направляясь к двери.
Они вошли в изящно, заново, богато отделанную столовую. Всё, от салфеток до серебра, фаянса и хрусталя, носило на себе тот особенный отпечаток новизны, который бывает в хозяйстве молодых супругов. В середине ужина князь Андрей облокотился и, как человек, давно имеющий что нибудь на сердце и вдруг решающийся высказаться, с выражением нервного раздражения, в каком Пьер никогда еще не видал своего приятеля, начал говорить:
– Никогда, никогда не женись, мой друг; вот тебе мой совет: не женись до тех пор, пока ты не скажешь себе, что ты сделал всё, что мог, и до тех пор, пока ты не перестанешь любить ту женщину, какую ты выбрал, пока ты не увидишь ее ясно; а то ты ошибешься жестоко и непоправимо. Женись стариком, никуда негодным… А то пропадет всё, что в тебе есть хорошего и высокого. Всё истратится по мелочам. Да, да, да! Не смотри на меня с таким удивлением. Ежели ты ждешь от себя чего нибудь впереди, то на каждом шагу ты будешь чувствовать, что для тебя всё кончено, всё закрыто, кроме гостиной, где ты будешь стоять на одной доске с придворным лакеем и идиотом… Да что!…
Он энергически махнул рукой.
Пьер снял очки, отчего лицо его изменилось, еще более выказывая доброту, и удивленно глядел на друга.
– Моя жена, – продолжал князь Андрей, – прекрасная женщина. Это одна из тех редких женщин, с которою можно быть покойным за свою честь; но, Боже мой, чего бы я не дал теперь, чтобы не быть женатым! Это я тебе одному и первому говорю, потому что я люблю тебя.
Князь Андрей, говоря это, был еще менее похож, чем прежде, на того Болконского, который развалившись сидел в креслах Анны Павловны и сквозь зубы, щурясь, говорил французские фразы. Его сухое лицо всё дрожало нервическим оживлением каждого мускула; глаза, в которых прежде казался потушенным огонь жизни, теперь блестели лучистым, ярким блеском. Видно было, что чем безжизненнее казался он в обыкновенное время, тем энергичнее был он в эти минуты почти болезненного раздражения.
– Ты не понимаешь, отчего я это говорю, – продолжал он. – Ведь это целая история жизни. Ты говоришь, Бонапарте и его карьера, – сказал он, хотя Пьер и не говорил про Бонапарте. – Ты говоришь Бонапарте; но Бонапарте, когда он работал, шаг за шагом шел к цели, он был свободен, у него ничего не было, кроме его цели, – и он достиг ее. Но свяжи себя с женщиной – и как скованный колодник, теряешь всякую свободу. И всё, что есть в тебе надежд и сил, всё только тяготит и раскаянием мучает тебя. Гостиные, сплетни, балы, тщеславие, ничтожество – вот заколдованный круг, из которого я не могу выйти. Я теперь отправляюсь на войну, на величайшую войну, какая только бывала, а я ничего не знаю и никуда не гожусь. Je suis tres aimable et tres caustique, [Я очень мил и очень едок,] – продолжал князь Андрей, – и у Анны Павловны меня слушают. И это глупое общество, без которого не может жить моя жена, и эти женщины… Ежели бы ты только мог знать, что это такое toutes les femmes distinguees [все эти женщины хорошего общества] и вообще женщины! Отец мой прав. Эгоизм, тщеславие, тупоумие, ничтожество во всем – вот женщины, когда показываются все так, как они есть. Посмотришь на них в свете, кажется, что что то есть, а ничего, ничего, ничего! Да, не женись, душа моя, не женись, – кончил князь Андрей.
– Мне смешно, – сказал Пьер, – что вы себя, вы себя считаете неспособным, свою жизнь – испорченною жизнью. У вас всё, всё впереди. И вы…
Он не сказал, что вы , но уже тон его показывал, как высоко ценит он друга и как много ждет от него в будущем.
«Как он может это говорить!» думал Пьер. Пьер считал князя Андрея образцом всех совершенств именно оттого, что князь Андрей в высшей степени соединял все те качества, которых не было у Пьера и которые ближе всего можно выразить понятием – силы воли. Пьер всегда удивлялся способности князя Андрея спокойного обращения со всякого рода людьми, его необыкновенной памяти, начитанности (он всё читал, всё знал, обо всем имел понятие) и больше всего его способности работать и учиться. Ежели часто Пьера поражало в Андрее отсутствие способности мечтательного философствования (к чему особенно был склонен Пьер), то и в этом он видел не недостаток, а силу.
В самых лучших, дружеских и простых отношениях лесть или похвала необходимы, как подмазка необходима для колес, чтоб они ехали.
– Je suis un homme fini, [Я человек конченный,] – сказал князь Андрей. – Что обо мне говорить? Давай говорить о тебе, – сказал он, помолчав и улыбнувшись своим утешительным мыслям.
Улыбка эта в то же мгновение отразилась на лице Пьера.
– А обо мне что говорить? – сказал Пьер, распуская свой рот в беззаботную, веселую улыбку. – Что я такое? Je suis un batard [Я незаконный сын!] – И он вдруг багрово покраснел. Видно было, что он сделал большое усилие, чтобы сказать это. – Sans nom, sans fortune… [Без имени, без состояния…] И что ж, право… – Но он не сказал, что право . – Я cвободен пока, и мне хорошо. Я только никак не знаю, что мне начать. Я хотел серьезно посоветоваться с вами.
Князь Андрей добрыми глазами смотрел на него. Но во взгляде его, дружеском, ласковом, всё таки выражалось сознание своего превосходства.
– Ты мне дорог, особенно потому, что ты один живой человек среди всего нашего света. Тебе хорошо. Выбери, что хочешь; это всё равно. Ты везде будешь хорош, но одно: перестань ты ездить к этим Курагиным, вести эту жизнь. Так это не идет тебе: все эти кутежи, и гусарство, и всё…
– Que voulez vous, mon cher, – сказал Пьер, пожимая плечами, – les femmes, mon cher, les femmes! [Что вы хотите, дорогой мой, женщины, дорогой мой, женщины!]
– Не понимаю, – отвечал Андрей. – Les femmes comme il faut, [Порядочные женщины,] это другое дело; но les femmes Курагина, les femmes et le vin, [женщины Курагина, женщины и вино,] не понимаю!
Пьер жил y князя Василия Курагина и участвовал в разгульной жизни его сына Анатоля, того самого, которого для исправления собирались женить на сестре князя Андрея.
– Знаете что, – сказал Пьер, как будто ему пришла неожиданно счастливая мысль, – серьезно, я давно это думал. С этою жизнью я ничего не могу ни решить, ни обдумать. Голова болит, денег нет. Нынче он меня звал, я не поеду.
– Дай мне честное слово, что ты не будешь ездить?
– Честное слово!


Уже был второй час ночи, когда Пьер вышел oт своего друга. Ночь была июньская, петербургская, бессумрачная ночь. Пьер сел в извозчичью коляску с намерением ехать домой. Но чем ближе он подъезжал, тем более он чувствовал невозможность заснуть в эту ночь, походившую более на вечер или на утро. Далеко было видно по пустым улицам. Дорогой Пьер вспомнил, что у Анатоля Курагина нынче вечером должно было собраться обычное игорное общество, после которого обыкновенно шла попойка, кончавшаяся одним из любимых увеселений Пьера.
«Хорошо бы было поехать к Курагину», подумал он.
Но тотчас же он вспомнил данное князю Андрею честное слово не бывать у Курагина. Но тотчас же, как это бывает с людьми, называемыми бесхарактерными, ему так страстно захотелось еще раз испытать эту столь знакомую ему беспутную жизнь, что он решился ехать. И тотчас же ему пришла в голову мысль, что данное слово ничего не значит, потому что еще прежде, чем князю Андрею, он дал также князю Анатолю слово быть у него; наконец, он подумал, что все эти честные слова – такие условные вещи, не имеющие никакого определенного смысла, особенно ежели сообразить, что, может быть, завтра же или он умрет или случится с ним что нибудь такое необыкновенное, что не будет уже ни честного, ни бесчестного. Такого рода рассуждения, уничтожая все его решения и предположения, часто приходили к Пьеру. Он поехал к Курагину.
Подъехав к крыльцу большого дома у конно гвардейских казарм, в которых жил Анатоль, он поднялся на освещенное крыльцо, на лестницу, и вошел в отворенную дверь. В передней никого не было; валялись пустые бутылки, плащи, калоши; пахло вином, слышался дальний говор и крик.
Игра и ужин уже кончились, но гости еще не разъезжались. Пьер скинул плащ и вошел в первую комнату, где стояли остатки ужина и один лакей, думая, что его никто не видит, допивал тайком недопитые стаканы. Из третьей комнаты слышались возня, хохот, крики знакомых голосов и рев медведя.
Человек восемь молодых людей толпились озабоченно около открытого окна. Трое возились с молодым медведем, которого один таскал на цепи, пугая им другого.
– Держу за Стивенса сто! – кричал один.
– Смотри не поддерживать! – кричал другой.
– Я за Долохова! – кричал третий. – Разними, Курагин.
– Ну, бросьте Мишку, тут пари.
– Одним духом, иначе проиграно, – кричал четвертый.
– Яков, давай бутылку, Яков! – кричал сам хозяин, высокий красавец, стоявший посреди толпы в одной тонкой рубашке, раскрытой на средине груди. – Стойте, господа. Вот он Петруша, милый друг, – обратился он к Пьеру.
Другой голос невысокого человека, с ясными голубыми глазами, особенно поражавший среди этих всех пьяных голосов своим трезвым выражением, закричал от окна: «Иди сюда – разойми пари!» Это был Долохов, семеновский офицер, известный игрок и бретёр, живший вместе с Анатолем. Пьер улыбался, весело глядя вокруг себя.
– Ничего не понимаю. В чем дело?
– Стойте, он не пьян. Дай бутылку, – сказал Анатоль и, взяв со стола стакан, подошел к Пьеру.
– Прежде всего пей.
Пьер стал пить стакан за стаканом, исподлобья оглядывая пьяных гостей, которые опять столпились у окна, и прислушиваясь к их говору. Анатоль наливал ему вино и рассказывал, что Долохов держит пари с англичанином Стивенсом, моряком, бывшим тут, в том, что он, Долохов, выпьет бутылку рому, сидя на окне третьего этажа с опущенными наружу ногами.
– Ну, пей же всю! – сказал Анатоль, подавая последний стакан Пьеру, – а то не пущу!
– Нет, не хочу, – сказал Пьер, отталкивая Анатоля, и подошел к окну.
Долохов держал за руку англичанина и ясно, отчетливо выговаривал условия пари, обращаясь преимущественно к Анатолю и Пьеру.
Долохов был человек среднего роста, курчавый и с светлыми, голубыми глазами. Ему было лет двадцать пять. Он не носил усов, как и все пехотные офицеры, и рот его, самая поразительная черта его лица, был весь виден. Линии этого рта были замечательно тонко изогнуты. В средине верхняя губа энергически опускалась на крепкую нижнюю острым клином, и в углах образовывалось постоянно что то вроде двух улыбок, по одной с каждой стороны; и всё вместе, а особенно в соединении с твердым, наглым, умным взглядом, составляло впечатление такое, что нельзя было не заметить этого лица. Долохов был небогатый человек, без всяких связей. И несмотря на то, что Анатоль проживал десятки тысяч, Долохов жил с ним и успел себя поставить так, что Анатоль и все знавшие их уважали Долохова больше, чем Анатоля. Долохов играл во все игры и почти всегда выигрывал. Сколько бы он ни пил, он никогда не терял ясности головы. И Курагин, и Долохов в то время были знаменитостями в мире повес и кутил Петербурга.
Бутылка рому была принесена; раму, не пускавшую сесть на наружный откос окна, выламывали два лакея, видимо торопившиеся и робевшие от советов и криков окружавших господ.
Анатоль с своим победительным видом подошел к окну. Ему хотелось сломать что нибудь. Он оттолкнул лакеев и потянул раму, но рама не сдавалась. Он разбил стекло.
– Ну ка ты, силач, – обратился он к Пьеру.
Пьер взялся за перекладины, потянул и с треском выворотип дубовую раму.
– Всю вон, а то подумают, что я держусь, – сказал Долохов.
– Англичанин хвастает… а?… хорошо?… – говорил Анатоль.
– Хорошо, – сказал Пьер, глядя на Долохова, который, взяв в руки бутылку рома, подходил к окну, из которого виднелся свет неба и сливавшихся на нем утренней и вечерней зари.
Долохов с бутылкой рома в руке вскочил на окно. «Слушать!»
крикнул он, стоя на подоконнике и обращаясь в комнату. Все замолчали.
– Я держу пари (он говорил по французски, чтоб его понял англичанин, и говорил не слишком хорошо на этом языке). Держу пари на пятьдесят империалов, хотите на сто? – прибавил он, обращаясь к англичанину.
– Нет, пятьдесят, – сказал англичанин.
– Хорошо, на пятьдесят империалов, – что я выпью бутылку рома всю, не отнимая ото рта, выпью, сидя за окном, вот на этом месте (он нагнулся и показал покатый выступ стены за окном) и не держась ни за что… Так?…
– Очень хорошо, – сказал англичанин.
Анатоль повернулся к англичанину и, взяв его за пуговицу фрака и сверху глядя на него (англичанин был мал ростом), начал по английски повторять ему условия пари.
– Постой! – закричал Долохов, стуча бутылкой по окну, чтоб обратить на себя внимание. – Постой, Курагин; слушайте. Если кто сделает то же, то я плачу сто империалов. Понимаете?
Англичанин кивнул головой, не давая никак разуметь, намерен ли он или нет принять это новое пари. Анатоль не отпускал англичанина и, несмотря на то что тот, кивая, давал знать что он всё понял, Анатоль переводил ему слова Долохова по английски. Молодой худощавый мальчик, лейб гусар, проигравшийся в этот вечер, взлез на окно, высунулся и посмотрел вниз.
– У!… у!… у!… – проговорил он, глядя за окно на камень тротуара.
– Смирно! – закричал Долохов и сдернул с окна офицера, который, запутавшись шпорами, неловко спрыгнул в комнату.
Поставив бутылку на подоконник, чтобы было удобно достать ее, Долохов осторожно и тихо полез в окно. Спустив ноги и расперевшись обеими руками в края окна, он примерился, уселся, опустил руки, подвинулся направо, налево и достал бутылку. Анатоль принес две свечки и поставил их на подоконник, хотя было уже совсем светло. Спина Долохова в белой рубашке и курчавая голова его были освещены с обеих сторон. Все столпились у окна. Англичанин стоял впереди. Пьер улыбался и ничего не говорил. Один из присутствующих, постарше других, с испуганным и сердитым лицом, вдруг продвинулся вперед и хотел схватить Долохова за рубашку.
– Господа, это глупости; он убьется до смерти, – сказал этот более благоразумный человек.
Анатоль остановил его:
– Не трогай, ты его испугаешь, он убьется. А?… Что тогда?… А?…
Долохов обернулся, поправляясь и опять расперевшись руками.
– Ежели кто ко мне еще будет соваться, – сказал он, редко пропуская слова сквозь стиснутые и тонкие губы, – я того сейчас спущу вот сюда. Ну!…
Сказав «ну»!, он повернулся опять, отпустил руки, взял бутылку и поднес ко рту, закинул назад голову и вскинул кверху свободную руку для перевеса. Один из лакеев, начавший подбирать стекла, остановился в согнутом положении, не спуская глаз с окна и спины Долохова. Анатоль стоял прямо, разинув глаза. Англичанин, выпятив вперед губы, смотрел сбоку. Тот, который останавливал, убежал в угол комнаты и лег на диван лицом к стене. Пьер закрыл лицо, и слабая улыбка, забывшись, осталась на его лице, хоть оно теперь выражало ужас и страх. Все молчали. Пьер отнял от глаз руки: Долохов сидел всё в том же положении, только голова загнулась назад, так что курчавые волосы затылка прикасались к воротнику рубахи, и рука с бутылкой поднималась всё выше и выше, содрогаясь и делая усилие. Бутылка видимо опорожнялась и с тем вместе поднималась, загибая голову. «Что же это так долго?» подумал Пьер. Ему казалось, что прошло больше получаса. Вдруг Долохов сделал движение назад спиной, и рука его нервически задрожала; этого содрогания было достаточно, чтобы сдвинуть всё тело, сидевшее на покатом откосе. Он сдвинулся весь, и еще сильнее задрожали, делая усилие, рука и голова его. Одна рука поднялась, чтобы схватиться за подоконник, но опять опустилась. Пьер опять закрыл глаза и сказал себе, что никогда уж не откроет их. Вдруг он почувствовал, что всё вокруг зашевелилось. Он взглянул: Долохов стоял на подоконнике, лицо его было бледно и весело.
– Пуста!
Он кинул бутылку англичанину, который ловко поймал ее. Долохов спрыгнул с окна. От него сильно пахло ромом.
– Отлично! Молодцом! Вот так пари! Чорт вас возьми совсем! – кричали с разных сторон.
Англичанин, достав кошелек, отсчитывал деньги. Долохов хмурился и молчал. Пьер вскочил на окно.
Господа! Кто хочет со мною пари? Я то же сделаю, – вдруг крикнул он. – И пари не нужно, вот что. Вели дать бутылку. Я сделаю… вели дать.
– Пускай, пускай! – сказал Долохов, улыбаясь.
– Что ты? с ума сошел? Кто тебя пустит? У тебя и на лестнице голова кружится, – заговорили с разных сторон.
– Я выпью, давай бутылку рому! – закричал Пьер, решительным и пьяным жестом ударяя по столу, и полез в окно.
Его схватили за руки; но он был так силен, что далеко оттолкнул того, кто приблизился к нему.
– Нет, его так не уломаешь ни за что, – говорил Анатоль, – постойте, я его обману. Послушай, я с тобой держу пари, но завтра, а теперь мы все едем к***.
– Едем, – закричал Пьер, – едем!… И Мишку с собой берем…
И он ухватил медведя, и, обняв и подняв его, стал кружиться с ним по комнате.


Князь Василий исполнил обещание, данное на вечере у Анны Павловны княгине Друбецкой, просившей его о своем единственном сыне Борисе. О нем было доложено государю, и, не в пример другим, он был переведен в гвардию Семеновского полка прапорщиком. Но адъютантом или состоящим при Кутузове Борис так и не был назначен, несмотря на все хлопоты и происки Анны Михайловны. Вскоре после вечера Анны Павловны Анна Михайловна вернулась в Москву, прямо к своим богатым родственникам Ростовым, у которых она стояла в Москве и у которых с детства воспитывался и годами живал ее обожаемый Боренька, только что произведенный в армейские и тотчас же переведенный в гвардейские прапорщики. Гвардия уже вышла из Петербурга 10 го августа, и сын, оставшийся для обмундирования в Москве, должен был догнать ее по дороге в Радзивилов.
У Ростовых были именинницы Натальи, мать и меньшая дочь. С утра, не переставая, подъезжали и отъезжали цуги, подвозившие поздравителей к большому, всей Москве известному дому графини Ростовой на Поварской. Графиня с красивой старшею дочерью и гостями, не перестававшими сменять один другого, сидели в гостиной.
Графиня была женщина с восточным типом худого лица, лет сорока пяти, видимо изнуренная детьми, которых у ней было двенадцать человек. Медлительность ее движений и говора, происходившая от слабости сил, придавала ей значительный вид, внушавший уважение. Княгиня Анна Михайловна Друбецкая, как домашний человек, сидела тут же, помогая в деле принимания и занимания разговором гостей. Молодежь была в задних комнатах, не находя нужным участвовать в приеме визитов. Граф встречал и провожал гостей, приглашая всех к обеду.
«Очень, очень вам благодарен, ma chere или mon cher [моя дорогая или мой дорогой] (ma сherе или mon cher он говорил всем без исключения, без малейших оттенков как выше, так и ниже его стоявшим людям) за себя и за дорогих именинниц. Смотрите же, приезжайте обедать. Вы меня обидите, mon cher. Душевно прошу вас от всего семейства, ma chere». Эти слова с одинаковым выражением на полном веселом и чисто выбритом лице и с одинаково крепким пожатием руки и повторяемыми короткими поклонами говорил он всем без исключения и изменения. Проводив одного гостя, граф возвращался к тому или той, которые еще были в гостиной; придвинув кресла и с видом человека, любящего и умеющего пожить, молодецки расставив ноги и положив на колена руки, он значительно покачивался, предлагал догадки о погоде, советовался о здоровье, иногда на русском, иногда на очень дурном, но самоуверенном французском языке, и снова с видом усталого, но твердого в исполнении обязанности человека шел провожать, оправляя редкие седые волосы на лысине, и опять звал обедать. Иногда, возвращаясь из передней, он заходил через цветочную и официантскую в большую мраморную залу, где накрывали стол на восемьдесят кувертов, и, глядя на официантов, носивших серебро и фарфор, расставлявших столы и развертывавших камчатные скатерти, подзывал к себе Дмитрия Васильевича, дворянина, занимавшегося всеми его делами, и говорил: «Ну, ну, Митенька, смотри, чтоб всё было хорошо. Так, так, – говорил он, с удовольствием оглядывая огромный раздвинутый стол. – Главное – сервировка. То то…» И он уходил, самодовольно вздыхая, опять в гостиную.
– Марья Львовна Карагина с дочерью! – басом доложил огромный графинин выездной лакей, входя в двери гостиной.
Графиня подумала и понюхала из золотой табакерки с портретом мужа.
– Замучили меня эти визиты, – сказала она. – Ну, уж ее последнюю приму. Чопорна очень. Проси, – сказала она лакею грустным голосом, как будто говорила: «ну, уж добивайте!»
Высокая, полная, с гордым видом дама с круглолицей улыбающейся дочкой, шумя платьями, вошли в гостиную.
«Chere comtesse, il y a si longtemps… elle a ete alitee la pauvre enfant… au bal des Razoumowsky… et la comtesse Apraksine… j'ai ete si heureuse…» [Дорогая графиня, как давно… она должна была пролежать в постеле, бедное дитя… на балу у Разумовских… и графиня Апраксина… была так счастлива…] послышались оживленные женские голоса, перебивая один другой и сливаясь с шумом платьев и передвиганием стульев. Начался тот разговор, который затевают ровно настолько, чтобы при первой паузе встать, зашуметь платьями, проговорить: «Je suis bien charmee; la sante de maman… et la comtesse Apraksine» [Я в восхищении; здоровье мамы… и графиня Апраксина] и, опять зашумев платьями, пройти в переднюю, надеть шубу или плащ и уехать. Разговор зашел о главной городской новости того времени – о болезни известного богача и красавца Екатерининского времени старого графа Безухого и о его незаконном сыне Пьере, который так неприлично вел себя на вечере у Анны Павловны Шерер.
– Я очень жалею бедного графа, – проговорила гостья, – здоровье его и так плохо, а теперь это огорченье от сына, это его убьет!
– Что такое? – спросила графиня, как будто не зная, о чем говорит гостья, хотя она раз пятнадцать уже слышала причину огорчения графа Безухого.
– Вот нынешнее воспитание! Еще за границей, – проговорила гостья, – этот молодой человек предоставлен был самому себе, и теперь в Петербурге, говорят, он такие ужасы наделал, что его с полицией выслали оттуда.
– Скажите! – сказала графиня.
– Он дурно выбирал свои знакомства, – вмешалась княгиня Анна Михайловна. – Сын князя Василия, он и один Долохов, они, говорят, Бог знает что делали. И оба пострадали. Долохов разжалован в солдаты, а сын Безухого выслан в Москву. Анатоля Курагина – того отец как то замял. Но выслали таки из Петербурга.
– Да что, бишь, они сделали? – спросила графиня.
– Это совершенные разбойники, особенно Долохов, – говорила гостья. – Он сын Марьи Ивановны Долоховой, такой почтенной дамы, и что же? Можете себе представить: они втроем достали где то медведя, посадили с собой в карету и повезли к актрисам. Прибежала полиция их унимать. Они поймали квартального и привязали его спина со спиной к медведю и пустили медведя в Мойку; медведь плавает, а квартальный на нем.
– Хороша, ma chere, фигура квартального, – закричал граф, помирая со смеху.
– Ах, ужас какой! Чему тут смеяться, граф?
Но дамы невольно смеялись и сами.
– Насилу спасли этого несчастного, – продолжала гостья. – И это сын графа Кирилла Владимировича Безухова так умно забавляется! – прибавила она. – А говорили, что так хорошо воспитан и умен. Вот всё воспитание заграничное куда довело. Надеюсь, что здесь его никто не примет, несмотря на его богатство. Мне хотели его представить. Я решительно отказалась: у меня дочери.
– Отчего вы говорите, что этот молодой человек так богат? – спросила графиня, нагибаясь от девиц, которые тотчас же сделали вид, что не слушают. – Ведь у него только незаконные дети. Кажется… и Пьер незаконный.
Гостья махнула рукой.
– У него их двадцать незаконных, я думаю.
Княгиня Анна Михайловна вмешалась в разговор, видимо, желая выказать свои связи и свое знание всех светских обстоятельств.
– Вот в чем дело, – сказала она значительно и тоже полушопотом. – Репутация графа Кирилла Владимировича известна… Детям своим он и счет потерял, но этот Пьер любимый был.
– Как старик был хорош, – сказала графиня, – еще прошлого года! Красивее мужчины я не видывала.
– Теперь очень переменился, – сказала Анна Михайловна. – Так я хотела сказать, – продолжала она, – по жене прямой наследник всего именья князь Василий, но Пьера отец очень любил, занимался его воспитанием и писал государю… так что никто не знает, ежели он умрет (он так плох, что этого ждут каждую минуту, и Lorrain приехал из Петербурга), кому достанется это огромное состояние, Пьеру или князю Василию. Сорок тысяч душ и миллионы. Я это очень хорошо знаю, потому что мне сам князь Василий это говорил. Да и Кирилл Владимирович мне приходится троюродным дядей по матери. Он и крестил Борю, – прибавила она, как будто не приписывая этому обстоятельству никакого значения.
– Князь Василий приехал в Москву вчера. Он едет на ревизию, мне говорили, – сказала гостья.
– Да, но, entre nous, [между нами,] – сказала княгиня, – это предлог, он приехал собственно к графу Кирилле Владимировичу, узнав, что он так плох.
– Однако, ma chere, это славная штука, – сказал граф и, заметив, что старшая гостья его не слушала, обратился уже к барышням. – Хороша фигура была у квартального, я воображаю.
И он, представив, как махал руками квартальный, опять захохотал звучным и басистым смехом, колебавшим всё его полное тело, как смеются люди, всегда хорошо евшие и особенно пившие. – Так, пожалуйста же, обедать к нам, – сказал он.


Наступило молчание. Графиня глядела на гостью, приятно улыбаясь, впрочем, не скрывая того, что не огорчится теперь нисколько, если гостья поднимется и уедет. Дочь гостьи уже оправляла платье, вопросительно глядя на мать, как вдруг из соседней комнаты послышался бег к двери нескольких мужских и женских ног, грохот зацепленного и поваленного стула, и в комнату вбежала тринадцатилетняя девочка, запахнув что то короткою кисейною юбкою, и остановилась по средине комнаты. Очевидно было, она нечаянно, с нерассчитанного бега, заскочила так далеко. В дверях в ту же минуту показались студент с малиновым воротником, гвардейский офицер, пятнадцатилетняя девочка и толстый румяный мальчик в детской курточке.
Граф вскочил и, раскачиваясь, широко расставил руки вокруг бежавшей девочки.
– А, вот она! – смеясь закричал он. – Именинница! Ma chere, именинница!
– Ma chere, il y a un temps pour tout, [Милая, на все есть время,] – сказала графиня, притворяясь строгою. – Ты ее все балуешь, Elie, – прибавила она мужу.
– Bonjour, ma chere, je vous felicite, [Здравствуйте, моя милая, поздравляю вас,] – сказала гостья. – Quelle delicuse enfant! [Какое прелестное дитя!] – прибавила она, обращаясь к матери.
Черноглазая, с большим ртом, некрасивая, но живая девочка, с своими детскими открытыми плечиками, которые, сжимаясь, двигались в своем корсаже от быстрого бега, с своими сбившимися назад черными кудрями, тоненькими оголенными руками и маленькими ножками в кружевных панталончиках и открытых башмачках, была в том милом возрасте, когда девочка уже не ребенок, а ребенок еще не девушка. Вывернувшись от отца, она подбежала к матери и, не обращая никакого внимания на ее строгое замечание, спрятала свое раскрасневшееся лицо в кружевах материной мантильи и засмеялась. Она смеялась чему то, толкуя отрывисто про куклу, которую вынула из под юбочки.
– Видите?… Кукла… Мими… Видите.
И Наташа не могла больше говорить (ей всё смешно казалось). Она упала на мать и расхохоталась так громко и звонко, что все, даже чопорная гостья, против воли засмеялись.
– Ну, поди, поди с своим уродом! – сказала мать, притворно сердито отталкивая дочь. – Это моя меньшая, – обратилась она к гостье.
Наташа, оторвав на минуту лицо от кружевной косынки матери, взглянула на нее снизу сквозь слезы смеха и опять спрятала лицо.
Гостья, принужденная любоваться семейною сценой, сочла нужным принять в ней какое нибудь участие.
– Скажите, моя милая, – сказала она, обращаясь к Наташе, – как же вам приходится эта Мими? Дочь, верно?
Наташе не понравился тон снисхождения до детского разговора, с которым гостья обратилась к ней. Она ничего не ответила и серьезно посмотрела на гостью.
Между тем всё это молодое поколение: Борис – офицер, сын княгини Анны Михайловны, Николай – студент, старший сын графа, Соня – пятнадцатилетняя племянница графа, и маленький Петруша – меньшой сын, все разместились в гостиной и, видимо, старались удержать в границах приличия оживление и веселость, которыми еще дышала каждая их черта. Видно было, что там, в задних комнатах, откуда они все так стремительно прибежали, у них были разговоры веселее, чем здесь о городских сплетнях, погоде и comtesse Apraksine. [о графине Апраксиной.] Изредка они взглядывали друг на друга и едва удерживались от смеха.
Два молодые человека, студент и офицер, друзья с детства, были одних лет и оба красивы, но не похожи друг на друга. Борис был высокий белокурый юноша с правильными тонкими чертами спокойного и красивого лица; Николай был невысокий курчавый молодой человек с открытым выражением лица. На верхней губе его уже показывались черные волосики, и во всем лице выражались стремительность и восторженность.
Николай покраснел, как только вошел в гостиную. Видно было, что он искал и не находил, что сказать; Борис, напротив, тотчас же нашелся и рассказал спокойно, шутливо, как эту Мими куклу он знал еще молодою девицей с неиспорченным еще носом, как она в пять лет на его памяти состарелась и как у ней по всему черепу треснула голова. Сказав это, он взглянул на Наташу. Наташа отвернулась от него, взглянула на младшего брата, который, зажмурившись, трясся от беззвучного смеха, и, не в силах более удерживаться, прыгнула и побежала из комнаты так скоро, как только могли нести ее быстрые ножки. Борис не рассмеялся.
– Вы, кажется, тоже хотели ехать, maman? Карета нужна? – .сказал он, с улыбкой обращаясь к матери.
– Да, поди, поди, вели приготовить, – сказала она, уливаясь.
Борис вышел тихо в двери и пошел за Наташей, толстый мальчик сердито побежал за ними, как будто досадуя на расстройство, происшедшее в его занятиях.


Из молодежи, не считая старшей дочери графини (которая была четырьмя годами старше сестры и держала себя уже, как большая) и гостьи барышни, в гостиной остались Николай и Соня племянница. Соня была тоненькая, миниатюрненькая брюнетка с мягким, отененным длинными ресницами взглядом, густой черною косой, два раза обвившею ее голову, и желтоватым оттенком кожи на лице и в особенности на обнаженных худощавых, но грациозных мускулистых руках и шее. Плавностью движений, мягкостью и гибкостью маленьких членов и несколько хитрою и сдержанною манерой она напоминала красивого, но еще не сформировавшегося котенка, который будет прелестною кошечкой. Она, видимо, считала приличным выказывать улыбкой участие к общему разговору; но против воли ее глаза из под длинных густых ресниц смотрели на уезжавшего в армию cousin [двоюродного брата] с таким девическим страстным обожанием, что улыбка ее не могла ни на мгновение обмануть никого, и видно было, что кошечка присела только для того, чтоб еще энергичнее прыгнуть и заиграть с своим соusin, как скоро только они так же, как Борис с Наташей, выберутся из этой гостиной.
– Да, ma chere, – сказал старый граф, обращаясь к гостье и указывая на своего Николая. – Вот его друг Борис произведен в офицеры, и он из дружбы не хочет отставать от него; бросает и университет и меня старика: идет в военную службу, ma chere. А уж ему место в архиве было готово, и всё. Вот дружба то? – сказал граф вопросительно.
– Да ведь война, говорят, объявлена, – сказала гостья.
– Давно говорят, – сказал граф. – Опять поговорят, поговорят, да так и оставят. Ma chere, вот дружба то! – повторил он. – Он идет в гусары.
Гостья, не зная, что сказать, покачала головой.
– Совсем не из дружбы, – отвечал Николай, вспыхнув и отговариваясь как будто от постыдного на него наклепа. – Совсем не дружба, а просто чувствую призвание к военной службе.
Он оглянулся на кузину и на гостью барышню: обе смотрели на него с улыбкой одобрения.
– Нынче обедает у нас Шуберт, полковник Павлоградского гусарского полка. Он был в отпуску здесь и берет его с собой. Что делать? – сказал граф, пожимая плечами и говоря шуточно о деле, которое, видимо, стоило ему много горя.
– Я уж вам говорил, папенька, – сказал сын, – что ежели вам не хочется меня отпустить, я останусь. Но я знаю, что я никуда не гожусь, кроме как в военную службу; я не дипломат, не чиновник, не умею скрывать того, что чувствую, – говорил он, всё поглядывая с кокетством красивой молодости на Соню и гостью барышню.
Кошечка, впиваясь в него глазами, казалась каждую секунду готовою заиграть и выказать всю свою кошачью натуру.
– Ну, ну, хорошо! – сказал старый граф, – всё горячится. Всё Бонапарте всем голову вскружил; все думают, как это он из поручиков попал в императоры. Что ж, дай Бог, – прибавил он, не замечая насмешливой улыбки гостьи.
Большие заговорили о Бонапарте. Жюли, дочь Карагиной, обратилась к молодому Ростову:
– Как жаль, что вас не было в четверг у Архаровых. Мне скучно было без вас, – сказала она, нежно улыбаясь ему.
Польщенный молодой человек с кокетливой улыбкой молодости ближе пересел к ней и вступил с улыбающейся Жюли в отдельный разговор, совсем не замечая того, что эта его невольная улыбка ножом ревности резала сердце красневшей и притворно улыбавшейся Сони. – В середине разговора он оглянулся на нее. Соня страстно озлобленно взглянула на него и, едва удерживая на глазах слезы, а на губах притворную улыбку, встала и вышла из комнаты. Всё оживление Николая исчезло. Он выждал первый перерыв разговора и с расстроенным лицом вышел из комнаты отыскивать Соню.