Sistema de archivos FreeBSD: jerarquía y montaje. FreeBSD: montaje automático de sistemas de archivos NFS y SMBFS usando AMD Montar automáticamente una unidad de red cuando se inicia freebsd

La preparación del espacio en disco para su uso no termina con la creación de particiones y sistemas de archivos en ellos. Todos los sistemas de archivos creados también deben estar disponibles para FreeBSD. ¿Por qué deberían montarse, es decir, incluirse en una única jerarquía de directorios y archivos, que también se designa con el nombre del sistema de archivos? Sin embargo, si antes hablábamos de la organización física de los datos, ahora ha llegado el momento de familiarizarnos con su lógica.

Lógica del sistema de archivos

Lógicamente, el sistema de archivos FreeBSD (como cualquier sistema Unix) está organizado según un principio de árbol: en su base se encuentra la raíz (el directorio raíz, denotado por el símbolo / y también llamado directorio raíz; este último no debe confundirse con el directorio raíz /, que sirve como directorio de inicio para el superusuario).

Desde el directorio raíz, que puede parecerse más al tronco de un árbol, hay ramas, subdirectorios anidados en él y brotes, archivos normales. Estos últimos, sin embargo, son pocos: en las versiones de FreeBSD se trata de un determinado archivo de entropía (/entropy) y un archivo que describe los derechos de autor del sistema /COPYRIGHT.

Pero hay bastantes subdirectorios en el directorio raíz, y algunos de ellos están organizados de manera muy compleja en su interior y contienen una buena cantidad de subdirectorios anidados de niveles más profundos.

En principio, la jerarquía de directorios en todos los sistemas Unix es similar, ya que está regulada, en primer lugar, por una larga tradición y, en segundo lugar, por todo tipo de documentos estandarizados, en particular, FHS (Filesystem Hierarchy Standard), que ahora es disponible en traducción al ruso (por lo cual gracias Viktor Kostromin).

El estándar FHS se desarrolló originalmente para organizar la estructura de directorios de numerosas distribuciones de Linux. Y solo más tarde se adaptó a otros sistemas tipo Unix (incluido el clan BSD). Sin embargo, es la jerarquía de directorios de FreeBSD la que puede servir como ejemplo de adherencia ejemplar al espíritu de FHS. Y, literalmente, las desviaciones individuales de su letra siempre están funcionalmente determinadas.

El estándar FHS se basa en dos principios fundamentales: una clara separación en la jerarquía de archivos de directorios compartidos y no compartidos, por un lado, e inmutables y mutables, por el otro.

El contraste entre directorios compartidos y no compartidos se debe a la naturaleza de red inherente de Unix en general y de FreeBSD en particular. Es decir, los datos relacionados con la máquina local (por ejemplo, archivos de configuración de sus dispositivos) deben ubicarse en directorios separados de aquellos cuyos contenidos son accesibles desde otras máquinas de la red, locales o globales (un ejemplo de los cuales no es solo el usuario datos, pero también programas).

La esencia del contraste entre directorios mutables e inmutables se puede explicar fácilmente con un ejemplo. Por lo tanto, los mismos programas de usuario, por su naturaleza, deben ser inmutables (o más bien, disponibles para modificación sólo para el administrador del sistema, pero no para el propio usuario que los utiliza en su trabajo). Al mismo tiempo, estos programas, durante su funcionamiento, generan no sólo archivos de datos, digamos textos o imágenes (su naturaleza variable es evidente sin comentarios), sino todo tipo de información de servicio, como archivos de registro, archivos temporales y la como). Los cuales deben estar agrupados en directorios separados de los propios archivos ejecutables de programas, bibliotecas, archivos de configuración, etc., necesarios para su lanzamiento.

El estricto cumplimiento del concepto de separar directorios compartidos y no compartidos, inmutables e inmutables entre sí permite, dentro de una única jerarquía de archivos en forma de árbol, aislar físicamente sus ramas individuales, es decir, en forma de sistemas de archivos independientes ubicados en dispositivos aislados (discos, segmentos de disco, particiones; en el caso general, y en medios remotos conectados a la red, pero esto no se discutirá ahora). Hay muchas razones para esto: aumento de velocidad, mayor confiabilidad y simplemente consideraciones de conveniencia, pero no hablaremos de ellas ahora. Porque ahora lo único que nos importa es que estas ramas del árbol de archivos deben incorporarse al sistema de archivos general.

En los sistemas Unix, el sistema reconoce cada archivo (incluido un directorio) no por su nombre, sino por el identificador único de su entrada en la tabla. inodos. Existen herramientas para ver estos ID de archivos. Uno es el comando ls con la opción -i, que imprimirá los ID de cada archivo nombrado. Dado para el directorio raíz -

$ls-i/

nos mostrará una imagen algo inesperada (para simplificar la salida, la información sobre archivos regulares y enlaces simbólicos en la raíz se excluye de la salida, y los directorios restantes se ordenan por sus identificadores):

2 ../ 2 ./ 2 dev/ 2 home/ 2 tmp/ 2 usr/ 2 var/ 3 cdrom/ 4 mnt/ 5 root/ 8257 dist/ 8258 bin/ 8294 proc/ 8295 sbin/ 16512 stand/ 24768 etc/ 24776 bota/

