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
- Shareable
Isinya dapat di-share
(digunakan bersama) dengan sistem lain, gunanya untuk
menghemat tempat.
- Unshareable
Isinya tidak dapat di-share(digunakan
bersama) dengan sistem lain, biasanya untuk
alasan keamanan.
Variabel dan Static
- Variabel
Isinya sering berubah-ubah.
- 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:
- 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).
- 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).
- 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.
- http://ronorejo.blogspot.com/2012/11/artikel-mengenai-file-linux.html
0 komentar:
Posting Komentar