Selasa, 23 Juni 2009

I. FILE

Pengertian File

File adalah sekumpulan data/informasi yang saling berhubungan sesuai dengan tujuan pembuatnya.

Data pada file bisa berupa numerik, alpha numerik binary atau text. Setiap File memiliki nama dan pengacuan terhadap suatu file menggunakan nama file tersebut. Pada Linux penamaan File bersifat case sensitif yaitu membedakan antara lower case dan upper case letters sehingga file-file Tugas, tugas, TUGAS, TUGas merupakan file-file yang berbeda. Sebagai perbandingan, pada MS-DOS, file-file tadi dianggap sama.

Pemberian nama dan extention pada Linux tidak dibatasi jumlah karakternya dan suatu file dapat memiliki lebih dari satu extention. Contohnya: prog.c.z yairu prog.c yang sudah dikompres. Selain nama, file memiliki atribut seperti tipe, size, time, date, dan user identification, protection dll. Tipe dari file dikenal dari extentionnya. Dengan tipe inilah OS dapat merespon file secara tepat.

File biasanya disimpan dalam media disk (floppy disk, harddisk, atau CD).

Operasi-operasi file yang biasa dilakukan antara lain: OPEN, CLOSE, CREATE, DELETE, COPY, RENAME, READ, WRITE, UPDATE, INSERT, APPEND.

Pathname

Setiap file memiliki pathname ada 2 macam pathname yaitu:

  • Pathname absolut suatu file didapat dari menelusuri path dari root directory, melewati semua direktori sampai ke file yang diinginkan. Pathname absolute diawali dengan /.
  • Pathname relatif menelusuri path dari direktori yang sedang digunakan(direktori kerja). Suatu pathname yang tidak diawali / adalah suatu pathname relatif. Seperti pathname absolute, pathname ini mendeskripsikan path melalui direktori yang dilewati.

Pembagian File

Pada umunya, ada dua macam file yang berada pada struktur file, yaitu file direktori dan file biasa. File biasa menyimpan data, sedang file direktori meyimpan nama file yang terdapat pada direktori tersebut.

Sebagian besar file, hanya merupakan file biasa yang disebut file regular yang berisi data biasa sebagai contoh file text, file executable, atau program, input atau output dari program dan lainnya. Selain file biasa ada file-file khusus seperti berikut :

· Directories: file yang berisi daftar dari file lain.

· Special files: mekanisme yang digunakan untuk input dan output. Sebagian besar terdapat pada direktori /dev.

· Links: Sistem untuk membuat file atau direktori dapat terlihat di banayk bagian dari pohon file sistem.

· (Domain) sockets: Jenis file khusus, mirip dengan soket TCP/IP, yang menyediakan jaringan antar proses yang terproteksi oleh file system's access control.

· Named pipes: berfungsi kurang lebih seperti soket dan membentuk jalur untuk proses komunikasi.

Tabel Subdirektori dari Direktori Root

Direktori

Isi

/bin

Program-program umum, dipakai oleh system, administrator dan user

/boot

File startup dan kernel, vmlinuz. Pada distribusi sekarang ini termasuk grub data. Grub adalah GRand Unified Boot loader dan dapat menggantikan banyak boot-loaders yang berbeda yang kita ketahui sekaranag ini.

/dev

Berisi referensi kepada semua komponen hardware CPU, yang direpresentasikan dengan property khusus.

/etc

File konfigurasi sistem paling penting terdapat pada /etc, direktori ini meyimpan data yang mirip dengan Control Panel pada Windows.

/home

Direktori home untuk semua user umum.

/initrd

(pada beberapa distribusi) Berisi informasi untuk booting. Tidak boleh dihapus!

/lib

File library, termasuk file – file untuk semua jenis program yang dibutuhkan oleh sistem dan user.

/lost+found

Setiap partisi memiliki sebuah lost+found pada setiap direktori diatasnya. File – file yang tersimpan sebelum terjadi crash tersimpan disini.

/misc

Untuk pengunaan serba guna.

/mnt