De este ejemplo (relativo al sistema de archivos de la máquina en la que están escritas estas líneas) queda claro que hasta 7 directorios tienen los mismos identificadores digitales, igual a 2. La pregunta es, ¿cuál es la unicidad aquí?

Los primeros dos elementos de la lista son fáciles de entender: ./ representa el directorio actual (en este caso, la raíz) y ../ es el directorio principal del actual; y dado que, por definición, no hay nada por encima de la raíz en la jerarquía de archivos, esta última se denota a sí misma. Por lo tanto, no es sorprendente que ./ y ../ tengan el mismo identificador: son designaciones diferentes (enlaces físicos o, en otras palabras, nombres duplicados) para el mismo directorio raíz.

Pero lo mismo, como parece a primera vista, el significado del identificador de los directorios /dev, /home, /tmp, /usr, /var requiere explicación. Sin embargo, es simple: todos estos son directorios en los que se montan sistemas de archivos independientes, ya sea ubicados en dispositivos separados (particiones de disco, como los directorios /home, /usr, /var o sistemas de archivos virtuales que no se basan en cualquier dispositivo de disco real (el directorio /dev con el sistema de archivos del dispositivo y, en este caso, el directorio /tmp, en el que está montado el sistema de archivos en la RAM, que se analizará más adelante). Y desde la mesa inodos- diferentes para cada sistema de archivos, no es de extrañar que la raíz de cada uno de ellos esté identificada con el número 2 - numeración inodos van en su propio marco de referencia.

Entonces, el montaje es la inclusión de un archivo del sistema en cualquiera de los directorios existentes en el sistema raíz (no necesariamente directamente en la raíz, puede tener cualquier grado de anidamiento, como se ilustra a continuación). Sin esto, los directorios y archivos de dicho sistema montado son simplemente inaccesibles. Es importante entender esto cuando te encuentres con expresiones como "crear el sistema de archivos /usr". De lo anterior, es obvio que lo que se está creando (mediante el comando newfs) es simplemente algún tipo de sistema de archivos abstracto, y adquiere su "nombre" sólo en el momento de montarlo en el directorio especificado.

Es interesante que el identificador de directorio para el montaje (también llamado punto de montaje) se encuentre sólo en el momento del montaje. Para verificar esto, realicemos un experimento simple. En el directorio /mnt, diseñado específicamente para montar sistemas de archivos montados temporalmente), puede ver tres subdirectorios: /mnt/disk, mnt/iso, /mnt/usb (esto está en mi sistema, los creé para mi propia conveniencia; inicialmente el directorio /mnt que estaba en FreeBSD está vacío). Cuando se inicia el sistema, no hay nada montado en ellos y su estado habitual es estar vacíos. Si observa sus identificadores, puede ver algo como esto:

$ ls -i /mnt 18 disco/ 24 iso/ 19 usb/

Ahora tomemos y montemos una unidad flash con una interfaz USB en /mnt/usb (esto es exactamente para lo que la planeé) y repitamos la visualización. Y vemos:

18 discos/ 24 iso/ 2 usb/

Es decir, los identificadores de los directorios que permanecieron vacíos (/mnt/disk y /mnt/iso) no cambiaron, pero el identificador del directorio /mnt/usb cambió mágicamente a 2. Porque al momento del montaje se convirtió en la raíz de su propio sistema de archivos y el punto de referencia para el cálculo inodos todos los archivos grabados en él.

Divagámonos un poco y recordemos los enlaces duros, a través de los cuales lo mismo inodo y los bloques de datos asociados con él pueden recibir diferentes nombres. Ahora está claro por qué todos estos archivos duplicados deberían ubicarse en el mismo sistema de archivos: después de todo, los diferentes sistemas de archivos tienen su propia numeración que no coincide. inodos, y es imposible identificarlos por números (de lo contrario, ¿cómo distinguiría el sistema entre los directorios /usr y /var de nuestro ejemplo? Después de todo, no le importan los nombres de los archivos). Para enlaces simbólicos que tienen su propio inodo(de hecho, casi nada excepto ellos) con sus identificadores, numerados en el marco de referencia del sistema de archivos en el que se encuentran, no existe tal restricción. Y los enlaces simbólicos pueden ubicarse en cualquier lugar (incluso en una máquina remota, no sólo en otra partición).

Sin embargo, volvamos al ejemplo de nuestro directorio raíz. De todo lo considerado, queda claro que varias de sus ramas se encuentran en particiones separadas y forman sus propios sistemas de archivos (de hecho, es exactamente por eso que creamos ambas). Y, por tanto, es necesario montarlos todos.

Práctica de montaje

Los propósitos de montaje los cumple el comando mount, que se ejecuta automáticamente durante el inicio del sistema o manualmente desde la línea de comando. En realidad, en el sentido completo, en cualquier caso sólo se monta automáticamente el sistema de archivos raíz. No es necesario que esté en el disco; cuando se inicia desde un CD de rescate u otro medio de seguridad, se puede ubicar en un disco virtual en la RAM.

