Apa itu / etc / mtab di Linux?

Jawaban:

51
% file / etc / mtab
/ etc / mtab: tautan simbolik ke ../proc/self/mounts
% file / proc / mounts
/ proc / mounts: tautan simbolik ke self / mounts
%

/etc/mtabadalah mekanisme kompatibilitas. Beberapa dekade yang lalu, Unix tidak memiliki panggilan sistem untuk membaca informasi pemasangan yang ada. Sebaliknya, program yang me-mount sistem file diharapkan untuk secara kooperatif dan sukarela mempertahankan tabel /etc/mtabdari apa yang di-mount di mana.

Untuk alasan yang jelas, ini bukan mekanisme yang ideal.

Linux mendapatkan gagasan tentang "procfs", dan salah satu hal yang didapatnya adalah versi tabel yang dikelola kernel, dalam bentuk file mountspseudo-regular. "System call" untuk membaca informasi mount dari kernel menjadi urutan buka-baca-tutup terhadap file itu, diikuti dengan mem-parsing hasil dari bentuk yang dapat dibaca manusia ke bentuk yang dapat dibaca mesin (sesuatu yang memiliki beberapa tangkapan halus, seperti Anda dapat melihat dari laporan bug dari lebih dari dua minggu yang lalu).

/etc/mtabdengan demikian telah secara populer menjadi tautan simbolis ke /proc/mounts, yang memungkinkan program-program yang menggunakan nama itu untuk tetap membaca tabel mount dari file itu, yang program-program yang me-mount dan melepas sistem file tidak lagi harus secara eksplisit melakukan apapun sendiri untuk tetap up to date. (Beberapa dari mereka masih akan, meskipun, jika /etc/mtabternyata menjadi file reguler yang dapat ditulis. Dan ada beberapa kasus sudut di mana informasi yang dinormalisasi dalam mountskekurangan semua hal non-kernel tidak cukup apa yang dibutuhkan; meskipun mereka tidak lebih besar daripada masalah umum dengan /etc/mtab.)

Setiap proses saat ini dapat memiliki pandangan tersendiri tentang apa yang terpasang, dan ada akibatnya sekarang individu mountsfile untuk setiap proses di procfs, setiap proses ini sendiri meja yang dapat diakses untuk itu melalui selflink simbolik seperti self/mounts, dan /proc/mountsini juga sekarang kompatibilitas sebuah mekanisme. (Menariknya, baik per-proses mountsmaupun format mountsdidokumentasikan dalam Linux doco saat ini, meskipun file mountinfopseudo-regular yang serupa adalah.)

SunOS / Solaris memiliki mekanisme serupa. The /etc/mnttabfile sebenarnya filesystem file tunggal, dan di samping membaca meja, melalui file descriptor terbuka untuk file tersebut, dengan read()system call, satu dapat menonton untuk me-mount perubahan titik dengan poll()dan memperoleh berbagai potongan lanjut informasi dengan ioctl().

Dalam HP-UX, /etc/mnttabjuga merupakan nama file, tetapi pada versi 11 itu masih file biasa yang isinya dikelola secara kooperatif oleh program utilitas sistem.

AIX tidak mengekspor tabel teks yang dapat dibaca manusia yang harus diurai oleh program, dan tidak ada file yang setara. BSD, demikian pula, memiliki panggilan sistem sepenuhnya, getfsstat()pada FreeBSD dan OpenBSD, untuk program untuk mendapatkan tabel mount dari kernel dalam bentuk yang dapat dibaca mesin tanpa menyusunnya melalui bentuk perantara yang dapat dibaca manusia.

Bacaan lebih lanjut

JdeBP
sumber
Sebagai pelengkap dengan komentar saya dalam pertanyaan di sini adalah mtab(5)dari masa lalu: man.cat-v.org/unix_8th/5/mtab .
Weijun Zhou
2
tidak hanya /proc/mounts, tetapi /proc/self/mountsitu sendiri merupakan mekanisme kompatibilitas sekarang; hanya menampilkan sebagian informasi yang tersedia di /proc/self/mountinfo. Format /proc/self/mountsdidokumentasikan dalam proc(5)identik denganfstab(5)
mosvy
meskipun diakui, fstab (5) hanya menceritakan tentang ruang yang digantikan oleh pelarian oktal, sementara itu ruang, tab, baris baru, dan garis miring terbalik
mosvy
Saya tahu file pseudo dan file biasa, tetapi apa itu file biasa pseudo?
gerrit
@gerit ini file biasa yang berukuran 0 tetapi masih berisi data ;-)
mosvy
12

Menurut man mount:

Program-program mount dan umount secara tradisional memelihara daftar filesystem yang saat ini di-mount dalam file / etc / mtab. File mtab asli ini masih didukung, tetapi pada sistem Linux saat ini, lebih baik membuatnya menjadi symlink ke / proc / mounts, karena file mtab biasa yang dikelola di userspace tidak dapat diandalkan bekerja dengan ruang nama, wadah dan fitur Linux canggih lainnya.

Saat pemasangan tanpa merekam di /etc/mtab:

-n, --no-mtab

Mount tanpa menulis di / etc / mtab. Ini diperlukan misalnya ketika / etc pada sistem file read-only.

Banyak lagi nuansa yang diberikan di halaman manual.

Christopher
sumber