File perangkat bukan file per se. Mereka adalah antarmuka I / O untuk menggunakan perangkat di sistem operasi mirip Unix. Mereka tidak menggunakan ruang pada disk, namun, mereka masih menggunakan inode seperti yang dilaporkan oleh stat
perintah:
$ stat /dev/sda
File: /dev/sda
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 6h/6d Inode: 14628 Links: 1 Device type: 8,0
Apakah file perangkat menggunakan inode fisik dalam sistem file dan mengapa mereka membutuhkannya?
filesystems
devices
inode
stat
direprob
sumber
sumber
Jawaban:
Jawaban singkatnya adalah hanya jika Anda memiliki dukungan sistem file fisik
/dev
(dan jika Anda menggunakan distro Linux modern, Anda mungkin tidak).Jawaban panjangnya adalah sebagai berikut:
Ini semua kembali ke filosofi UNIX asli bahwa semuanya adalah file. Filosofi ini adalah bagian dari apa yang membuat UNIX sangat fleksibel, karena Anda dapat langsung berinteraksi dengan perangkat dari userspace tanpa perlu memiliki kode khusus dalam aplikasi Anda untuk berbicara langsung dengan perangkat keras fisik.
Awalnya,
/dev
hanyalah direktori lain dengan nama terkenal tempat Anda meletakkan file perangkat Anda. Beberapa sistem UNIX masih menggunakan pendekatan ini (saya percaya OpenBSD masih melakukannya), dan Anda biasanya dapat mengetahui apakah suatu sistem seperti ini karena akan memiliki banyak file perangkat untuk perangkat yang tidak dimiliki sistem tersebut (misalnya, file untuk setiap kemungkinan partisi pada setiap disk yang mungkin). Ini menghemat ruang dalam memori dan waktu saat boot dengan biaya menggunakan sedikit lebih banyak ruang disk, yang merupakan pertukaran yang baik untuk sistem awal karena mereka umumnya sangat terbatas memori dan tidak terlalu cepat. Ini umumnya disebut memiliki statis/dev
.Pada sistem Linux modern (dan saya percaya juga FreeBSD dan mungkin versi terbaru dari Solaris),
/dev
adalah sistem file sementara dalam memori yang diisi oleh kernel (atau udev jika Anda menggunakan Systemd, karena mereka tidak percaya kernel melakukan hampir semua hal) . Ini menghemat ruang disk dengan harga beberapa memori (biasanya kurang dari beberapa MB) dan overhead pemrosesan yang sangat kecil. Ini juga memiliki sejumlah keunggulan lain, dengan salah satu yang terbesar adalah lebih mudah untuk mendeteksi perangkat keras yang terhubung. Ini umumnya disebut memiliki dinamika/dev
.Namun dalam kedua kasus, node perangkat diakses melalui layer VFS biasa, yang menurut definisi berarti mereka harus memiliki inode (bahkan jika itu virtual yang hanya ada sehingga hal-hal seperti
stat()
berfungsi seperti yang seharusnya. Dari perspektif praktis, ini memiliki dampak nol pada sistem yang menggunakan dinamis/dev
karena mereka hanya menyimpan inode dalam memori atau menghasilkan mereka sesuai kebutuhan, dan mendekati nol dampak di mana/dev
statis karena inode mengambil hampir nol ruang pada disk dan sebagian besar sistem file tidak memiliki batas atas mereka atau cara penyediaan lebih dari siapa pun mungkin perlu.sumber
File perangkat juga memiliki izin, dan file tersebut disimpan dalam inode.
sumber
Direktori hanyalah pemetaan dari nama file ke inode, jadi segala sesuatu tentang hal yang dirujuk namanya (file, symlink, perangkat, FIFO, soket) harus ada di inode, tidak ada tempat lain untuk meletakkannya.
Informasi tentang perangkat disimpan dalam inode. Nomor perangkat utama dan kecil ada di sana, begitu juga izin, cap waktu, dll. Bidang jenis yang mengatakan bahwa itu adalah perangkat blok atau karakter daripada file biasa disimpan di sana.
Inode untuk perangkat tidak menggunakan bidang yang berisi peta blok file.
sumber
Tanpa inode, Anda hanya akan memiliki nama file untuk menyimpan semua informasi tentang perangkat yang dimaksud. Ini berarti nama perangkat "bagus" seperti
/dev/sda
tidak ada pertanyaan: Anda memerlukan nama yang dapat dikaitkan dengan driver tertentu/dev/ohci/sda
.Yang lebih penting lagi, semua alat yang bergantung pada inode (seperti
stat
,ls
dan sebagainya) harus dimodifikasi untuk memperlakukan jalur/dev
di bawah dengan cara khusus. Itu akan menjadi jumlah pekerjaan yang sangat besar tanpa manfaat nyata dibandingkan dengan keadaan saat ini.sumber