Sin embargo, el proceso de montar el sistema de archivos raíz es tan inevitable como la victoria del socialismo a escala global: así como el socialismo, sin ganar a escala global, simplemente pierde la capacidad de existir (lo que observamos recientemente), también puede hacerlo un sistema de archivos raíz. El sistema operativo no puede existir sin un sistema raíz. En Linux, esto provoca un modo de pánico en el kernel, aproximadamente el estado en el que cayeron nuestros líderes hace unos 20 años. Es cierto que resultaron ser más fuertes que Linux y se recuperaron bastante rápido, por lo que todavía nos están reiniciando (¿o reiniciando? - pero nos estamos volviendo más fuertes :)). Sin embargo, esto no se aplica al tema de instalación que intentaré presentarles ahora.

Entonces, para montar todos los sistemas de archivos excepto el raíz, es necesario realizar algunas acciones. Primero veremos cómo hacerlos manualmente y luego cómo inmortalizarlos en los archivos de configuración apropiados.

Entonces, el comando de montaje. En realidad, se trata de toda una familia de programas, cada uno de los cuales está diseñado para montar sistemas de archivos de ciertos tipos, no solo UFS, sino también cualquiera de los compatibles con FreeBSD. La lista de estos es bastante extensa; puede hacerse una idea al respecto mirando el directorio /sbin:

$ ls -1 /sbin/montaje*

¿Qué nos dará en respuesta?

/sbin/mount_cd9660* /sbin/mount_devfs* /sbin/mount_ext2fs* /sbin/mount_fdescfs* /sbin/mount_linprocfs* /sbin/mount_mfs* /sbin/mount_msdosfs* /sbin/mount_nfs* /sbin/mount_nfs4* /sbin/mount_ntfs* /sbin/mount_nullfs* /sbin/mount_procfs* /sbin/mount_std* /sbin/mount_udf* /sbin/mount_umapfs* /sbin/mount_unionfs*

Cada comando de esta lista es responsable de montar un tipo diferente de sistema de archivos, a algunos de los cuales volveremos más adelante. Por ahora, solo mencionaremos /sbin/mount, diseñado para funcionar con UFS y UFS2.

Llamado desde la línea de comando, requiere dos argumentos: el nombre del dispositivo que se va a montar y el punto de montaje (es decir, el directorio en el que se debe montar el sistema de archivos subyacente). El nombre del dispositivo debe indicar una patricia ya asignada en un segmento BSD existente con un sistema de archivos UFS2 (UFS) creado en él, por ejemplo,

$ montar /dev/ads0d /usr

Monta el sistema de archivos en la partición especificada en el directorio /usr de la raíz del árbol de archivos. Si el sistema de archivos en el dispositivo no está creado o es de un tipo distinto a UFS/UFS2, aparecerá un mensaje de error indicando un superbloque incorrecto: a diferencia de la utilidad de Linux del mismo nombre, el comando de montaje de FreeBSD no puede reconocer el archivo. tipo de sistema.

Se imponen los siguientes requisitos al punto de montaje: a) debe existir un directorio con el mismo nombre en el momento del montaje, y b) estar lo más vacío posible. Lo primero es imprescindible, pero lo segundo no es del todo cierto. El montaje en un directorio con cualquier archivo se realizará sin problemas (recuerdo que en Linux no hace mucho esto provocó un fallo del sistema), pero todo su contenido quedará inaccesible hasta que se desmonte. Y si los archivos que contiene desempeñan un papel importante para cualquier subsistema, esto puede tener todo tipo de consecuencias negativas. Por ejemplo, si el contenido del directorio /tmp se bloqueara al montar un sistema de archivos allí mientras se ejecutaba el sistema X window, el resultado probablemente sería un fallo del servidor X. Afortunadamente, si es necesario, puedes realizar un montaje combinado (ver más abajo).

En la forma especificada, el montaje se realizará con algunas características predeterminadas: el sistema de archivos se leerá/escribirá en el llamado modo. noasync (el mismo en el que las operaciones de metadatos se realizan de forma sincrónica y las operaciones de datos se realizan de forma asincrónica). Esta posición se puede cambiar usando los valores de la opción -o. Son bastantes, pero prácticamente los principales para nosotros en esta etapa serán:

  • async: proporcionará un modo completamente asincrónico (a pesar de las terribles advertencias en publicaciones anteriores, más adelante hablaré sobre la situación en la que esto puede estar justificado);
  • sincronización: por el contrario, habilita el modo completamente sincrónico (aunque no entiendo muy bien por qué esto es prácticamente necesario);
  • noatime es una opción muy útil que evita que se actualice el atributo de hora del último acceso al archivo, lo que mejora enormemente el rendimiento;
  • rdonly: monta el sistema de archivos en modo de solo lectura (a veces esto es necesario);
  • union es la misma opción que permite realizar un montaje de unión, en el que el contenido anterior del directorio del punto de montaje permanece visible; verdadero, con algunas limitaciones, consulte man (8) mount .

Hay varios otros valores de la opción -o que prohíben que ciertos tipos de archivos se coloquen en el sistema de archivos montado, por ejemplo, archivos ejecutables (-o noexec), archivos de dispositivo (-o nodev) o archivos con tal -llamado. un poco de suicidio. Sin embargo, son de importancia práctica principalmente para los administradores de servidores y tienen fines de seguridad. En una máquina de escritorio, la forma habitual de montaje sería algo como esto:

$ montaje -o noatime /dev/ads0d /usr; $ montaje -o noatime /dev/ads0e /var; $ montar -o noatime /dev/ads0f /home

Todo lo anterior se aplica únicamente al montaje de sistemas de archivos FreeBSD. Sin embargo, en la práctica suele ser necesario incorporar otros tipos de sistemas de archivos en su árbol de directorios. Esto es especialmente necesario para ISO9660 (el sistema de archivos habitual para todos los CD excepto los de Mac) y FAT de varios tipos. En este caso, se debe llamar explícitamente al comando de montaje apropiado, p.e.

$ mount_cd9660 /dev/acd0 /cdrom

para montar un compacto, o

$ mount_msdosfs /dev/ad## /mnt

para FAT de cualquier tipo (incluido FAT32). Sin embargo, esto también se puede hacer indirectamente especificando la opción -t file_system_type en el comando mount.

$ montaje -t text2fs /dev/ad## /mnt/linux

monta el sistema de archivos de Linux (si la característica correspondiente está incluida en el kernel). En este caso, el montaje estándar para particiones BSD simplemente se reemplaza por el comando /mount_ext2fs, diseñado para montar particiones ext2fs (y también ext3fs, pero, por supuesto, sin funciones de registro en diario). Es decir, la forma

$ montaje -t fstipo... ...

será el equivalente completo del comando

$mount_fstipo... ...

Todas las operaciones para montar sistemas de archivos (incluso en medios extraíbles) en FreeBSD requieren derechos de superusuario. Los valores de la opción -o aquí, a diferencia de la versión de Linux del comando de montaje, no incluyen el parámetro de usuario -o, que permite el montaje para usuarios normales. Es cierto que hay varias formas de solucionar este problema, como se analiza en una nota especial.

Configurar el montaje automático

Sin embargo, en la práctica, se recurre al montaje manual sólo para sistemas de archivos que se utilizan con poca frecuencia. Todos los sistemas de archivos que son fundamentalmente importantes para el funcionamiento de FreeBSD se montan automáticamente al iniciar el sistema, y ​​los más utilizados se montan en modo semiautomático, por así decirlo.

Para el montaje automático, el programa de montaje se ejecuta durante el proceso de arranque desde los scripts de inicialización. Busca su archivo de configuración, /etc/fstab, y monta todo lo que encuentra en él, con algunas excepciones (que se analizan a continuación).

El archivo /etc/fstab se genera automáticamente cuando se instala FreeBSD, incluidos todos los sistemas de archivos necesarios para sustentar la vida. Sin embargo, en el futuro se podrá editar manualmente para agregar nuevos dispositivos para montaje u opciones adicionales para dispositivos ya habilitados.

El archivo /etc/fstab es una base de datos simple en formato de texto (campos separados por espacios o tabulaciones), que incluye los siguientes campos:

  • Dispositivo: el nombre del archivo del dispositivo en el que se encuentra el sistema de archivos, similar al primer argumento del comando de montaje cuando se usa manualmente;
  • Mountpoint: punto de montaje (corresponde al segundo argumento del comando de montaje);
  • FStype: tipo de sistema de archivos, también especificado como el valor de la opción -t;
  • Opciones: opciones de montaje adicionales, similares a los valores de la opción -o;
  • Volcado: condiciones para realizar una copia de seguridad del sistema de archivos utilizando la utilidad de volcado;
  • Pass#: condiciones para verificar el sistema de archivos con la utilidad fsck.

En un FreeBSD recién instalado, /etc/fstab incluirá necesariamente las siguientes entradas (ejemplo para el primer segmento del disco maestro en el primer canal IDE):

# Dispositivo Mountpoint FStype Opciones Dump Pass# /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1b none swap sw 0 0

Si sigue los consejos de personas razonables (y los valores predeterminados de sysinstall) y selecciona algunas ramas del sistema de archivos desde la raíz, entradas como

/dev/ad0s1d /var ufs rw 0 0 /dev/ad0s1e /usr ufs rw 0 0 /dev/ad0s1f /tmp ufs rw 0 0

/dev/ad0s1g /home ufs rw 0 0

responsable del sistema de archivos con los directorios de inicio de los usuarios.

Obviamente, en el campo Opciones puede agregar cualquier valor disponible (y razonable) de la opción -o (separado por comas, sin espacios), por ejemplo, noatime para todos los sistemas de archivos y para /tmp, también async, porque Se supone que el contenido de este directorio no se guarda después del reinicio.

Lo anterior se aplica a los sistemas de archivos que se montan automáticamente al inicio. Sin embargo, nadie le molesta en realizar entradas en /etc/fstab para sistemas que se conectan de vez en cuando; en este caso, se pueden montar de acuerdo con un esquema simplificado (esto es lo que quise decir anteriormente con modo semiautomático). Entonces, para una unidad de CD puede agregar una línea (de hecho, aparece automáticamente al generar el archivo /etc/fstab si se seleccionó el CD como fuente de instalación en sysinstall)

/dev/acd0 /cdrom cd9660 ro,noauto 0 0