Titik penyambungan standar untuk file sistem eksternal, seperti CD-ROM, kamera digital, floppy, USB

/net

Titik penyambungan standar untuk file sistem remote

/opt

Pada umumnya berisi software ekstra dan pihak ketiga (tambahan)

/proc

Sebuah virtual file system yang mengandung informasi mengenai system resource. Informasi lebih lanjut mengenai pengertian dari file pada proc diketahui dengan memasukkan perintah man proc pada terminal. File proc.txt membicarakan detil dari virtual file system.

/root

Direktori home dari user administrator. Perlu dibedakan antara /,direktori root dan /root, direktori home dari user root

/sbin

Program-program yang dipakai oleh sistem dan administrator

/tmp

Memori sementara yang dipakai oleh sistem.

/usr

Program-program, libraries, dokumentasi dll. Untuk semua program yang terkait dengan user.

/var

Media penyimpanan untuk semua file variabel dan file sementara yang dibuat oleh user seperti file log, antrian mail, print spooler area, memori untuk penyimpanan sementara dari file yang sudah di download dari internet atau untuk menyimpan image dari CD sebelum dibakar.

Operasi pada File dan Direktori

File

  • cat Menampilkan isi file.
  • cp Menyalin satu atau beberapa file.
  • find Mencari file tertentu pada suatu direktori.
  • ls Menampilkan informasi dari file.
  • more Menampilkan isi suatu file teks per layar.
  • mv Memindahkan file ke direktori lain atau mengubah nama file.
  • pg Menampilkan isi suatu file teks per layar.
  • rm Menghapus file.

Direktori

  • cd Mengaktifkan suatu direktori sebagai direktori kerja.
  • copy Menyalin seluruh struktur direktori (termasuk file dan subdirektori).
  • mkdir Membuat direktori baru.
  • pwd Menampilkan nama direktori kerja.
  • rmdir Menghapus direktori.
  • mv Mengubah nama direktori.

Struktur File

Adapun struktur dari file dapat dilihat seperti berikut ini:

struct file {

struct list_head f_list;

struct dentry *f_dentry;

struct file_operations *f_op;

atomic_t f_count;

unsigned int f_flags;

mode_t f_mode;

loff_t f_pos;

unsigned long f_reada,f_ramax,f_raend,f_ralen,f_rawin;

struct fown_struct f_owner;

unsigned int f_uid,f_gid;

int f_error;

unsigned long f_version;

/* needed for tty driver and maybe others */

void *private_data;

};

Penjelasan dari struktur file diatas:

  • f_list : menyambungkan semua file ke dalam beberapa list
  • f_dentry : pointer yang menunjuk pada objek dentry yang berkaitan
  • f_op : pointer yang menunjuk pada tabel operasi tabel
  • f_mode : mode proses akses
  • f_pos : current file offset (pointer file)
  • f_count : counter penggunaan obyek file
  • f_flags : flag yang dibuat saat file dibuka
  • f_reada : flag yang digunakan untuk read head
  • f_ramax : jumlah maksimum page yang akan di-read ahead
  • f_raend : pointer file setelah read ahead terakhir
  • f_ralen : jumlah byte yang di-read ahead
  • f_rawin : jumlah page yang di-read ahead
  • f_owner : data untuk I/O asynchronous melalui signal
  • f_uid : ID user pemilik file
  • f_gid : ID grup user pemilik file
  • f_error : kode kesalahan untuk operasi write network


II. FILE SISTEM

Gambaran Umum File Sistem

Selain format fisik, hard diskjuga menyimpan struktur datanya dalam suatu format lojik. Format yang dipakai ini diberi nama File Sistem. Jadi, File Sistem adalah suatu struktur yang digunakan sistem operasi untuk menyimpan dan membaca data dari hard disk.

Adapun contoh-contoh format file system sebagai berikut : FAT (File Allocation Table), FAT32 (File Allocation Table 32), NTFS (New Technology File System) (Ketiga varian ini umum digunakan untuk platform Windows), Ext, Ext2, Ext3 (Ketiga varian ini umum digunakan untuk platform Linux), OS/2, HPFS, Reiser dll.

