Buscar

gerenciamento de disco EXT3 x MFT

Prévia do material em texto

Sistemas Operacionais 2
Trabalho de Pesquisa EXT3 x NTFS
Caio Chizzolini. R.A: 101629150
Fernando Caique. R.A: 101629419
Descreva a estrutura (struct real) de alocação de arquivos do NTFS, conhecida como MFT (Master File Table) e a estrutura do registro da entrada de diretório do NTFS.
typedef struct _ATTRIBUTE_LIST_ENTRY {
 ATTRIBUTE_TYPE_CODE AttributeTypeCode;
 USHORT RecordLength;
 UCHAR AttributeNameLength;
 UCHAR AttributeNameOffset;
 VCN LowestVcn;
 MFT_SEGMENT_REFERENCE SegmentReference;
 USHORT Reserved;
 WCHAR AttributeName[1];
} ATTRIBUTE_LIST_ENTRY, *PATTRIBUTE_LIST_ENTRY;
typedef struct _ATTRIBUTE_RECORD_HEADER {
 ATTRIBUTE_TYPE_CODE TypeCode;
 ULONG RecordLength;
 UCHAR FormCode;
 UCHAR NameLength;
 USHORT NameOffset;
 USHORT Flags;
 USHORT Instance;
 union {
 struct {
 ULONG ValueLength;
 USHORT ValueOffset;
 UCHAR Reserved[2];
 } Resident;
 struct {
 VCN LowestVcn;
 VCN HighestVcn;
 USHORT MappingPairsOffset;
 UCHAR Reserved[6];
 LONGLONG AllocatedLength;
 LONGLONG FileSize;
 LONGLONG ValidDataLength;
 LONGLONG TotalAllocated;
 } Nonresident;
 } Form;
} ATTRIBUTE_RECORD_HEADER, *PATTRIBUTE_RECORD_HEADER;
typedef struct _FILE_NAME {
 FILE_REFERENCE ParentDirectory;
 UCHAR Reserved[0x38];
 UCHAR FileNameLength;
 UCHAR Flags;
 WCHAR FileName[1];
} FILE_NAME, *PFILE_NAME;
typedef struct _FILE_RECORD_SEGMENT_HEADER {
 MULTI_SECTOR_HEADER MultiSectorHeader;
 ULONGLONG Reserved1;
 USHORT SequenceNumber;
 USHORT Reserved2;
 USHORT FirstAttributeOffset;
 USHORT Flags;
 ULONG Reserved3[2];
 FILE_REFERENCE BaseFileRecordSegment;
 USHORT Reserved4;
 UPDATE_SEQUENCE_ARRAY UpdateSequenceArray;
} FILE_RECORD_SEGMENT_HEADER, *PFILE_RECORD_SEGMENT_HEADER;
typedef struct _MFT_SEGMENT_REFERENCE {
 ULONG SegmentNumberLowPart;
 USHORT SegmentNumberHighPart;
 USHORT SequenceNumber;
} MFT_SEGMENT_REFERENCE, *PMFT_SEGMENT_REFERENCE;
typedef struct _MULTI_SECTOR_HEADER {
 UCHAR Signature[4];
 USHORT UpdateSequenceArrayOffset;
 USHORT UpdateSequenceArraySize;
} MULTI_SECTOR_HEADER, *PMULTI_SECTOR_HEADER;
typedef struct _STANDARD_INFORMATION {
 UCHAR Reserved[0x30];
 ULONG OwnerId;
 ULONG SecurityId;
} STANDARD_INFORMATION, *PSTANDARD_INFORMATION;
2) Descreva a estrutura (struct real) de alocação do I-node e a estrutura do registro da entrada de diretório do Linux.
struct ext3_group_desc
{
	__le32 bg_block_bitmap; /* Blocks bitmap block */
	__le32 bg_inode_bitmap; /* Inodes bitmap block */
	__le32 bg_inode_table; /* Inodes table block */
	__le16 bg_free_blocks_count; /* Free blocks count */
	__le16 bg_free_inodes_count; /* Free inodes count */
	__le16 bg_used_dirs_count; /* Directories count */
	__u16 bg_pad;
	__le32 bg_reserved[3];
};
struct ext3_inode {
	__le16 i_mode; /* File mode */
	__le16 i_uid; /* Low 16 bits of Owner Uid */
	__le32 i_size; /* Size in bytes */
	__le32 i_atime; /* Access time */
	__le32 i_ctime; /* Creation time */
	__le32 i_mtime; /* Modification time */
	__le32 i_dtime; /* Deletion Time */
	__le16 i_gid; /* Low 16 bits of Group Id */
	__le16 i_links_count; /* Links count */
	__le32 i_blocks; /* Blocks count */
	__le32 i_flags; /* File flags */
	union {
		struct {
			__u32 l_i_reserved1;
		} linux1;
		struct {
			__u32 h_i_translator;
		} hurd1;
		struct {
			__u32 m_i_reserved1;
		} masix1;
	} osd1; /* OS dependent 1 */
	__le32 i_block[EXT3_N_BLOCKS];/* Pointers to blocks */
	__le32 i_generation; /* File version (for NFS) */
	__le32 i_file_acl; /* File ACL */
	__le32 i_dir_acl; /* Directory ACL */
	__le32 i_faddr; /* Fragment address */
	union {
		struct {
			__u8 l_i_frag; /* Fragment number */
			__u8 l_i_fsize; /* Fragment size */
			__u16 i_pad1;
			__le16 l_i_uid_high; /* these 2 fields */
			__le16 l_i_gid_high; /* were reserved2[0] */
			__u32 l_i_reserved2;
		} linux2;
		struct {
			__u8 h_i_frag; /* Fragment number */
			__u8 h_i_fsize; /* Fragment size */
			__u16 h_i_mode_high;
			__u16 h_i_uid_high;
			__u16 h_i_gid_high;
			__u32 h_i_author;
		} hurd2;
		struct {
			__u8 m_i_frag; /* Fragment number */
			__u8 m_i_fsize; /* Fragment size */
			__u16 m_pad1;
			__u32 m_i_reserved2[2];
		} masix2;
	} osd2; /* OS dependent 2 */
	__le16 i_extra_isize;
	__le16 i_pad1;
};
3) Compare um i-node a um registro da MFT em relação aos seguintes aspectos:
a) Onde são armazenados os atributos em cada uma dessas estruturas de alocação?
No I-node os atributos ficam em sua própria estrutura, que tem um bloco header com os dados do arquivos e um bloco de ponteiros para os blocos no disco que fazem parte do arquivo.
Já a MFT é um sequência linear de registros com tamanho fixo de 1 KB, e cada registro descreve somente um arquivo ou diretório. Cada registro da MFT constitui uma sequência de pares (cabeçalho do atributo, valor). Cada atributo começa com um cabeçalho que indica qual é o atributo e o tamanho do valor, pois alguns valores de atributos tem o tamanho variável, como o nome do arquivo e os dados. Se o valor do atributo for suficientemente curto para caber em um registro da MFT, ele será colocado lá. Se for muito grande, será colocado em outro lugar do disco e um ponteiro para ele será inserido no registro da MFT.
b) Em sistemas baseados em i-nodes, quando um arquivo cresce além do limite da estrutura de alocação, são utilizados blocos indiretos para acomodar os endereços do arquivo. Explique o que precisa ser feito quando um arquivo cresce além do limite de espaço de um registro da MFT.
Quando um arquivo cresce além do limite de espaço de um registro da MFT, é usado dois ou mais registros da MFT e calcula-se quantos registros de extensão ele precisa e então são inseridos seus índices no registro-base...
4)
Cada partição de sistema de arquivos é dividida em grupos de blocos. Cada grupo de blocos inicia com um superbloco, que informa quantos blocos e i-nodes existem, qual é o tamanho do bloco, etc. Depois vem o descritor de grupos, com informações sobre a localização dos mapas de bits, do número de blocos e i-nodes livres no grupo e o número de diretórios no grupo. Estruturas como tabelas de i-node são alocadas entre os grupos de blocos para que os blocos que são acessados juntos possam ser armazenados próximos uns dos outros no disco. Esse agrupamento aumenta a velocidade de acesso ao arquivo e reduz o tempo de procura por blocos do mesmo arquivo.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

3 pág.
lista07

Colégio Dom Bosco

User badge image

mariaester041092

64 pág.
aula21

Colégio Dom Bosco

User badge image

mariaester041092

Perguntas Recentes