en el que las opciones, como puede imaginar, prescriben la negativa a montar al inicio (noauto) y el modo de solo lectura (ro). Después de lo cual, para montar un CD, bastará con especificar solo el punto de montaje:

$montaje/cdrom

o. por el contrario, el nombre del archivo del dispositivo

$ montar /dev/acd0

Se pueden realizar entradas similares para todas las unidades extraíbles (Zip, unidades USB, incluso disquetes) y para particiones que no sean BSD (FAT o Ext2fs). Por cierto, puede montar sistemas de archivos usando un esquema simplificado inmediatamente después de realizar cambios en /etc/fstab, sin esperar a que la máquina se reinicie.

Desmontaje

Todos los sistemas de archivos involucrados deben desmontarse antes de apagar o reiniciar la máquina. Tras un cierre ordenado, esto se hace automáticamente, lo que da como resultado que cada sistema de archivos grabable reciba un bit de desmontaje limpio escrito en su propio superbloque. La presencia de este bit impide que la utilidad fsck verifique la coherencia de los sistemas de archivos la próxima vez que se inicie el sistema.

Sin embargo, en varios casos (por ejemplo, al conectar o desconectar el mecanismo de actualizaciones suaves o para realizar una verificación de integridad), es necesario desmontar (y volver a montar) manualmente los sistemas de archivos, para lo cual se utiliza el comando umount. Requiere un único argumento: especificar el punto de montaje del sistema de archivos "eliminado" del árbol de directorios, por ejemplo:

$monto/tmp

o, como en el caso del montaje semiautomático, el nombre del archivo del dispositivo de “apagado”:

$ desmontar /dev/ad#s#?

Puede desmontar varios sistemas de archivos con una línea:

$ desmontar /usr /var /home

O puede hacerlo: todos los sistemas de archivos montados o todos los sistemas de archivos enumerados en el archivo /etc/fstab (excepto el raíz), lo que requerirá opciones

$monto -A

$ cantidad -a

respectivamente. También es posible desmontar ciertos tipos de sistemas de archivos especificando los valores de la opción -t. si, equipo

$ cantidad -t ufs

desmontará sólo particiones BSD, sin afectar el CD y todo lo demás que esté involucrado en el sistema.

Los sistemas de archivos no deben estar en uso en el momento del desmontaje, es decir, no debe haber acceso a los archivos ubicados en ellos. Por lo tanto, estar en cualquier directorio de un sistema de archivos es razón suficiente para negarse a desmontarlo (con un mensaje como dispositivo ocupado), razón por la cual ninguno de los comandos enumerados anteriormente podrá desmontar el sistema de archivos raíz. El motivo para negarse a desmontar será la lectura del archivo de datos por parte de cualquier programa; al igual que con la eliminación de un archivo, el descriptor de archivo abierto por cualquier proceso no lo permitirá.

Sin embargo, también puede desmontar el sistema de archivos que está utilizando; para hacer esto, deberá ejecutar el comando umount con la opción -f (desde la fuerza, es decir, por la fuerza). Es cierto que esto puede provocar errores, por lo que es mejor no recurrir a él a menos que sea absolutamente necesario. Y la opción de desmontaje forzado no tendrá ningún efecto en el sistema de archivos raíz.

Montaje a granel

Para continuar trabajando después de realizar operaciones de bajo nivel en sistemas de archivos, será necesario volver a montarlos. Esto se puede hacer no sólo sin reiniciar, sino también sin tediosos montajes individuales. Simplemente use la opción -a:

$montaje -a

a través del cual se montarán todos los sistemas de archivos para los que haya entradas en /etc/fstab. En este caso se intentará montar aquellos que estén marcados con la bandera noauto. Para evitar esto, puede definir aún más el tipo de sistema de archivos. Es decir, el equipo

$ montar -a -t ufs

montará sólo particiones BSD, sin invadir CD o unidades flash. O, por el contrario, puede excluir del proceso de montaje global algunos de los sistemas de archivos enumerados en /etc/fstab, por ejemplo, los FAT actualmente innecesarios:

$ montar -a -t nomsdosfs

Preámbulo en lugar de conclusión

Por cierto, el comando de montaje sin opciones ni argumentos (y de esta forma, a diferencia de todos los casos discutidos anteriormente, puede ser administrado por un usuario normal) mostrará una lista de los sistemas de archivos actualmente montados, indicando el punto de montaje, sus condiciones y modo operativo. Por ejemplo, para la máquina en la que están escritas estas líneas, su salida se verá así:

/dev/ad0s1a en / (ufs, local, noatime, actualizaciones suaves) devfs en /dev (devfs, local) /dev/ccd0e en /var (ufs, local, noatime, actualizaciones suaves) /dev/ccd1e en / usr (ufs, local, noatime, actualizaciones suaves) /dev/ccd2e en /home (ufs, local, noatime, actualizaciones suaves) /dev/md0 en /tmp (ufs, local, noatime, async)

La primera línea de resultado muestra que la partición /dev/ad0s1a está montada en nuestro directorio raíz, lleva un sistema de archivos UFS (específicamente en este caso - UFS2, pero en el resultado del comando de montaje no difieren) con las Actualizaciones suaves El mecanismo está habilitado, es local (es decir, está ubicado en el disco de esta máquina; las unidades de red también se montan con el comando mount) y no está sujeto a la actualización del atributo atime.