Pembagian File Sistem Secara Ortogonal

Shareable dan Unshareable

  1. Shareable

Isinya dapat di-share (digunakan bersama) dengan sistem lain, gunanya untuk

menghemat tempat.

  1. Unshareable

Isinya tidak dapat di-share(digunakan bersama) dengan sistem lain, biasanya untuk

alasan keamanan.

Variabel dan Static

  1. Variabel

Isinya sering berubah-ubah.

  1. Static

Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah jika ada

campur tangan sistem admin.

Langkah-langkah Optimasi File Sistem

· Kurangi jumlah I/O yang mengakses storage device sebanyak mungkin

· Kelompokkan I/O menjadi kelompok yang besar

· Optimasi pola pencarian blok untuk mengurangi seek time

· Gunakan cache semaksimal mungkin untuk mengurangi beban I/O device

Virtual File System pada Linux

Kernel Linux telah mengembangkan VFS (Virtual File System) yang dapat mengenali data yang menggunakan File Sistem lain. File Sistem yang dikenali oleh Virtual File System Linux terbagi menjadi 3jenis, yaitu:

  1. Disk Based filesystem

Tipe file sistem ini memanage space memori yang bisa digunakan pada partisi disk local. Tipe file sistem ini yang lumrah adalah Ext2. Tipe lain yang dikenal dengan baik oleh

VFS adalah :

1. File system bagi varian Unix seperti system V dan BSD.

2. Microsoft filesystem seperti MS-DOS, VFAT (Windows 98) dan NTFS (Windows NT).

3. File system ISO96660 CD-ROM.

4. File system lain seperti HPFS (IBM’s, OS/2), HFS (Apple Machintosh), FFS (Amiga’s Fast Filesystem) dan ADFS (Acorn’s machines).

  1. Network Filesystem

Tipe sistem file ini memungkinkan akses yang mudah ke suatu file yang terdapat pada

jaringan komputer lain. Beberapa filesystem jenis ini yang dikenal dengan baik oleh VFS adalah : NFS, Coda, AFS (Andrews Filesystem), SMB (Microsoft’s Windows dan IBM’s OS/2 LAN Manager) dan NCP (Novell’s NetWare Core Protocol).

  1. Special Filesystem

Tipe ini tidak mengijinkan mengatur space disk. Pada direktori /proc menyediakan interface yang mengijinkan user untuk mengakses struktur data kernel. Direktori /dev/pts digunakan sebagai pendukung terminal semu. Seperti yang digambarkan pada standar Open Group’s Unix98.

Mounting dan Unmounting

Agar suatu file system dapat dikenali oleh Virtual File System Linux, perlu dilakukan suatu proses yang disebut mounting.

Proses mounting sebenarnya adalah merepresentasikan file yang terdapat pada device eksternal (misal: disket) yang menggunakan file sistem lain menjadi inode sementara agar dapat dibaca seperti layaknya file lainnya oleh Virtual File System Linux.

Jika kita melakukan perubahan pada file (menambah, mengurangi, mengganti), hal tersebut tidak dilakukan langsung pada device tapi disimpan dalam media sementara. Untuk meyimpan perubahan, harus dilakukan proses unmounting, yaitu menghapus inode sementara yang dipakai sebelumnya dan menyimpan perubahan (jika ada) yang telah dilakukan pada device. Karena itu proses unmounting sangat perlu dilakukan.


III. LINUX EXTENDED FILE SYSTEM

Sejarah perkembangan Extended File System

Versi mLinux yang pertama berbasis pada file sistem Minix. Setelah Linux semakin berkembang, Extended File System (Ext FS) diperkenalkan. Ada beberapa perubahan signifikan tetapi kinerjanya masih kurang memuaskan. Pada tahun 1994 Second Extended Filesystem (Ext2) diperkenalkan. Di samping adanya beberapa fitur baru, Ext2 sangat efisien, handal dan fleksibel sehingga menjadi file sistem Linux yang paling banyak digunakan.

Linux Second Extended File System (Ext2FS)

