He estado usando sshfs para trabajar de forma remota, pero es realmente lento y molesto, especialmente cuando uso eclipse en él.
¿Hay alguna forma más rápida de montar el sistema de archivos remoto localmente? Mi prioridad número 1 es la velocidad.
La máquina remota es Fedora 15, la máquina local es Ubuntu 10.10. También puedo usar Windows XP localmente si es necesario.
scp
fue tan lento comosshfs
.Si necesita mejorar la velocidad de las conexiones sshfs, pruebe estas opciones:
el comando sería:
fuente
defer_permissions
embargo, tuve que eliminar (opción desconocida).nolocalcaches
disminuirá el rendimiento al forzar las búsquedas en cada operación? ¿Esto contradiceauto_cache
?no_readahead
?Además de las soluciones ya propuestas de usar Samba / NFS, que son perfectamente válidas, también podría lograr un aumento de la velocidad con
sshfs
un cifrado más rápido (la autenticación sería tan segura como de costumbre, pero los datos transferidos serían más fáciles de descifrar) al proporcionar la-o Ciphers=arcfour
opción asshfs
. Es especialmente útil si su máquina tiene una CPU débil.fuente
-oCipher=arcfour
no hizo ninguna diferencia en mis pruebas con un archivo de 141 MB creado a partir de datos aleatorios.No tengo ninguna alternativa para recomendar, pero puedo proporcionar sugerencias sobre cómo acelerar sshfs:
Esto debería evitar algunas de las solicitudes de ida y vuelta cuando intente leer contenido o permisos para archivos que ya recuperó anteriormente en su sesión.
sshfs simula eliminaciones y cambios localmente, por lo que los nuevos cambios realizados en la máquina local deberían aparecer inmediatamente, a pesar de los grandes tiempos de espera, ya que los datos en caché se eliminan automáticamente.
Pero estas opciones no se recomiendan si los archivos remotos pueden actualizarse sin que la máquina local lo sepa, por ejemplo, por un usuario diferente o un shell ssh remoto. En ese caso, serían preferibles tiempos de espera más bajos.
Aquí hay algunas opciones más con las que experimenté, aunque no estoy seguro de si alguna de ellas hizo alguna diferencia:
También debe consultar las opciones recomendadas por Meetai en su respuesta.
Recursividad
El mayor problema en mi flujo de trabajo es cuando intento leer muchas carpetas, por ejemplo en un árbol profundo, porque sshfs realiza una solicitud de ida y vuelta para cada carpeta por separado. Este también puede ser el cuello de botella que experimente con Eclipse.
Hacer solicitudes para varias carpetas en paralelo podría ayudar con esto, pero la mayoría de las aplicaciones no lo hacen: fueron diseñadas para sistemas de archivos de baja latencia con almacenamiento en caché de lectura anticipada, por lo que esperan a que se complete una estadística de archivo antes de pasar a la siguiente .
Precaching
Pero algo que sshfs podría hacer sería mirar hacia el sistema de archivos remoto, recopilar estadísticas de carpetas antes de solicitarlas y enviármelas cuando la conexión no esté ocupada de inmediato. Esto usaría más ancho de banda (de datos anticipados que nunca se usan) pero podría mejorar la velocidad.
Podemos obligar a sshfs a hacer un almacenamiento en caché de lectura anticipada, ejecutando esto antes de comenzar su tarea, o incluso en segundo plano cuando su tarea ya está en marcha:
Eso debería almacenar previamente en caché todas las entradas del directorio, reduciendo parte de la sobrecarga posterior de los viajes de ida y vuelta. (Por supuesto, debe usar los tiempos de espera grandes como los que proporcioné anteriormente, o estos datos en caché se borrarán antes de que su aplicación acceda a ellos).
Pero eso
find
llevará mucho tiempo. Al igual que otras aplicaciones, espera los resultados de una carpeta antes de solicitar la siguiente.Podría ser posible reducir el tiempo total al solicitar múltiples procesos de búsqueda para buscar en diferentes carpetas. No he probado para ver si esto realmente es más eficiente. Depende de si sshfs permite solicitudes en paralelo. (Creo que sí)
Si también desea almacenar previamente en caché el contenido del archivo, puede intentar esto:
Obviamente, esto llevará mucho más tiempo, transferirá una gran cantidad de datos y requerirá que tenga un gran tamaño de caché. Pero cuando está hecho, acceder a los archivos debería sentirse bien y rápido.
fuente
SSHFS es realmente lento porque transfiere el contenido del archivo incluso si no es necesario (al hacer cp). Informé esto en sentido ascendente y a Debian, pero no hubo respuesta: /
fuente
mv
. Desafortunadamente, cuando ejecutacp
localmente, FUSE solo ve solicitudes para abrir archivos para leer y escribir. No sabe que está haciendo una copia de un archivo. Para FUSIBLE no se ve diferente de una escritura de archivo general. Así que me temo que esto no se puede solucionar a menos que el localcp
se haga más FUSE-aware / FUSE-friendly. (O FUSE podría enviar hashes de bloque en lugar de bloques enteros cuando sospeche quecp
, como lo hace rsync, pero eso sería complejo y podría ralentizar otras operaciones).Después de buscar y probar. Acabo de encontrar agregar
-o Compression=no
velocidad mucho. El retraso puede ser causado por el proceso de compresión y descompresión. Además, usar 'Ciphers = aes128-ctr' parece más rápido que otros, mientras que algunas publicaciones han realizado algunos experimentos al respecto. Entonces, mi comando es de alguna manera así:fuente
NFS debería ser más rápido. ¿Qué tan remoto es el sistema de archivos? Si está por encima de la WAN, es mejor que solo sincronice los archivos de un lado a otro, en lugar del acceso remoto directo.
fuente
Ya sea NFS o Samba si tienes archivos grandes. Usar NFS con algo como 720p Movies and crap es realmente un PITA. Samba hará un mejor trabajo, aunque no me gusta Samba por otras razones y generalmente no lo recomendaría.
Para archivos pequeños, NFS debería estar bien.
fuente
Descubrí que apagar mi tema zsh que verificaba el estado del archivo git me ayudó enormemente: solo ingresar al directorio me llevó más de 10 minutos. Del mismo modo, desactiva los verificadores de estado de git en Vim.
fuente
Inicie sesión como root.
Acceda a su directorio de nivel superior, utilizando "cd /".
Luego, asegúrese de tener una carpeta de montaje creada o cree una usando "mkdir folder_name".
Después de eso, simplemente use "mount xxxx: / remote_mount_directory / local_mount_directory.
si todo funcionó de su parte, antes de esto debería tener un montaje exitoso. Es posible que desee comprobar y asegurarse de que el directorio de destino se comparte mediante el comando "exportfs" para garantizar que se puedan encontrar.
Espero que esto ayude. Esto no es de un entorno lvie, se ha probado en una LAN utilizando VMware y Fedora 16.
fuente