$ más /etc/fstab /dev/ad0s1b ninguno swap sw 0 0 /dev/ar0s1b ninguno swap sw 0 0 /dev/ad0s1a / ufs rw,noatime 1 1 /dev/ccd0e /var ufs rw,noatime 2 2 /dev/ ccd1e /usr ufs rw,noatime 2 2 /dev/ccd2e /home ufs rw,noatime 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/da0s1 /mnt/usb ext2fs rw,noauto,noatime 0 0 / dev/md0 /tmp mfs rw,noatime,async,-s32m 2 0

entonces veremos que una de las líneas de salida

Devfs en /dev (devfs, local)

No hay correspondencia alguna entre sus registros. ¿Cuáles son estos dispositivos y sistemas de archivos?

Estoy abriendo una serie de minimanuales "para aquellos que no saben utilizar la búsqueda y hacen preguntas estúpidas". El tema de hoy es montar y desmontar discos en FreeBSD.

Por eso queremos acceder a los datos en un disco duro o unidad flash adicional. Para hacer esto, debemos conectarlo (montarlo) a un directorio vacío, después de lo cual tendremos acceso a los datos de este disco en la carpeta que creamos/existía anteriormente. (IMPORTANTE: no monte el disco en directorios ya ocupados, recibirá el contenido de su disco, por ejemplo, en lugar del contenido de la carpeta de archivos de configuración, piense en las consecuencias para usted mismo;))

Primero, cree una carpeta vacía. Imaginemos que el usuario Shitus quiere conectar el disco a un nuevo directorio llamado pron. Para hacer esto, crea una nueva carpeta dentro de su directorio personal (probablemente el lugar más seguro).

Mkdir /home/shitus/pron El siguiente paso es conectar el disco duro al punto de montaje (acabamos de crear una carpeta). Puede encontrar todos los dispositivos en su sistema en la carpeta /dev/. En mi caso, quiero conectar mi dispositivo /dev/da2 a la carpeta /home/shitus/pron

Monte /dev/da2 /home/shitus/pron Ahora puede ver el contenido de su disco en el directorio anterior.

Cómo conectar otros sistemas de archivos que no sean BSD

En mi caso tenemos una unidad USB con el sistema de archivos Fat32. Por lo tanto, al montar en BSD, debe indicar claramente el tipo de sistema de archivos utilizado.

Monte -t ​​msdosfs /dev/da2s1 /home/shitus/pron/

Para otros sistemas de archivos, puedes consultar la documentación de FreeBSD; no daré un enlace, porque Google lo es todo.

Cómo desmontar/desmontar un sistema de archivos

Digamos que desea desconectar/eliminar un dispositivo de archivos conectado. Puede haber muchas razones para esto, principalmente si desea borrar el disco o volver a conectarlo a otro punto de montaje. El comando es muy simple:

Desmontar /home/shitus/pron/

Asegúrese de no estar dentro de esta carpeta mientras ejecuta este comando; de lo contrario, el resultado será cero.

Si desea montar el disco al iniciar el sistema, debe registrarlo en el archivo /etc/fstab de la misma manera que los que ya están registrados allí. También puedes leer más sobre esto en la documentación, o algún día escribiré sobre ello por enésima vez.