Untuk sebagian besar user dan system administration tasks yang umum, file dan direktori mudah untuk diterima seperti struktur pohon. Komputer bagaimanapun tidak bisa melihat hal tersebut seperti struktur pohon.

Setiap partisi memiliki sistem file sendiri. Dengan membayangkan sistem file bersamaan, kita dapat membentuk sebuah ide mengenai struktur pohon dari seluruh sistem, tapi tidak sesederhana itu. Dalam sebuah sistem file, file direpresentasikan dengan inode, sejenis nomor seri unik yang berisi informasi tentang data sebenarnya yang membentuk sebuah file: milik siapa file tersebut, dan dimana file tersebut terletak pada harddisk.

Setiap partisi memiliki himpunan inode tersendiri, pada sistem yang memiliki banyak partisi, bisa terdapat beberapa file dengan nomor inode yang sama.

Setiap inode menggambarkan struktur data pada harddisk, menyimpan properti dari file, termasuk lokasi fisik dari data file. Ketika harddisk disiapkan untuk menerima peyimpanan data, biasanya selama proses instalasi sistem awal atau ketika menambahkan disket tambahan ke dalam sistem yangada, sejumlah inode per partisi yang pasti diciptakan. Jumlah ini akan menjadi jumlah maksimum file, dari berbagai tipe (termasuk direktori, file khusus, link, dll.) yang dapat muncul pada saat yang sama pada sebuah partisi. Pada umumnya terdapat 1 inode setiap 2 sampai 8 KB.

Mekanisme Second Extended File System (Ext2FS)

Ext2fs menggunakan mekanisme yang mirip dengan BSD Fast File System (ffs) dalam mengalokasikan blok-blok data dari file, yang membedakan adalah :

  • Pada ffs, file dialokasikan ke disk dalam blok sebesar 8KB, dan blok-blok itu dibagi menjadi fragmen-fragmen 1KB untuk menyimpan file-file berukuran kecil atau blok-blok yang terisi secara parsial di bagian akhir file.
  • Ext2fs tidak menggunakan fragmen, pengalokasian dalam unit-unit yang lebih kecil. Ukuran blok secara default pada ext2fs adalah 1KB, meskipun mendukung juga pengalokasian 2KB dan 4KB.
  • Alokasi pada Ext2fs didesain untuk menempatkan blok-blok lojik dari file ke dalam blok-blok fisik pada disk, dengan demikian I/O request untuk beberapa blok-blok disk secagai operasi tunggal.

Kehandalan Second Extended File System Ext2FS

· Administrator sistem dapat memilih ukuran blok yang optimal (dari 1024 sampai 4096 bytes), tergantung dari panjang file rata-rata, saat membuat file sistem.

· Administrator dapat memilih banyak inode dalam setiap partisi saat membuat file sistem.

· Strategi update yang aman dapat meminimalisasi dari system crash.

· Mendukung pengecekan kekonsistensian otomatis saat booting.

· Mendukung file immutable (file yang tidak dapat dimodifikasi)dan append-only (file yang isinya hanya dapat ditambahkan pada akhir file tersebut).

Informasi yang Disimpan pada Inode

· Device tempat inode berada

· Mode file

· Locking information

· Pemilik dan grup pemilik dari file tersebut.

· Jenis file (regular, direktori, dll.)

· Hak akses atas file.

· Waktu pembuatan, pembacaan, dan perubahan terakhir.

· Waktu perubahan informasi pada inode.

· Jumlah link yang menunjuk ke file ini.

· Ukuran file.

· Alamat yang menunjukan lokasi sebenarnya dari data file.

Satu – satunya informasi yang tidak tersimpan pada inode adalah nama file dan direktori. Informasi ini tersimpan pada file direktori khusus. Dengan membandingkan nama file dan nomor inode, sistem dapat membangun struktur pohon yang dapat dimengerti user. User dapat melihat nomor inode dengan menggunakan opsi –i pada perintah ls. Masing-masing inode memiliki ruang memori yang terpisah pada disk.

Pembagian Blok

Layout dari partisi dan group block Ext2FS

Keterangan:

Setiap partisi terbagi menjadi:

  • Boot block, yang merupakan blok pertama, dipakai untuk booting, sehingga tidak diurusi oleh Ext2FS.
  • Block group sebanyak n buah. Setiap block group berukuran sama dan terdiri dari:
    • Super Block, disimpan dalam struktur ext2_super_block
    • Group Descriptor, disimpan dalam bentuk xt2_group_desc
    • Data Block Bitmap
    • Inode Bitmap
    • Inode Table, terdiri dari kumpulan block yang berurutan, dan masing-masing blok mengandung sejumlah inode yang terlah terdefinisi sebelumnya. Semua inode memiliki ukuran sama.
    • Data Blocks, menyimpan data sebenarnya dari file.

Struktur inode dalam Linux diimplementasikan sebagai berikut :

struct inode {

struct list_head i_hash;

struct list_head i_list;

struct list_head i_dentry;

unsigned long i_ino;

unsigned int i_count;

kdev_t i_dev;

umode_t i_mode;

nlink_t i_nlink;

uid_t i_uid;

gid_t i_gid;

kdev_t i_rdev;

off_t i_size;

time_t i_atime;

time_t i_mtime;

time_t i_ctime;

unsigned long i_blksize;

unsigned long i_blocks;

unsigned long i_version;

unsigned long i_nrpages;

struct semaphore i_sem;

struct inode_operations *i_op;

struct super_block *i-sb;

wait_queue_head_t i_wait;

struct file_lock *i_flock;

struct vm_area_struct *i_mmap;

struct page *i_pages;

spinlock_t i_shaerd_lock;

struct dquot *i_dquot(MAXQUOTAS);

struct pipe_inode_info *i_pipe;

unsigned long i_state;

unsigned long i_flags;

unsigned char i_sock;

atomic_t i_writecount;

unsigned int i_attr_flags;

_u32 i_generation;

union {

...

struct extfs_inode_info ext2_i;

...

struct socket socket_i;

void *generic)ip;

}u;

};

Linux Third Extended File System (Ext3FS)

Ext3FS merupakan pengembangan dari Ext2FS. Ext3FS memiliki beberapa kelebihan antara lain:

  • Optimasi waktu pengecekan jika terjadi kegagalan sumber daya, kerusakan sisem atau unclean shutdown.

Setelah mengalami kegagalan sumber daya, unclean shutdown, atau kerusakan sistem, Ext2FS harus melalui proses pengecekan. Proses inidapat membuang waktu sehingga proses booting menjadi sangat lama, khususnya untuk disk besar yang mengandung banyak sekali data. Dalam proses ini, semua data tidak dapat diakses. Jurnal yang disediakan oleh EXT3 menyebabkan tidak perlu lagi dilakukan pengecekan data setelah kegagalan sistem. EXT3 hanya dicek bila ada kerusakan hardware seperti kerusakan hard disk, tetapi kejadian ini sangat jarang. Waktu yang diperlukan EXT3 file sistem setelah terjadi unclean shutdown tidak tergantung dari ukuran file sistem atau banyaknya file, tetapi tergantung dari besarnya jurnal yang digunakan untuk menjaga konsistensi. Besar jurnal default memerlukan waktu kira-kira sedetik untuk pulih, tergantung kecepatan hardware.

  • Integritas data dan kecepatan akses yang fleksibel.
    • Ext3FS menjamin adanya integritas data setelah terjadi kerusakan atau unclean shutdown. Ext3FS memungkinkan kita memilih jenis dan tipe proteksi dari data.
  • Mudah melakukan migrasi dari Ex2FS.
    • Kita dapat berpindah dari EXT2 ke sistem EXT3 tanpa melakukan format ulang.
  • Cepat
    • Daripada menulis data lebih dari sekali, EXT3 mempunyai throughput yang lebih besar daripada EXT2 karena EXT3 memaksimalkan pergerakan head hard disk. Kita bisa memilih tiga jurnal mode untuk memaksimalkan kecepatan, tetapi integritas data tidak terjamin.

Tidak ada komentar:

Posting Komentar