Akses file yang terletak pada sistem file yang mendasari NFS mountpoint

8

Mungkin ini permintaan aneh, tapi itu kebalikan dari pertanyaan yang dirinci di:

Apakah mungkin untuk melihat konten mount NFS yang mendasarinya tanpa meng-unmount konten NFS?

Saya memiliki pengaturan di mana server Linux di beberapa situs jarak jauh me-mount share NFS dari server pusat (semua CentOS 5.x). Pikirkan: /opt/softwareatau yang serupa.

Jika semuanya baik-baik saja, sistem klien memasang ekspor NFS dari server utama dan berjalan tanpa insiden. Data yang terkandung dalam saham tidak sering berubah (mungkin mingguan).

Saya khawatir tentang situasi di mana ada kehilangan konektivitas ke server NFS utama (pemadaman server NFS, fiber-cut, dll.). Karena data yang dibagikan tidak sering berubah, saya ingin agar sistem ini dapat menjalankan standalone jika kehilangan NFS mount.

Katakanlah mount hilang, saya ingin menggunakan file lokal yang duduk di /opt/softwarebawah mount NFS di lokasi yang sama. Selain itu, saya akan tetap menyinkronkan file-file itu setiap hari.

Mount NFS adalah baca / tulis karena perubahan pada volume yang dipasang perlu dimungkinkan dari situs klien mana pun.

Apakah ini mungkin? Bagaimana cara mengakses (atau menimpa) file di direktori yang mendasarinya? Apakah akan berpotensi ada masalah batas waktu? Apakah ada opsi / tips pemasangan yang dapat membantu dalam hal ini?

putih
sumber

Jawaban:

16
mount -o bind / /mnt

Ketika Anda melihat / mnt / opt / software Anda akan menemukan file (jika ada) yang berada di bawah mount di / opt / software.

Seth Robertson
sumber
Tapi itu akan me-mount semua filesystem root di bawah / mnt. Hmm ...
ewwhite
1
Begitu? Apa ruginya? Itu hanya memungkinkan Anda menyinkronkan file yang Anda inginkan. Anda bahkan dapat meletakkannya di / private / root di mana / private adalah 700 root sehingga tidak ada orang lain yang bisa mendapatkan file-file itu, bukan bahwa itu akan membahayakan jika mereka bisa karena mereka memiliki izin yang persis sama. Tampaknya pada dasarnya seperti jawaban yang tepat untuk pertanyaan Anda. Sekarang jika pertanyaan Anda adalah bagaimana memulihkan setelah server NFS hilang, itu sama sekali berbeda, dan mungkin melibatkan unmount paksa. Itu akan membatalkan dan dengan demikian memecah setengah dari proses Anda memaksa reboot pula
Seth Robertson
Ini sudah dekat, tetapi saya memutuskan untuk memasang direktori yang saya perlukan aksesnya dengan parameter bind ke lokasi lain di sistem file.
ewwhite
Sebenarnya ini sangat berguna dalam kasus tertentu dan saya berharap saya sudah tahu tentang opsi ini sejak lama. Saya hanya mengalami situasi ini lagi. Pada dasarnya saya memiliki direktori / usr yang diikat ke sistem file root dan ingin memindahkannya ke sistem file sendiri untuk memulihkan ruang pada root. Jadi setelah membuat usr dan memigrasikan data di sana dan me-reboot untuk me-mount usr baru, bagaimana Anda dengan mudah menghapus data lama / usr? Salah satu caranya adalah dengan menggunakan mode pengguna tunggal dan berharap tidak ada yang menggunakan file di sana. Cara lain adalah dengan menggunakan trik bind ini dan menghapus direktori data dari jalur alternatif.
deltaray
8

Ini dimungkinkan dengan menggunakan mount --bindopsi.

Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is
   mount --bind olddir newdir
After this call the same contents is accessible in two places.

Jadi saya bisa mount --bind /opt/software /foo

Dan kemudian menerapkan NFS mount /opt/software, mempertahankan kemampuan untuk melihat file yang mendasarinya /foo.

putih
sumber
3

Apa yang Anda perlukan, karena file-file tersebut relatif statis, adalah rsync. Kecuali jika banyak klien jarak jauh memiliki kemampuan untuk mengubah file. Jika data pada dasarnya hanya-baca, mengapa tidak melakukan rsync beberapa kali sehari melalui pekerjaan seperti cron, pada setiap mesin. Sekali lagi, saya mungkin kehilangan intinya, tetapi jika data pada NFS pada dasarnya hanya-baca-seperti, ini mungkin melakukannya.

slashdot
sumber
Rsync secara tradisional masuk akal, tetapi ada kemungkinan file akan dimodifikasi di situs mana pun. Jika saya memasang read-only, rsync akan menjadi pilihan yang lebih baik. Kecuali Anda tahu solusi sinkronisasi dua arah ...
ewwhite
Satu hal yang dapat Anda lakukan dengan rsync adalah mengatur pekerjaan cron yang memeriksa cap waktu pada file Anda di setiap mesin, dan mungkin melakukannya setiap 5 menit. Segera setelah pembaruan diketahui mendorong file ke nfs, dan iklan pada waktu yang sama mungkin membuat file pemicu yang diperiksa oleh setiap mesin lain pada periode yang tetap. Segera setelah mereka melihat pemicu ini, mereka semua menjalankan rsync untuk mendapatkan file paling baru dari NFS.
slashdot
Saya dapat mencoba Unison sebagai pendekatan untuk menyelesaikan ini.
ewwhite