NTFS es el sistema de archivos nativo de Windows. Por lo tanto, simplemente conectar unidades flash, discos duros u otros medios extraíbles desconocidos para nosotros no será posible (de hecho, funcionará, pero habrá problemas). Por lo tanto, estamos implementando nuestro manual completo sobre este tema.


  1. Como siempre, todo comienza con. Instale el controlador para NTFS: #cd /usr/ports/sysutils/fusefs-ntfs #make install clean
  2. A partir de FreeBSD 10, Fuse es parte del kernel. Lo hacemos cargar con módulos del sistema #nano /boot/loader.conf fuse_load="YES"

    Esto funcionará después de reiniciar. En la sesión actual, cargaremos este módulo manualmente.

    #kldload fusible

    Puedes comprobar si el módulo está cargado o no con el comando

    #kldstat

    Si la lista contiene fusible.ko, significa que todo está bien.

    #kldstat Id Refs Dirección Tamaño Nombre 1 3 0xffffffff80200000 1fa7c38 kernel 2 1 0xffffffff821a9000 1a7c8 fuse.ko

  3. A continuación, debemos decidir cómo ve el sistema una unidad flash o disco duro externo: #dmesg | grep da

    La salida será algo como esto:

    Da0 en umass-sim0 bus 0 scbus1 objetivo 0 lun 0 da0: s/n 00H79BHRYGX22JBN desconectado (da0:umass-sim0:0:0:0): Periférico destruido da0 en umass-sim0 bus 0 scbus1 objetivo 0 lun 0 da0: Dispositivo SCSI SPC-4 de acceso directo extraíble da0: Número de serie 00H79BHRYGX22JBN da0: Transferencias de 40.000 MB/s da0: 14870 MB (30453760 sectores de 512 bytes) da0: peculiaridades = 0x12 da1 en umass-sim1 bus 1 scbus2 objetivo 0 lun 0 da1: s/n 8968888304C9BB52 separado (da1:umass-sim1:1:0:0): Periférico destruido da1 en umass-sim1 bus 1 scbus2 objetivo 0 lun 0 da1: Dispositivo SCSI-2 de acceso directo extraíble da1: Número de serie 8968888306C9BB52 da1: Transferencias de 40.000 MB/s da1: 1999 MB (4093952 sectores de 512 bytes) da1: peculiaridades = 0x2

    Vemos que en el sistema tenemos dos unidades flash con identificadores. da0 Y da1. En nuestro ejemplo, solo usaremos una unidad flash. da0.

  4. Lo montamos con el siguiente comando: ntfs-3g /dev/da0 /mnt

    /dev/da0- esta es nuestra unidad flash, lo descubrimos en el punto 3.
    /mnt es el punto de montaje. Ella puede ser cualquiera.

    Si aparece un error, monte la partición de la unidad flash. Después de entrar

    NTFS-3G /dev/da0

    presione TAB y vea las particiones de la unidad flash

    Da0 da0s1

    Y montamos esta sección.

    Ntfs-3g /dev/da0s1 /mnt

  5. Vamos al directorio donde montamos la unidad flash y vemos su contenido allí: #cd /mnt #ll total 13 drwxrwxrwx 1 rueda raíz 0 4 nov. 17:23 Información del volumen del sistema/ -rwxrwxrwx 1 rueda raíz 9 4 de noviembre 18:05 xxx.xxx* -rwxrwxrwx 1 rueda de raíz 22 4 de noviembre 18:04 Archivo ZIP - WinRAR.zip* -rwxrwxrwx 1 rueda raíz 9904 4 de noviembre 18:04 Hoja de Microsoft Office Excel.xlsx*

    Ahora puede escribir archivos en la unidad flash y leerlos desde ella.

  6. Para poder desmontar el pendrive, primero salimos del directorio donde está montado. Por ejemplo #cd/

    Y después de eso, usemos el comando

    #montar /mnt

    tenga en cuenta que ¡El argumento no es una unidad flash, sino su punto de montaje!
    IMPORTANTE: ¡No extraiga la unidad flash inmediatamente después de ingresar el comando! ¡Solo se podrá retirar después de unos segundos, cuando el mensaje de entrada vuelva a aparecer en el terminal!

Inicio > Sistemas operativos > UNIX > BSD > FreeBSD

Añade un disco duro a FreeBSD en 5 minutos

A menudo llamo la atención sobre el hecho de que las preguntas sencillas suelen estar mal cubiertas en Internet. Probablemente esto se deba a que todos los gurús están seguros de que nadie hará preguntas tan estúpidas, porque todo el mundo lo sabe. Pero mi práctica ha demostrado que son estas pequeñas preguntas simples las más comunes no solo entre los principiantes, sino también entre los administradores serios que simplemente no tuvieron que lidiar con esto. Incluso los administradores serios no hacen esto todos los días, pero, para no olvidar, se guardan una especie de hoja de trucos, sin confesárselo a nadie. Arreglemos todo. Ahora aprenderá cómo agregar un disco duro a FreeBSD en 5 minutos. Entonces. Primero se darán instrucciones completas para comprender el proceso, y al final habrá una breve lista de acciones, que solo contendrá una lista de comandos a modo de hoja de trucos.

Instrucciones detalladas con explicaciones.

Seleccionar un nombre de disco duro

Primero debemos determinar el nombre del dispositivo que acabamos de agregar. El siguiente comando nos ayudará con esto:

Lista de discos geométricos

O este comando:

Lista de desarrolladores de Camcontrol

En un sistema real, estos comandos mostrarán más información útil, concretamente nombres de dispositivos y números de serie.

Antes de instalar el nuevo dispositivo, sabíamos que nuestro sistema estaba instalado en ada0, lo que significa, lógicamente, que nuestra nueva unidad es ada1. Puede determinarlo por el nombre del nuevo dispositivo, su número de serie o su volumen.

Ahora verifiquemos si hay marcas en nuestro nuevo disco.

Gpart muestra ada1

El disco no tiene ninguna marca.

Eliminar el marcado existente

Si el disco ya se ha utilizado y es necesario quitarle las marcas, simplemente ejecute:

Gpart destruir -F ada1

Creando marcado GPT

Primero, debemos crear una partición de disco. Recomiendo encarecidamente olvidarse de MBR y cambiar a uno nuevo, más conveniente y funcional: GPT.

Creamos marcado GPT en el disco y luego comprobamos qué sucede:

Gpart crear -s gpt /dev/ada1 gpart mostrar ada1

Ahora nuestro disco tiene partición GPT. En el resultado se puede ver que absolutamente todo el disco, desde LBA 34 hasta LBA 8388541, está vacío. LBA 0-33: reservado por el sistema para la tabla de particiones.

Digamos que necesitamos crear dos particiones en este disco:

  • intercambio- intercambiar partición
  • datos- una sección del tipo ufs para almacenar cualquier dato que necesitemos.

Crear secciones (rebanadas)

Si la instalación se realiza en discos duros modernos con un tamaño de sector de 4 KB, se debe utilizar la alineación al crear particiones. Puedes hacerlo de dos maneras:
1) si especificamos los parámetros de la sección en bloques, ingresamos el número de bloque como múltiplo de 8, por ejemplo: -b 40;
2) si indicamos el tamaño de la partición en bytes, o no indicamos el inicio y el tamaño en absoluto, use el parámetro -un 4k, que ajustará el inicio y el final de la sección a sectores de 4 kb de tamaño. Dado que en este ejemplo estamos realizando una instalación de prueba en un disco duro virtual, no es necesario que hagamos esto. En cualquier caso, antes de crear particiones, necesita saber exactamente el tamaño del sector de su disco; de lo contrario, se producirá una terrible ralentización del trabajo.

Ahora creemos las particiones. Para hacer esto, existe un comando gpart add con varios parámetros. Primer parámetro -t- indica el tipo de sistema de archivos que se está creando. En nuestro caso se utilizarán dos tipos: freebsd-swap y freebsd-ufs. A continuación se muestran dos parámetros opcionales: -b- indica el número LBA a partir del cual se debe crear la partición. Si no especifica este parámetro, la partición se creará automáticamente a partir del primer LBA libre. -s- indica el tamaño de la partición en el LBA. Tamaño de un bloque LBA = 512 bytes. Es recomendable indicarlo en número de bloques LBA, pero también es posible en kilo/mega/giga/… bytes (sufijo k/M/G). Si no especifica este parámetro, la partición se creará con el máximo LBA posible dentro del área vacía. También puede especificar la etiqueta de la sección como parámetro, por ejemplo: -l intercambio1- en este caso, se creará la etiqueta /dev/gpt/swap1, que se puede utilizar para acceder más cómodamente a la partición. El último parámetro requerido es la ruta al disco. En nuestro caso: /dev/ada1.

Creemos dos particiones y luego veamos qué tenemos. Crearemos la primera partición sin especificar el LBA inicial, pero especificando el tamaño de 1 GB (2097152 bloques). Crearemos la segunda partición sin especificar el LBA inicial y sin especificar el tamaño; por lo tanto, se creará en todo el espacio libre.

Gpart agregar -t freebsd-swap -s 2097152 /dev/ada1 gpart agregar -t freebsd-ufs /dev/ada1 gpart show ada1

El tamaño se puede especificar en bytes en lugar de bloques. Es mucho más conveniente. El único inconveniente es que el sistema no siempre puede calcular correctamente el número de bloques. Puede haber casos en los que una cierta cantidad de bloques permanezcan vacíos en el disco al especificar el tamaño de la partición en bytes.

Crear un sistema de archivos (formatear)

No es necesario formatear las particiones de intercambio. Pero las particiones como ufs deben formatearse antes de usarse. Sería más correcto decir: se debería crear un sistema de archivos en ellos.

Para crear un sistema de archivos en la segunda partición, simplemente ejecute el siguiente comando:

Nuevos -U /dev/ada1p2

En este caso, se utilizó el parámetro -U; indica que se debe utilizar el mecanismo de actualizaciones suaves en este sistema de archivos. Puede omitir esta opción para evitar habilitar este mecanismo.

Montaje

El siguiente paso es montar las particiones. Primero, para no olvidarlo, agreguemos nuestras nuevas secciones a /etc/fstab. Mi archivo después de editarlo se ve así:

Para volver a montar todas las particiones según el archivo /etc/fstab, simplemente ejecute el comando:

Monte -a

Como puede ver en el resultado, la partición /dev/ada1p2 está montada. Ahora veamos qué pasó con la sección SWAP. Ejecutemos el comando:

Como puede ver, la nueva partición SWAP no está montada. Para poder montar SWAP, debe habilitarlo con un comando especial:

Intercambio /dev/ada1p1

De la misma manera, usando el comando swapoff, debes deshabilitar la partición SWAP antes de realizar cualquier acción en ella.

Esto completa todos los pasos para agregar un nuevo disco duro al sistema.

Breves instrucciones

Dado: disco duro /dev/ada1

Objetivo: Elimine la partición existente, cree una nueva partición GPT, cree dos particiones: intercambio y datos y conéctelas al sistema de trabajo.

Después de cada acción, haz espectáculo de parte para observar el resultado. Secuenciación:

  1. Eliminar el marcado existente:
    gpart destruir -F ada1
  2. Crear nuevo marcado:
    gpart crear -s gpt /dev/ada1
  3. Crea dos particiones: swap y datos:
    gpart agregar -t freebsd-swap -s 2097152 /dev/ada1 gpart agregar -t freebsd-ufs /dev/ada1
  4. Crear un sistema de archivos UFSv2 en la segunda sección:
    nuevosfs -U /dev/ada1p2
  5. Agregue líneas al archivo /etc/fstab para el montaje automático en el arranque:
    /dev/ada1p1 ninguno swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Monte una nueva partición (el comando monta todas las particiones desde el archivo /etc/fstab):
    montar -a
  7. Habilite la nueva partición de intercambio con el comando:
    swapon /dev/ada1p1 Material tomado del sitio:



Arriba