Système de fichiers FreeBSD : hiérarchie et montage. Montage du système de fichiers Freebsd

Ils doivent être montés et lorsque toutes les actions nécessaires ont été effectuées, ils doivent être démontés. Habituellement, les commandes mount (8) / umount (8) sont utilisées pour monter / démonter, et personne ne pense à automatiser ces opérations. À mon avis, ce n'est pas la meilleure approche, surtout compte tenu du fait que le système d'exploitation FreeBSD inclut un démon spécial de montage automatique.

Formulation du problème

Le démon de montage automatique du système d'exploitation FreeBSD amd (8) est conçu pour le montage transparent d'absolument tous les systèmes de fichiers lors de l'accès aux fichiers et dossiers qui s'y trouvent, ainsi que pour le démontage ultérieur de ces systèmes de fichiers s'il n'y a pas d'activité pendant une durée spécifiée. intervalle. Cet article se concentre sur la configuration d'amd pour monter automatiquement les systèmes de fichiers exportés par les serveurs NFS et les dossiers partagés fournis par les serveurs SMB. De plus, il décrit les diagnostics d'amd à l'aide de l'utilitaire amq (8) et en lui allouant son propre journal à l'aide des outils de gestion de journaux standard syslogd (8) et newsyslog (8).

Donnée initiale

Pour résoudre le problème considéré, aucun Logiciel cependant, vous devrez en créer un qui permet au superutilisateur racine de monter les dossiers partagés sélectionnés fournis par les serveurs SMB sans entrer de mot de passe.

Monter automatiquement les systèmes de fichiers NFS

Pour monter automatiquement les systèmes de fichiers NFS, ajoutez la ligne suivante à /etc/rc.conf :

Amd_enable = "OUI"

et démarrez amd avec la commande /etc/rc.d/amd start. Par défaut, amd utilisera le dossier alternatif /.amd_mnt, acheminera ses messages d'état vers la section du démon syslog et autorisera le montage des systèmes de fichiers NFS sur les dossiers locaux du système de fichiers / host et / net selon le /etc/amd.map carte de montage (cette carte de montage est incluse avec le système d'exploitation FreeBSD et contient des règles sur la façon de monter et de démonter les systèmes de fichiers NFS à l'aide du système de fichiers hôte réseau). Si nous traduisons ce qui a été dit en langage humain, alors immédiatement après le démarrage d'amd, vous pouvez accéder au système de fichiers de partage exporté par le serveur NFS nfsserver en tant que dossier local normal nommé / host / nfsserver / share ou / net / nfsserver / share. Avec un tel accès et l'absence du système de fichiers nécessaire dans la liste des systèmes de fichiers montés, amd créera un point de montage /.amd_mnt/nfsserver/host/share, y montera le système de fichiers partagé, créera le / host / nfsserver ou / net / nfsserver et ajoutez-y un lien symbolique vers le point de montage ci-dessus. Si le dossier / host / nfsserver / share ou / net / nfsserver / share n'est pas utilisé pendant 5 minutes, amd démontera le système de fichiers partagé, puis supprimera les dossiers inutiles et le lien symbolique.

Montage automatique des systèmes de fichiers SMBFS

Pour activer le montage automatique des systèmes de fichiers SMBFS, vous devrez créer une ou plusieurs mappes de montage supplémentaires, dont chacune doit contenir des règles basées sur l'utilisation du système de fichiers du programme. Pour pouvoir accéder aux dossiers partagés par des noms de modèles tels que / smbfs / smbserver / share, vous devez allouer une carte de montage distincte pour chaque serveur SMB. Par exemple, pour spécifier les règles de montage des dossiers partagés share1 et share2 fournis par le serveur SMB smbserver, vous pouvez créer une carte de montage nommée /etc/amd.map-smbserver (vous pouvez modifier ce nom selon votre goût) et ajouter les lignes suivantes :

Type de partage1 : = programme ; fs : = $ (autodir) / $ (chemin); montage : = "/ sbin / mount mount -t smbfs \\\ / \\\ / [email protégé]/ share1 $ (fs) "; share2 type: = programme; fs: = $ (autodir) / $ (path); mount: =" / sbin / mount mount -t smbfs \\\ / \\\ / [email protégé]/ share2 $ (fs) " ;

Les règles ci-dessus forceront amd à monter les dossiers partagés sur le point de montage $ (autodir) (la variable $ (autodir) contient le nom du dossier alternatif) avec les commandes / sbin / mount -t smbfs // [email protégé]/ partager .... L'absence de paramètre umount ou unmount implique l'utilisation des commandes de démontage par défaut umount $ (fs) (la variable $ (fs) contient le nom du point de montage).
Pour lier la mappe de montage créée au point de montage / smbfs / smbserver, ajoutez la ligne suivante au fichier /etc/rc.conf :

Amd_flags = "$ amd_flags / smbfs / smbserver /etc/amd.map-smbserver"

et redémarrez amd avec la commande /etc/rc.d/amd restart. Immédiatement après avoir terminé ces étapes, vous pourrez accéder aux dossiers partagés share1 et share2 fournis par le serveur SMB smbserver en tant que dossiers locaux normaux / smbfs / smbserver / share1 et / smbfs / smbserver / share2.

Analyse du statut amd avec l'utilitaire amq

Pour connaître rapidement l'état actuel d'amd, vous pouvez utiliser la commande amq -m pour afficher une liste des systèmes de fichiers montés, y compris le nombre de liens vers chacun d'eux et contenant des informations sur les erreurs de montage, quelque chose comme ceci :

"root" racine 1 localhost est actif /etc/amd.map / host toplvl 1 localhost est actif /etc/amd.map / net toplvl 1 localhost est actif /etc/amd.map-smbserver / smbfs / smbserver toplvl 1 localhost est up nfsserver: / host / nfsserver /.amd_mnt/nfsserver host 1 nfsserver is up mount -t smbfs // [email protégé]/ share1 ... /.amd_mnt/smbfs/smbserver/share1 programme 1 localhost est en place

La première colonne de ce tableau contient le nom de la carte de montage pour les points de montage ou les options de montage pour les systèmes de fichiers montés, la seconde est le nom du point de montage, la troisième est le type de système de fichiers amd, la quatrième est le nombre de références au point de montage ou système de fichiers, et le cinquième est le nom de l'ordinateur sur lequel se trouve le système de fichiers, le sixième est l'état du point de montage ou du système de fichiers, le septième est les messages d'erreur de montage (s'il n'y a pas d'erreurs, le septième colonne ne s'affiche pas). Comme amd et le rpcbind (8) qu'il exécute prennent en charge les enveloppeurs TCP, la commande amq -m peut entraîner des messages d'erreur comme celui-ci :

Amq : localhost : RPC : Échec du mappeur de port - RPC : Erreur d'authentification amq : localhost : RPC : Erreur d'authentification ; pourquoi = Échec (erreur non spécifiée)

Pour éliminer ces erreurs, ajoutez des règles au fichier /etc/hosts.allow pour autoriser l'accès à amd et rpcbind depuis localhost :

Amd : 127.0.0.1 : autoriser amd : TOUS : refuser rpcbind : 127.0.0.1 : autoriser rpcbind : TOUS : refuser

Fournir à amd son propre journal

Les options de démarrage par défaut dans /etc/defaults/rc.conf amènent amd à envoyer des messages d'état à la section démon du syslog. Si vous souhaitez fournir à amd un journal distinct appelé /var/log/amd.log, vous devrez rediriger ces messages vers une section différente du journal système (dans mon cas, vers la section local6) et modifier également le configuration du démon syslogd en conséquence.
Compte tenu de tous les changements dans les fichiers de configuration décrits dans cet article, afin de rediriger les messages amd vers le /var/log/amd.log, vous devez d'abord changer la définition de la variable amd_flags dans le /etc/rc.conf fichier sous la forme suivante :

Amd_flags = "- un /.amd_mnt -l syslog: local6 / host /etc/amd.map / net /etc/amd.map / smbfs / smbserver1 /etc/amd.map-smbserver1"

et redémarrez amd avec la commande /etc/rc.d/amd restart, et deuxièmement, ajoutez la ligne suivante au fichier /etc/syslog.conf :

Local 6. * /Var/log/amd.log

créez un journal vide avec la commande touch /var/log/amd.log et redémarrez syslogd avec la commande /etc/rc.d/syslogd restart.
Pour empêcher la croissance du journal amd, vous devez activer la rotation à l'aide de l'utilitaire newsyslog. Par exemple, pour tronquer quotidiennement le journal /var/log/amd.log tout en conservant les sept copies précédentes compressées par l'archiveur bzip2 (1), ajoutez la ligne suivante au fichier /etc/newsyslog.conf :

/var/log/amd.log 644 7 * @ T00 JC

Conclusion

Après avoir terminé les étapes décrites dans cet article, vous n'avez plus à surveiller la nécessité de monter et de démonter les systèmes de fichiers NFS et SMBFS. J'espère que vous trouverez cette fonctionnalité utile et assurez-vous de prêter attention à amd.

de

J'attire souvent votre attention sur le fait que des questions simples sont souvent mal traitées sur Internet. C'est probablement parce que tous les gourous sont sûrs que personne ne posera jamais de questions aussi stupides, parce que tout le monde le sait. Mais ma pratique a montré que ce sont précisément ces petites questions simples qui sont les plus fréquentes non seulement pour les débutants, mais aussi pour les administrateurs sérieux qui n'ont tout simplement pas eu à s'occuper de cela. Même les administrateurs sérieux ne le font pas tous les jours et, pour ne pas l'oublier, ils gardent pour eux une sorte d'aide-mémoire, sans l'avouer à personne. Réparons cela. Vous allez maintenant apprendre à ajouter Disque dur dans FreeBSD. Donc. Tout d'abord, il y aura une instruction complète pour comprendre le processus, et à la fin il y aura une courte liste d'actions, qui ne contiendra qu'une liste de commandes sous forme d'aide-mémoire.

Instructions détaillées avec explications

Choisir un nom de disque dur

Tout d'abord, nous devons définir le nom de l'appareil que nous venons d'ajouter. La commande suivante va nous aider :

Liste des disques Geom

Ou une commande comme celle-ci :

Liste des développeurs de Camcontrol

Dans un système réel, ces commandes afficheront des informations plus utiles, à savoir : les noms des appareils et leurs numéros de série.

Avant d'installer le nouveau périphérique, nous savions que notre système était installé sur ada0, ce qui signifie, logiquement, que notre nouveau disque est ada1. Vous pouvez l'identifier par le nom du nouvel appareil, son numéro de série ou le volume.

Vérifions maintenant s'il y a du balisage sur notre nouveau disque

Gpart show ada1

Le disque n'a pas de balisage.

Supprimer le balisage existant

Si le disque a déjà été utilisé et qu'il est nécessaire d'en supprimer le partitionnement, faites simplement :

Gpart détruire -F ada1

Générer un balisage GPT

Tout d'abord, nous devons créer une disposition de disque. Je recommande fortement d'oublier le MBR et de passer à un nouveau, plus pratique et fonctionnel - GPT.

Créez une partition GPT sur le disque, puis vérifiez ce qui s'est passé :

Gpart create -s gpt / dev / ada1 gpart show ada1

Maintenant, notre disque est GPT. À partir de la sortie, vous pouvez voir qu'absolument tout le disque, commençant par LBA 34 et se terminant par LBA 8388541, est vide. LBA 0-33 - Réservé par le système pour la table de partition.

Disons que nous devons créer deux partitions sur ce disque :

  • échanger- échanger la partition
  • Les données- une section de type ufs pour stocker toutes les données dont nous avons besoin.

Création de sections (tranches)

Si l'installation est effectuée sur des disques durs modernes avec une taille de secteur de 4 Ko, l'alignement doit être utilisé lors de la création de partitions (partitions). Vous pouvez le faire de deux manières : 1) si nous indiquons les paramètres de la section en blocs, alors entrez le numéro du bloc en multiples de 8, par exemple : -b 40; 2) si nous spécifions la taille de la section en octets, ou ne spécifions pas du tout le début et la taille, utilisez le paramètre -un 4k, qui adaptera le début et la fin de la partition à des secteurs de 4 ko. Puisque nous sommes dans cet exemple nous effectuons une installation de test sur un disque dur virtuel, alors cela peut être omis. Dans tous les cas, avant de créer des partitions, vous devez connaître exactement la taille du secteur de votre lecteur, sinon cela entraînera de terribles freins au travail.

Créons maintenant des partitions. Pour cela, il existe une commande gpart add avec divers paramètres. Premier paramètre -t- indique le type de système de fichiers en cours de création. Dans notre cas, deux types seront utilisés : freebsd-swap et freebsd-ufs. Ensuite, il y a deux paramètres facultatifs : -b- indique le numéro LBA, à partir duquel vous souhaitez créer la section. Si vous ne précisez pas ce paramètre, alors la partition sera créée automatiquement à partir du premier LBA libre. -s- indique la taille de la partition en LBA. La taille d'un bloc LBA = 512 octets. Il est souhaitable d'indiquer en nombre de blocs LBA, mais c'est aussi possible en kilo/mega/giga/... octets (suffixe k/M/G). Si vous ne spécifiez pas ce paramètre, la section sera créée jusqu'au LBA maximum possible dans la zone vide. Vous pouvez également spécifier une étiquette de section en tant que paramètre, par exemple : -l échange1- dans ce cas, le label / dev / gpt / swap1 sera créé, par lequel vous pourrez accéder plus facilement à la partition. Le dernier paramètre requis est le chemin d'accès au disque. Dans notre cas : /dev/ada1.

Créons deux sections et voyons ensuite ce que nous obtenons. Nous allons créer la première partition sans spécifier le LBA initial, mais en spécifiant la taille de 1 Go (2097152 blocs). Nous allons créer la deuxième section sans spécifier le LBA initial et sans spécifier la taille - de cette façon, elle sera créée sur tout l'espace libre.

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

La taille peut être spécifiée en octets, pas en blocs. C'est beaucoup plus pratique. Le seul inconvénient est que le système ne peut pas toujours calculer correctement le nombre de blocs. Il peut arriver qu'un certain nombre de blocs restent vides sur le disque lors de la spécification de la taille de la partition en octets.

Création de système de fichiers (formatage)

Il n'est pas nécessaire de formater les partitions d'échange. Mais les partitions comme ufs doivent être formatées avant utilisation. Il serait plus correct de dire : un système de fichiers doit être créé sur eux.

Pour créer un système de fichiers sur la deuxième partition, exécutez simplement la commande suivante :

Newfs -U / dev / ada1p2

Dans ce cas, le paramètre -U a été utilisé - il indique que le mécanisme de mises à jour logicielles doit être utilisé dans ce système de fichiers. Vous pouvez choisir de ne pas utiliser ce paramètre pour ne pas activer ce mécanisme.

Montage

L'étape suivante consiste à monter les partitions. Tout d'abord, pour ne pas oublier, ajoutons nos nouvelles partitions dans /etc/fstab. Mon fichier ressemble à ceci après édition :

Afin de remonter toutes les partitions selon le fichier /etc/fstab, exécutez simplement la commande :

Mont -a

Comme vous pouvez le voir sur la sortie, la partition / dev / ada1p2 est montée. Voyons maintenant ce qui est arrivé à la section SWAP. Exécutons la commande :

Comme vu, nouvelle rubrique SWAP n'est pas monté. Pour monter SWAP, vous devez l'activer avec une commande spéciale :

Swapon / dev / ada1p1

De même, vous devez désactiver la section SWAP à l'aide de la commande swapoff avant d'agir dessus.

C'est tout pour en ajouter un nouveau. disque dur dans le système sont terminés.

Brève instruction

Étant donné: disque dur / dev / ada1

Cible: supprimez le balisage existant, créez un nouveau balisage GPT, créez deux partitions : swap et data et connectez-les au système de production.

Après chaque étape, faites spectacle gpart pour voir le résultat. Séquençage :

  1. Supprimer le balisage existant : gpart destroy -F ada1
  2. Créer un nouveau balisage : gpart create -s gpt / dev / ada1
  3. Créez deux partitions : swap et data : gpart add -t freebsd-swap -s 2097152 / dev / ada1 gpart add -t freebsd-ufs / dev / ada1
  4. Créer un système de fichiers UFSv2 sur la deuxième partition : newfs -U/dev/ada1p2
  5. Ajoutez des lignes au fichier /etc/fstab pour le montage automatique au démarrage : /dev/ada1p1 none swap sw 0 0 /dev/ada1p2/mnt ufs rw 2 2
  6. Montez une nouvelle partition (la commande monte toutes les partitions du fichier /etc/fstab) : mount -a
  7. Activez la nouvelle partition de swap avec la commande : swapon / dev / ada1p1

Ceci termine la configuration.

Vous pouvez modifier les droits d'accès et le propriétaire des fichiers et des répertoires en utilisant les commandes chmod et chown... Le masque de paramétrage des droits sur les fichiers créés peut être modifié globalement, en /etc/profil pour Linux et dans /etc/login.conf pour FreeBSD. Généralement, le masque par défaut est 022 ... Sens umask soustrait de 777 donc les autorisations compteront 755 ... exe - exécution autorisée lecture - accès en lecture écriture - accès en écriture bit SUID - l'attribut file, en conjonction avec l'attribut file exécutable, permet à l'exécutable de s'exécuter avec l'UID effectif du propriétaire du fichier, plutôt que celui qui lance le fichier 1 --x exécuter # Droits 764 = exec/lecture/écriture | lire / écrire | lire 2 -w- écrire # Pour : | - Propriétaire - | | - Groupe- | |Autre | 4 r -- lire ugo = a u = utilisateur, g = groupe, o = autres, a = tout le monde# chmod MODE [, MODE] FICHIER # MODE a la forme : *([-+=]()) # chmod 640 / var / log / maillog # Définir les droits d'accès égaux -rw-r ----- # chmod u = rw, g = r, o = / var / log / maillog # Idem que ci-dessus # chmod -R o-r / home / * # Modifier les autorisations de manière récursive, interdire la lecture pour Autre # chmod u + s / chemin / vers / prog # Installer SUID peu sur fichier exécutable(attention ici, vous devez comprendre ce que vous faites)# find / -perm -u + s -print # Trouvez tous les programmes avec installés SUID bit# utilisateur chown : groupe / chemin / vers / fichier # Définir l'utilisateur et le groupe comme propriétaire du fichier# chgrp groupe / chemin / vers / fichier # Changer le groupe qui possède le fichier# chmod 640 `find ./ -type f -print` # Modifier les droits d'accès à 640 pour tous les fichiers# chmod 751 `find ./ -type d -print` # Modifier les droits d'accès à 751 pour tous les répertoires

Informations sur le disque

# diskinfo -v / dev / ad2 # Afficher les informations sur le disque ( secteur / taille) FreeBSD# hdparm -I / dev / sda # Des informations sur IDE/ATA disque (Linux)# fdisk / dev / ad2 # Afficher les partitions de disque de changement# smartctl -a / dev / ad2 # Spectacle INTELLIGENT informations sur le disque

Chargement en cours

FreeBSD

Pour démarrer l'ancien noyau, en cas d'urgence, par exemple après l'échec d'une compilation et l'installation d'un nouveau, arrêtez le démarrage en appuyant sur 6 pendant le compte à rebours pour accéder à l'invite ligne de commande... # décharger # charger kernel.old # boot

Points de montage, utilisation du disque

# monture | colonne -t # Afficher les systèmes de fichiers montés# df # Afficher la quantité d'espace libre et les périphériques montés# cat / proc / partitions # Afficher toutes les partitions enregistrées (Linux)

Informations sur l'annuaire

# du -sh * # Tailles de répertoire sous forme de liste# du -csh # La taille totale du répertoire courant# du -ks * | trier -n -r # Liste des répertoires triés par taille en kilo-octets# ls -lSr # Liste des répertoires, tri inversé

Qui a ouvert quels fichiers

Parfois, il est nécessaire de savoir quel fichier a verrouillé une partition, c'est pourquoi la commande démonter renvoie une erreur correspondante. # umount / home / umount : démontage de / home # Il est impossible de démonter la partition tant que / domicile fermé à clééchec : appareil occupé

FreeBSD et la plupart des systèmes de type Unix

# fstat -f / maison # pour le point de montage# fstat -p PID # pour application avec PID# fstat -u utilisateur # pour le nom d'utilisateur Trouve fichier ouvert pour Xorg: # ps hache | grep Xorg | awk "(print $1)" 1252 # fstat -p 1252 USER CMD PID FD MOUNT INUM MODE SZ | DV R/W root Xorg 1252 root/2 drwxr-xr-x 512 r root Xorg 1252 text/usr 216016 -rws- - x - x 1679848 r root Xorg 1252 0 / var 212042 -rw-r - r-- 56987 w Rechercher le fichier avec inum 212042 dans l'annuaire / var vous pouvez aimer ceci : # find -x / var -inum 212042 /var/log/Xorg.0.log

Linux

Trouver un fichier ouvert dans un répertoire avec unité de fusion ou lsof: # fuser -m / home # Liste des processus qui ont accès à / domicile # lsof / home COMMANDE PID UTILISATEUR FD TYPE DEVICE SIZE NODE NAME tcsh 29029 eedcoba cwd DIR 0.18 12288 1048587 / home / eedcoba (guam: / home) lsof 29140 eedcoba cwd DIR 0.18 12288 1048587 / home / eedco / home) Trouver PID applications : ps hache | grep Xorg | awk "(print $1)" 3324 # lsof -p 3324 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8.6 56296 12492 /var/log/Xorg.0.log Par nom de fichier : # lsof / var /log /Xorg.0.log COMMANDE PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8.6 56296 12492 /var/log/Xorg.0.log

Montage/remontage de systèmes de fichiers

Par exemple CD ROMécrit en /etc/fstab: # mount / cdrom Ou vous pouvez trouver le périphérique dans / dev ou en sortie dmesg

FreeBSD

# mount -v -t cd9660 / dev / cd0c / mnt # Monter le disque CD ROM(méthode un)# mount_cd9660 / dev / wcd0c / cdrom # Monter le disque CD ROM(méthode deux)# mount -v -t msdos / dev / fd0c / mnt # Écriture sur disquette /etc/fstab: # Device Mountpoint FStype Options Dump Pass # / dev / acd0 / cdrom cd9660 ro, noauto 0 0 Autoriser les utilisateurs à monter des lecteurs : # sysctl vfs.usermount = 1 # Ou écrivez une ligne "vfs.usermount = 1" dans /etc/sysctl.conf

Linux

# mount -t auto / dev / cdrom / mnt / cdrom # Commande de montage de disque typique CD ROM # mount / dev / hdc -t iso9660 -r / cdrom # Monter le disque IDE # mount / dev / scd0 -t iso9660 -r / cdrom # Monter le disque SCSI CD ROM# mount / dev / sdc0 -t ntfs-3g / windows # Monter le disque SCSI Inscription à /etc/fstab: / dev / cdrom / media / cdrom subfs noauto, fs = cdfss, ro, procuid, nosuid, nodev, exec 0 0

Monter une partition FreeBSD avec Linux

Recherchez le numéro de la section dans fdisk, il s'agit généralement de la section racine, mais cela peut être sur un autre BSD tranche. S'il y a beaucoup de tranches sur la partition FreeBSD, elles ne seront pas visibles à travers fdisk mais ils peuvent être trouvés dans dev/sda * ou / dev / hda *... # fdisk / dev / sda # Trouver la partition FreeBSD/ dev / sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype = ufs2, ro / dev / sda3 / mnt / dev / sda10 = / tmp; / dev / sda11 / usr # Une autre tranche

Remontage

Remontez l'appareil sans le démonter au préalable, par exemple pour fsck# mount -o remount, ro / # Linux # mount -o ro / # FreeBSD Copie le flux de données depuis CD ROM"et au fichier image ISO... # dd if = / dev / cd0c of = file.iso

Création d'une partition d'échange à la volée

Supposons que vous ayez besoin d'augmenter la partition de swap, disons à 2 gigaoctet, / swap2go(pour Linux) # dd if = / dev / zero of = / swap2gb bs = 1024k count = 2000 # mkswap / swap2gb # Create swap # swapon / swap2gb # Activer l'échange, maintenant il peut être utilisé# swapoff / swap2gb # Désactiver le swap # rm / swap2gb

Monter la partition SMB

CIFS- Système de fichiers Internet commun PME- bloc de message du serveur Supposons que vous ayez besoin d'accéder à un PME section mon partage sur serveur serveur smb, l'adresse saisie sur la machine Windows sera \\ smbserver \ monpartage \... nous monterons sur / mnt / smbshare... N'oubliez pas pour caf une adresse IP ou un nom de domaine est requis.

Linux

# smbclient -U user -I 192.168.16.229 -L // smbshare / # Lister les partages # mount -t smbfs -o username = winuser // smbserver / myshare / mnt / smbshare # mount -t cifs -o username = winuser, mot de passe = winpwd //92.168.16.229/myshare / mnt / share Aussi package mont.cifs vous permet de stocker des privilèges dans un fichier comme /home/utilisateur/.smb: nom d'utilisateur = winuser password = winpwd Et maintenant, montez : # mount -t cifs -o credentials = / home / user / .smb //92.168.16.229/myshare / mnt / smbshare

FreeBSD

Utiliser la clé -JE pour définir l'adresse IP (ou DNS); serveur smb, c'est le nom de Windows. # vue smbutil -I 192.168.16.229 // [email protégé] # Liste des ressources partagées# mount_smbfs -I 192.168.16.229 // [email protégé]/ myshare / mnt / smbshare

Monter l'image

Bouclage Linux

# mount -t iso9660 -o loop file.iso / mnt # Monter l'image du CD# mount -t ext3 -o loop file.img / mnt # Monter l'image avec le système de fichiers poste3

FreeBSD

À l'aide de Maryland- dispositif de mémoire (si nécessaire, faites kldload md.ko): # mdconfig -a -t vnode -f fichier.iso -u 0 # mount -t cd9660 / dev / md0 / mnt # umount / mnt; mdconfig -d -u 0 # Effacer le périphérique de mémoire Ou en utilisant un pseudo appareil ( VN, nœud virtuel): # vnconfig / dev / vn0c fichier.iso; mount -t cd9660 / dev / vn0c / mnt # umount / mnt; vnconfig -u / dev / vn0c # Effacer le pseudo appareil

Créer et graver une image ISO

Nous copierons le cd ou le dvd secteur par secteur. # dd if = / dev / hdc of = / tmp / mycd.iso bs = 2048 conv = notrunc Utiliser mkisofs pour créer une image à partir d'un fichier dans un répertoire. Pour surmonter les restrictions de nom de fichier, utilisez l'option -r y compris l'extension RockRidge, de base pour les systèmes UNIX, -J comprend Joliet utilisé par Microsoft, -L permet ISO9660 noms commençant par un point. # mkisofs -J -L -r -V TITLE -o imagefile.iso / path / to / dir Sur FreeBSD, mkisofs peut être installé à partir de ports/usr/ports/sysutils/cdrtools.

Graver des images ISO de CD/DVD

FreeBSD

FreeBSD ne s'installe pas DMA au ATAPI périphériques, cela peut être fait via la variable sysctl ou en dossier /boot/loader.conf, par les entrées suivantes. hw.ata.ata_dma = "1" hw.ata.atapi_dma = "1" Utiliser Graver un CD pour les appareils ATAPI ( Graver un CD, programme standard, faisant partie du système de base) et cdrecord(de /usr/ports/sysutils/cdrtools) pour les périphériques SCSI. # burncd -f / dev / acd0 data imagefile.iso fixate # Pour les appareils ATAPI# cdrecord -scanbus # Trouver l'enregistreur # cdrecord dev = 1,0,0 imagefile.iso

Linux

Utiliser aussi cdrecord comme décrit ci-dessus. Alternativement, vous pouvez utiliser l'interface ATAPI native : # cdrecord dev = ATAPI -scanbus Écrire comme décrit ci-dessus.

dvd + rw-outils

Le package dvd + rw-tools (FreeBSD : ports / sysutils / dvd + rw-tools) a toutes les fonctionnalités dont vous avez besoin pour travailler avec DVD, plus croissance, pour graver un CD ou un DVD. La documentation avec des exemples peut être trouvée dans le manuel FreeBSD Chapitre 18.7 # -dvd-compat ferme le disque# growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # Ecrire existant image iso # growisofs -dvd-compat -Z/dev/dvd -J -R/p/to/data # Ecrire directement

Convertir l'image du fichier Nero .nrg en fichier .iso

Nero ajoute un titre de 300 Ko à l'image, il peut être recadré en utilisant jj... # dd bs = 1k if = imagefile.nrg of = imagefile.iso skip = 300

Convertir l'image bin/cue en .iso

Cela peut être fait avec un petit programme, bchunk. Sur FreeBSD, il peut être trouvé dans les ports /usr/ports/sysutils/bchunk... # bchunk imagefile.bin imagefile.cue imagefile.iso

Créer une image à partir d'un fichier

Par exemple, une partition de 1 Go utilise le fichier /usr/vdisk.img... Dans ce cas, on utilise la clé -u 0, mais le nombre peut être n'importe quoi.

FreeBSD

# dd if = / dev / random of = / usr / vdisk.img bs = 1K count = 1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # Créer un appareil / dev / md1 # bsdlabel -w / dev / md0 # newfs / dev / md0c # mount / dev / md0c / mnt # umount / mnt; mdconfig -d -u 0; rm /usr/vdisk.img # Effacer Maryland Une image créée à partir d'un fichier peut être montée pendant le démarrage du système en écrivant une ligne sur /etc/rc.conf et /etc/fstab... Vous pouvez vérifier l'exactitude de vos paramètres à l'aide de la commande /etc/rc.d/mdconfig démarrer(après avoir retiré l'appareil md0 en utilisant la commande # mdconfig -d -u 0). Gardez à l'esprit que le montage automatique de l'image ne fonctionnera que si le fichier image n'est PAS dans la partition racine, en raison du fait que le script /etc/rc.d/mdconfig exécuté au début de la phase de démarrage, lorsque la partition racine n'est pas encore accessible en écriture. Les images situées en dehors de la partition racine seront montées ultérieurement par le script /etc/rc.d/mdconfig2.
/boot/loader.conf : md_load = "OUI" /etc/rc.conf : mdconfig_md0 = "- t vnode -f /usr/vdisk.img" # / usr pas dans la section racine/etc/fstab : (0 0 à la fin, très important, cela indiquera fsck ignorer la vérification du périphérique car il n'existe pas encore) / dev / md0 / usr / vdisk ufs rw 0 0
De plus, plus tard, vous pouvez augmenter la taille de l'image, disons de 300 Mo. # montant / mnt; mdconfig -d -u 0 # dd if = / dev / zero bs = 1m count = 300 >> /usr/vdisk.img # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # growfs / dev / md0 # monture / dev / md0c / mnt # Maintenant, la partition de fichier est plus grande de 300 Mo

Linux

# dd if = / dev / zero of = / usr / vdisk.img bs = 1024k count = 1024 # mkfs.ext3 /usr/vdisk.img # mount -o loop /usr/vdisk.img / mnt # umount / mnt; rm /usr/vdisk.img # Effacer

Linux et perdant

/ dev / zéro beaucoup plus vite que urandom mais moins sécurisé pour le cryptage. # dd if = / dev / urandom of = / usr / vdisk.img bs = 1024k count = 1024 # losetup / dev / loop0 /usr/vdisk.img # Créer / dev / loop0 # mkfs.ext3 / dev / loop0 # mount / dev / loop0 / mnt # Losetup -a # Vérifier # umount / mnt # Losetup -d / dev / loop0 # Détacher # rm /usr/vdisk.img

Création d'un système de fichiers en mémoire

Système de fichiers en mémoire est très rapide, il est logique de l'utiliser pour les applications d'E/S de disque élevé. Créez une partition de 64 Mo et montez-la dans / memdisk :

FreeBSD

# mount_mfs -o rw -s 64M md / memdisk # umount / memdisk; mdconfig -d -u 0 #Dégager Maryland dispositif md/memdisk mfs rw, -s64M 0 0 # entrée dans /etc/fstab

Linux

# mount -t tmpfs -osize = 64m tmpfs / memdisk

Performances du disque

Lire et écrire 1 Go fichier dans la section ad4s3c (/ domicile) # heure dd if = / dev / ad4s3c of = / dev / null bs = 1024k count = 1000 # heure dd if = / dev / zero bs = 1024k count = 1000 of = / home / 1Gb.file # hdparm -tT / dev/hda # Linux uniquement

La tâche de préparer l'espace disque à utiliser ne se termine pas par la création de partitions et de systèmes de fichiers sur ceux-ci. Tous les systèmes de fichiers qui ont été créés n'ont pas encore été mis à la disposition de FreeBSD. Pour quoi ils doivent être montés - c'est-à-dire inclus dans une seule hiérarchie de répertoires et de fichiers, qui est également désignée par le nom du système de fichiers. Cependant, si auparavant il s'agissait de l'organisation physique des données, il est maintenant temps de se familiariser avec sa logique.

Logique du système de fichiers

Logiquement, le système de fichiers FreeBSD (comme tout système Unix) est organisé en une structure arborescente : à sa base se trouve la racine (le répertoire racine, désigné par le symbole / et aussi appelé répertoire racine ; ce dernier ne doit pas être confondu avec le répertoire racine /, qui sert de home pour le superutilisateur).

A partir du répertoire racine, qui peut être comparé plutôt au tronc d'un arbre, se ramifie - des sous-répertoires qui y sont imbriqués, et tire - des fichiers ordinaires. Ces derniers sont cependant peu nombreux : dans les versions FreeBSD, il s'agit d'un certain fichier d'entropie (/entropy) et d'un fichier décrivant le copyright pour le système / COPYRIGHT.

Mais il y a beaucoup de sous-répertoires dans le répertoire racine, et certains d'entre eux sont très complexes à l'intérieur, contenant une bonne quantité de sous-répertoires imbriqués de niveaux plus profonds.

En principe, la hiérarchie des répertoires dans tous les systèmes Unix est similaire, car elle est réglementée, d'une part, par une longue tradition, et d'autre part, par toutes sortes de documents de normalisation, en particulier, le FHS (Filesystem Hierarchy Standard), qui est maintenant disponible en traduction russe (dont remercie Victor Kostromin).

Le FHS a été développé à l'origine pour rationaliser les structures de répertoires dans de nombreuses distributions Linux. Et ce n'est que plus tard qu'il a été adapté pour d'autres systèmes de type Unix (y compris le clan BSD). Cependant, c'est la hiérarchie des répertoires de FreeBSD qui peut servir de modèle pour suivre l'esprit du FHS. Et littéralement, les écarts par rapport à sa lettre sont toujours conditionnés fonctionnellement.

La norme FHS repose sur deux principes fondamentaux - une séparation claire dans la hiérarchie des fichiers des répertoires partagés et non partagés, d'une part, et immuables et mutables, d'autre part.

L'opposition entre les répertoires partagés et non partagés est due à la nature réseau inhérente d'Unix en général et de FreeBSD en particulier. C'est-à-dire que les données relatives à une machine locale (par exemple, les fichiers de configuration de ses périphériques) doivent être situées dans des répertoires distincts de ceux dont le contenu est disponible à partir d'autres machines du réseau, locales ou globales (dont un exemple n'est pas uniquement utilisateur données, mais aussi des programmes) ...

L'essence de l'opposition entre les répertoires immuables et mutables est facile à expliquer avec un exemple. Ainsi, les mêmes programmes utilisateur, de par leur nature, devraient être immuables (ou plutôt, disponibles pour modification uniquement pour l'administrateur système, mais pas pour l'utilisateur lui-même qui les utilise dans son travail). Dans le même temps, ces programmes au cours de leur travail génèrent non seulement des fichiers de données, par exemple des textes ou des images (leur nature variable est claire sans commentaires), mais toutes sortes d'informations de service, telles que des fichiers journaux, des fichiers temporaires, etc.) . Qui doivent être regroupés dans des répertoires séparés des fichiers de programmes exécutables réels requis pour les exécuter, des bibliothèques, des fichiers de configuration, etc.

Le strict respect du concept de séparation des répertoires partagés et non partagés, immuables et immuables les uns des autres permet, au sein d'une seule hiérarchie de fichiers en forme d'arborescence, de séparer physiquement ses branches individuelles - c'est-à-dire sous la forme de systèmes de fichiers indépendants situés sur périphériques isolés (disques, tranches de disque, partitions ; dans le cas général - et sur des supports distants connectés au réseau, mais cela ne sera pas abordé maintenant). Il y a plusieurs raisons à cela - à la fois une augmentation des performances et une augmentation de la fiabilité, et juste des considérations de commodité - mais nous n'en parlerons pas maintenant. Car pour le moment, tout ce qui compte pour nous, c'est que ces branches de l'arborescence des fichiers soient incorporées dans le système de fichiers commun.

Dans les systèmes Unix, tout fichier (y compris un répertoire) est reconnu par le système non par son nom, mais par l'identifiant unique de son entrée dans la table inodes... Des moyens existent pour visualiser ces identifiants de fichiers. L'un d'eux est la commande ls avec l'option -i, qui imprimera les ID de chaque fichier nommé. Donné pour le répertoire racine -

$ ls -i /

cela nous montrera une image quelque peu inattendue (pour plus de simplicité, les informations sur les fichiers ordinaires et les liens symboliques dans la racine sont exclues de la sortie, et les répertoires restants sont triés par leurs identifiants) :

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 botte /

A partir de cet exemple (se référant au système de fichiers de la machine sur laquelle ces lignes sont écrites), on peut voir que jusqu'à 7 répertoires ont les mêmes identifiants numériques égaux à 2. La question est, quelle est l'unicité ici ?

Les deux premiers éléments de la liste sont faciles à comprendre : ./ est la désignation du répertoire courant (dans ce cas, la racine), et ../ est le répertoire parent du répertoire courant ; et comme il n'y a rien au-dessus de la racine dans la hiérarchie des fichiers, par définition, cette dernière se représente elle-même. Il n'est donc pas surprenant que. / Et ../ aient le même identifiant - ce sont des désignations différentes (liens physiques, ou, en d'autres termes, des noms en double) pour le même répertoire racine.

Mais de même, comme il semble à première vue, la signification de l'identifiant pour les répertoires /dev, /home, /tmp, /usr, /var nécessite une explication. Cependant, c'est simple : ce sont tous des répertoires dans lesquels des systèmes de fichiers indépendants sont montés, soit situés sur des périphériques séparés - des partitions de disque, comme les répertoires / home, / usr, / var, ou des systèmes de fichiers virtuels qui ne reposent sur aucun périphérique de disque ( le répertoire / dev avec le système de fichiers du périphérique et, dans ce cas, le répertoire / tmp dans lequel le système de fichiers est monté mémoire vive, qui restent à discuter). Et puisque la table inodes- différent pour chaque système de fichiers, il n'y a rien d'étonnant au fait que la racine de chacun d'eux soit identifiée par le chiffre 2 - numérotation inodes en eux va dans leur propre cadre de référence.

Ainsi, le montage est l'inclusion du système de fichiers du système dans l'un des répertoires existant dans le système racine (pas nécessairement directement à la racine, il peut s'agir de n'importe quel degré d'imbrication, ce qui sera illustré ci-dessous). Sans cela, les répertoires et fichiers d'un tel système de montage sont tout simplement inaccessibles. Ceci est important à comprendre face à des expressions telles que "créer / système de fichiers usr". D'après ce qui précède, il est évident que quelque chose est créé (par la commande newfs) juste un système de fichiers abstrait, et qu'il n'acquiert son "nom" qu'au moment du montage dans le répertoire spécifié.

Fait intéressant, l'identifiant du répertoire de montage (on l'appelle aussi le point de montage) n'est acquis qu'au moment du montage. Pour le vérifier, effectuons une expérience simple. Dans le répertoire / mnt, conçu spécifiquement pour le montage de systèmes de fichiers montés temporaires), vous pouvez voir trois sous-répertoires - / mnt / disk, mnt / iso, / mnt / usb (c'est sur mon système, je les ai créés pour ma propre convenance ; initialement le répertoire /mnt dans FreeBSD est vide). Au démarrage du système, rien n'est monté en eux, et leur état normal est d'être vide. Si vous regardez leurs identifiants, vous pouvez voir quelque chose comme ceci :

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

Maintenant, prenons et montons dans /mnt/usb une clé USB avec une interface USB (c'est ce à quoi je l'ai destiné) et répétons l'examen. Et on voit :

18 disques / 24 iso / 2 usb /

C'est-à-dire que les identifiants des répertoires laissés vides (/mnt/disk et /mnt/iso) n'ont pas changé, mais l'identifiant du répertoire /mnt/usb a changé comme par magie en 2. Car au moment du montage, il est devenu la racine de son propre système de fichiers et le point de départ du calcul inodes tous les fichiers enregistrés dessus.

Faisons une petite parenthèse et rappelons-nous des liens durs, à travers lesquels un seul et même inode et les blocs de données qui lui sont associés peuvent recevoir des noms différents. Maintenant, il est clair pourquoi tous ces fichiers de sauvegarde doivent résider dans le même système de fichiers : après tout, différents systèmes de fichiers ont leur propre numérotation, pas la même inodes, et il est impossible de les identifier par des numéros (sinon, comment le système distinguerait-il les répertoires /usr et /var de notre exemple - après tout, les noms des fichiers sont très soignés). Pour les liens symboliques qui ont leur propre inode(en fait, presque rien d'autre qu'eux) avec leurs identifiants, numérotés dans le référentiel du système de fichiers dans lequel ils se trouvent, il n'y a pas une telle limitation. Et les liens symboliques peuvent se trouver n'importe où (y compris sur une machine distante - pas seulement sur une autre partition).

Revenons cependant à notre exemple de répertoire racine. D'après tout ce qui a été considéré, il est clair qu'un certain nombre de ses branches se trouvent sur des partitions séparées et forment leurs propres systèmes de fichiers (en fait, c'est précisément pourquoi nous avons créé celles-ci et d'autres). Et par conséquent, ils doivent tous être montés.

Pratique de la monture

Le but du montage est la commande de montage, qui est exécutée soit automatiquement au démarrage, soit manuellement à partir de la ligne de commande. En fait, au sens plein, seul le système de fichiers racine est automatiquement monté dans tous les cas. Pas nécessairement sur le disque - lorsque vous démarrez à partir d'un CD de secours ou d'un autre support de sécurité, il peut se trouver sur un disque virtuel en RAM.

Cependant, le processus de montage du système de fichiers racine est aussi inévitable que la victoire du socialisme à l'échelle mondiale : tout comme le socialisme, n'ayant pas gagné à l'échelle mondiale, perd simplement sa capacité d'exister (ce que nous avons observé il n'y a pas si longtemps) , donc un système d'exploitation peut exister sans un système racine ne peut pas. Sous Linux, cela provoque un mode panique du noyau - approximativement l'état dans lequel nos dirigeants sont tombés il y a 20 ans. Certes, ils se sont avérés plus puissants que Linux "et ils se sont améliorés assez rapidement - nous avons donc toujours un redémarrage (ou un redémarrage ? - et nous devenons plus forts :)). Cependant, cela ne s'applique pas au cas du montage, que je vais essayer de vous présenter maintenant.

Ainsi, pour monter tous les systèmes de fichiers à l'exception du système racine, vous devez prendre certaines mesures. Tout d'abord, nous verrons comment les exécuter à la main, puis - comment les immortaliser dans les fichiers de configuration appropriés.

Donc la commande mount. En fait, il s'agit d'une famille entière de programmes, dont chacun est conçu pour monter des systèmes de fichiers de certains types - pas seulement UFS, mais tous ceux pris en charge par FreeBSD. La liste de ceux-ci est assez longue - vous pouvez vous en faire une idée en consultant le répertoire / sbin pour ceci :

$ ls -1 / sbin / mount *

qui nous donnera en retour

/ sbin / mount_cd9660 * / sbin / mount_devfs * / sbin / mount_ext2fs * / sbin / mount_fdescfs * / sbin / mount_linprocfs * / sbin / mount_mfs * / sbin / mount_msdosfs * / _sbin / mount_bins / mount * / sbin / mount_nullfs * / sbin / mount_procfs * / sbin / mount_std * / sbin / mount_udf * / sbin / mount_umapfs * / sbin / mount_unionfs *

Chaque commande de cette liste est responsable du montage de son propre type de système de fichiers, dont nous reviendrons sur certains plus tard. Pour l'instant, nous ne noterons que /sbin/mount lui-même, conçu pour fonctionner avec UFS et UFS2.

Appelé à partir de la ligne de commande, il nécessite deux arguments - le nom du périphérique à monter et le point de montage (c'est-à-dire le répertoire dans lequel le système de fichiers doit être monté). Le nom de l'appareil doit indiquer un patricien déjà marqué sur une tranche BSD existante avec un système de fichiers UFS2 (UFS) créé dessus, par exemple,

$ mount / dev / ads0d / usr

montera le système de fichiers sur la partition spécifiée dans le répertoire /usr de la racine de l'arborescence de fichiers. Si le système de fichiers sur le périphérique n'est pas créé ou a un type autre que UFS / UFS2, un message d'erreur apparaîtra - une indication d'un super bloc incorrect : contrairement à l'utilitaire Linux du même nom, la commande de montage dans FreeBSD elle-même ne peut pas reconnaître le type de système de fichiers.

Les exigences suivantes sont imposées au point de montage : a) un répertoire portant ce nom doit exister au moment du montage, et b) être aussi vide que possible. Le premier est obligatoire, le second ne l'est pas tout à fait. Le montage dans un répertoire avec n'importe quel fichier passera sans entrave (je me souviens, sous Linux il n'y a pas si longtemps, cela provoquait un plantage du système), mais tout son contenu deviendra inaccessible jusqu'au démontage. Et si les fichiers qu'il contient jouent un rôle essentiel pour n'importe quel sous-système, cela peut entraîner toutes sortes de mauvaises conséquences. Par exemple, si le contenu du répertoire / tmp est verrouillé en y installant un système de fichiers pendant que le système de fenêtrage X est en cours d'exécution, le résultat sera très probablement un plantage du serveur X. Heureusement, si nécessaire, vous pouvez effectuer un montage combiné (voir ci-dessous).

Sous cette forme, le montage sera effectué avec certaines caractéristiques par défaut : le système de fichiers sera disponible en lecture/écriture dans ce que l'on appelle le mode. noasync (celui dans lequel les opérations avec les métadonnées sont effectuées de manière synchrone et les opérations avec les données sont effectuées de manière asynchrone). Vous pouvez modifier cette position en utilisant les valeurs de l'option -o. Il y en a pas mal, mais pratiquement les principaux à ce stade pour nous seront :

  • async - fournira un mode complètement asynchrone (malgré les avertissements désastreux dans les messages précédents, je vous parlerai plus tard de la situation lorsque cela peut être justifié);
  • sync - au contraire, en activant le mode entièrement synchrone (bien que je ne sache pas pourquoi cela est pratiquement nécessaire);
  • noatime est une option très utile qui empêche la mise à jour de l'attribut d'heure du dernier accès au fichier, ce qui contribue grandement aux performances ;
  • rdonly - monte le système de fichiers en lecture seule (parfois nécessaire) ;
  • union est la même option qui vous permet d'effectuer un montage fusionné, dans lequel le contenu précédent du répertoire du point de montage reste visible ; true - avec quelques limitations - voir man (8) mount.

Il existe plusieurs autres valeurs pour l'option -o, qui interdisent le placement de certains types de fichiers sur le système de fichiers monté, par exemple, les exécutables (-o noexec), les fichiers de périphérique (-o nodev) ou les fichiers avec ainsi -appelé. un peu de suicide. Cependant, ils sont d'une importance pratique principalement pour les administrateurs de serveurs et servent à des fins de sécurité. Sur une machine de bureau, la forme habituelle de montage ressemblerait à ceci :

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

Tout cela n'était pertinent que pour le montage des systèmes de fichiers FreeBSD. Cependant, en pratique, il est souvent nécessaire d'incorporer d'autres types de systèmes de fichiers dans son arborescence de répertoires. Ceci est particulièrement nécessaire pour ISO9660 (le système de fichiers habituel pour tous les CD à l'exception de Mac "ovsky") et les FAT de divers types. Dans ce cas, la commande de montage appropriée doit être invoquée explicitement, par exemple,

$ mount_cd9660 / dev / acd0 / cdrom

pour monter un compact, ou

$ mount_msdosfs / dev / ad ## / mnt

pour FAT "et de toute nature (y compris FAT32). Cependant, cela peut être fait indirectement en spécifiant l'option -t file-system_type à la commande mount. Par exemple, la commande

$ mount -t ext2fs / dev / ad ## / mnt / linux

monte un système de fichiers Linux (si activé dans le noyau). Dans ce cas, le montage standard des partitions BSD est simplement remplacé par la commande /mount_ext2fs, conçue pour monter les partitions ext2fs (et ext3fs aussi - mais, bien sûr, sans aucune fonction de journalisation). c'est-à-dire la forme

$ mount -t typefs ... ...

sera l'équivalent complet de la commande

$ mount_fstype ... ...

Toutes les opérations de montage de systèmes de fichiers (y compris les supports amovibles) dans FreeBSD nécessitent des droits de superutilisateur. Contrairement à la commande de montage Linux, l'option -o n'inclut pas l'option utilisateur -o, qui permet aux utilisateurs normaux de monter. Certes, il existe plusieurs façons de contourner ce problème, ce qui est discuté dans une note spéciale.

Configuration du montage automatique

En pratique, cependant, le montage manuel n'est utilisé que pour les systèmes de fichiers rarement utilisés. Tous les systèmes de fichiers qui sont fondamentalement importants pour le fonctionnement de FreeBSD sont montés automatiquement au démarrage du système, et ceux qui sont fréquemment utilisés sont montés en mode semi-automatique, pour ainsi dire.

Pour le montage automatique, le programme de montage est exécuté au démarrage à partir des scripts d'initialisation. Il recherche son fichier de configuration, /etc/fstab, et monte tout ce qu'il y trouve, à quelques exceptions près (notées ci-dessous).

Le fichier /etc/fstab lui-même est généré automatiquement lorsque FreeBSD est installé, y compris tous les systèmes de fichiers dont il a besoin pour continuer à fonctionner. Cependant, à l'avenir, il pourra être modifié manuellement afin d'introduire de nouveaux périphériques de montage ou des options supplémentaires pour les périphériques déjà inclus.

Le fichier /etc/fstab est une simple base de données textuelle (champs séparés par des espaces ou des tabulations) et comprend les champs suivants :

  • Périphérique - le nom de fichier du périphérique sur lequel se trouve le système de fichiers, similaire au premier argument de la commande de montage lorsqu'il est utilisé manuellement ;
  • Mountpoint - point de montage (correspond au deuxième argument de la commande mount) ;
  • FStype - type de système de fichiers, spécifié comme valeur de l'option -t ;
  • Options - options de montage supplémentaires, similaires aux valeurs de l'option -o ;
  • Dump - conditions d'exécution Réserver une copie le système de fichiers avec l'utilitaire de vidage ;
  • Pass # - conditions de vérification du système de fichiers à l'aide de l'utilitaire fsck.

Dans un FreeBSD fraîchement installé /etc/fstab comprendra obligatoirement les entrées suivantes (exemple pour la 1ère tranche du disque Master sur le 1er canal IDE) :

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

Si vous suivez les conseils de personnes raisonnables (et les valeurs par défaut de sysinstall) et sélectionnez certaines branches du système de fichiers à partir de la racine, des entrées telles que

/ 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 du système de fichiers avec les répertoires personnels des utilisateurs.

Évidemment, dans le champ Options, vous pouvez ajouter toutes les valeurs disponibles (et raisonnables) de l'option -o (séparées par des virgules, pas d'espaces), par exemple, noatime pour tous les systèmes de fichiers, et pour / tmp - également async, car le contenu de ce répertoire n'est pas censé être sauvegardé après le redémarrage.

Ce qui précède s'applique aux systèmes de fichiers qui sont automatiquement montés au démarrage. Cependant, personne ne se soucie de faire des entrées dans /etc/fstab pour les systèmes qui sont connectés de temps en temps - dans ce cas, ils peuvent être montés selon un schéma simplifié (c'est ce que je voulais dire ci-dessus sous le mode semi-automatique) . Ainsi, pour un lecteur de CD, vous pouvez ajouter une ligne (en fait, elle apparaît automatiquement lors de la génération du fichier /etc/fstab si CD a été sélectionné comme source d'installation dans sysinstall)

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

dans lequel les options, comme vous pouvez le deviner, prescrivent de ne pas monter au démarrage (noauto) et en mode lecture seule (ro). Après cela, pour monter le CD, il suffira de spécifier uniquement le point de montage -

$ monter / cdrom

ou. à la place, le nom du fichier de périphérique

$ mount / dev / acd0

Des entrées similaires peuvent être faites pour tous les périphériques de stockage amovibles (Zip, clés USB, même disquettes) et pour les partitions non BSD (FAT ou Ext2fs). Soit dit en passant, vous pouvez monter des systèmes de fichiers en utilisant un schéma simplifié immédiatement après avoir apporté des modifications à / etc / fstab, sans attendre le redémarrage de la machine.

Démontage

Tous les systèmes de fichiers concernés doivent être démontés avant de couper l'alimentation ou de redémarrer la machine. Lors d'un arrêt normal, cela se fait automatiquement, avec pour résultat que chacun des systèmes de fichiers inscriptibles obtient un bit de démontage propre, écrit dans son propre superbloc. La présence de ce bit empêche l'utilitaire fsck de vérifier la cohérence des systèmes de fichiers au prochain démarrage du système.

Cependant, dans certains cas (par exemple, lors de la connexion ou de la déconnexion du mécanisme de mises à jour logicielles ou pour effectuer un contrôle d'intégrité), il devient nécessaire de démonter (et de remonter) manuellement les systèmes de fichiers, pour lesquels la commande umount est utilisée. Il nécessite un seul argument - spécifiant le point de montage du système de fichiers à "extraire" de l'arborescence des répertoires, par exemple :

$ montant / tmp

ou, comme dans le cas d'un montage semi-automatique, le nom de fichier de l'appareil « shutdown » :

$ montant/dev/annonce # s # ?

Vous pouvez démonter plusieurs systèmes de fichiers en une seule ligne :

$ umount / usr / var / home

Ou vous pouvez - tous les systèmes de fichiers montés ou tous les systèmes de fichiers répertoriés dans le fichier / etc / fstab (à l'exception de la racine), ce qui nécessitera les options

$ montant -A

$ montant -a

respectivement. Il est également possible de démonter certains types de systèmes de fichiers en spécifiant des valeurs pour l'option -t. Ainsi, la commande

$ montant -t ufs

démontera uniquement les partitions BSD, sans affecter le CD et tout ce qui est impliqué dans le système.

Les systèmes de fichiers ne doivent pas être utilisés au moment du démontage, c'est-à-dire qu'il ne doit y avoir aucun appel aux fichiers qui s'y trouvent. Ainsi, être dans n'importe quel répertoire du système de fichiers est une raison suffisante pour refuser de le démonter (avec l'émission d'un message tel que périphérique occupé), pourquoi aucune des commandes ci-dessus ne pourra démonter le système de fichiers racine. La raison du refus de démontage sera la lecture du fichier de données par n'importe quel programme - tout comme lors de la suppression d'un fichier, le descripteur de fichier ouvert par n'importe quel processus ne le permettra pas.

Cependant, vous pouvez également démonter le système de fichiers en cours d'utilisation - pour cela, la commande umount devra être donnée avec l'option -f (de force - c'est-à-dire par force). Certes, cela peut conduire à des erreurs, il vaut donc mieux ne pas y recourir sans besoin urgent. Et l'option de démontage forcé n'aura aucun effet sur le système de fichiers racine.

Montage en vrac

Pour continuer à travailler après avoir effectué des opérations de bas niveau avec les systèmes de fichiers, vous devrez les remonter. Cela peut être fait non seulement sans redémarrage, mais aussi sans le montage individuel fastidieux. Il suffit de recourir à l'option -a :

$ monter -a

qui montera tous les systèmes de fichiers pour lesquels il y a des entrées dans /etc/fstab. En même temps, une tentative sera faite pour monter ceux d'entre eux qui sont marqués du drapeau noauto. Pour éviter cela, vous pouvez également définir le type de système de fichiers. c'est-à-dire la commande

$ mount -a -t ufs

ne montera que les partitions BSD, sans empiéter sur les CD ou les lecteurs flash. Alternativement, vous pouvez exclure du processus de montage global certains des systèmes de fichiers répertoriés dans /etc/fstab, par exemple, les FAT actuellement inutiles :

$ mount -a -t nomsdosfs

Préambule au lieu de conclusion

Soit dit en passant, la commande mount sans options ni arguments (et sous cette forme, contrairement à tous les cas décrits ci-dessus, elle peut également être donnée par un utilisateur ordinaire) affichera une liste des systèmes de fichiers actuellement montés avec une indication du point de montage , ses conditions et son mode de fonctionnement. Par exemple, pour la machine sur laquelle ces lignes sont écrites, sa sortie ressemblera à ceci :

/ dev / ad0s1a on / (ufs, local, noatime, soft-updates) devfs on / dev (devfs, local) / dev / ccd0e on / var (ufs, local, noatime, soft-updates) / dev / ccd1e on / usr (ufs, local, noatime, soft-updates) / dev / ccd2e on / home (ufs, local, noatime, soft-updates) / dev / md0 on / tmp (ufs, local, noatime, async)

La première ligne de sortie montre que la partition / dev / ad0s1a est montée dans notre répertoire racine, porte le système de fichiers UFS (en particulier dans ce cas, UFS2, mais ils ne diffèrent pas dans la sortie de la commande de montage) avec les mises à jour logicielles mécanisme impliqué, est local (c'est-à-dire qu'il se trouve sur le disque de cette machine - les lecteurs réseau sont également montés avec la commande mount) et n'est pas soumis à la mise à jour de l'attribut atime.

$ plus / etc / fstab / dev / ad0s1b aucun échange sw 0 0 / dev / ar0s1b aucun échange 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 dev / md0 / tmp mfs rw, noatime, async, -s32m 2 0

alors nous verrons que l'une des lignes de sortie

Devfs sur / dev (devfs, local)

il n'y a aucune correspondance entre ses entrées. Quels sont ces périphériques et systèmes de fichiers ?

Le FHS a été développé à l'origine pour rationaliser les structures de répertoires dans de nombreuses distributions Linux. Et ce n'est que plus tard qu'il a été adapté pour d'autres systèmes de type Unix (y compris le clan BSD). Cependant, c'est la hiérarchie des répertoires de FreeBSD qui peut servir de modèle pour suivre l'esprit du FHS. Et littéralement, les écarts par rapport à sa lettre sont toujours conditionnés fonctionnellement.

La norme FHS repose sur deux principes fondamentaux - une séparation claire dans la hiérarchie des fichiers des répertoires partagés et non partagés, d'une part, et immuables et mutables, d'autre part.

L'opposition entre les répertoires partagés et non partagés est due à la nature réseau inhérente d'Unix en général et de FreeBSD en particulier. C'est-à-dire que les données relatives à une machine locale (par exemple, les fichiers de configuration de ses périphériques) doivent être situées dans des répertoires distincts de ceux dont les données sont disponibles à partir d'autres machines sur le réseau, locales ou globales (dont un exemple n'est pas seulement utilisateur données, mais aussi des programmes) ...

L'essence de l'opposition entre les répertoires immuables et mutables est facile à expliquer avec un exemple. Ainsi, les mêmes programmes utilisateur, de par leur nature, devraient être immuables (ou plutôt, disponibles pour modification uniquement pour l'administrateur système, mais pas pour l'utilisateur lui-même qui les utilise dans son travail). Dans le même temps, ces programmes au cours de leur travail génèrent non seulement des fichiers de données, par exemple des textes ou des images (leur nature variable est claire sans commentaires), mais toutes sortes d'informations de service, telles que des fichiers journaux, des fichiers temporaires, etc.) . Qui doivent être regroupés dans des répertoires séparés des fichiers de programmes exécutables réels requis pour les exécuter, des bibliothèques, des fichiers de configuration, etc.

Le strict respect du concept de séparation des répertoires partagés et non partagés, immuables et immuables les uns des autres permet, au sein d'une seule hiérarchie de fichiers en forme d'arborescence, de séparer physiquement ses branches individuelles - c'est-à-dire sous la forme de systèmes de fichiers indépendants situés sur périphériques isolés (disques, tranches de disque, partitions ; dans le cas général - et sur des supports distants connectés au réseau, mais cela ne sera pas abordé maintenant). Il y a plusieurs raisons à cela - à la fois une augmentation des performances et une augmentation de la fiabilité, et juste des considérations de commodité - mais nous n'en parlerons pas maintenant. Car pour le moment, tout ce qui compte pour nous, c'est que ces branches de l'arborescence des fichiers soient incorporées dans le système de fichiers commun.

Dans la note précédente, il était dit que tout fichier (y compris un répertoire) est reconnu par le système non pas par son nom, mais par l'identifiant unique de son entrée dans la table des inodes. Des moyens existent pour visualiser ces identifiants de fichiers. L'un d'eux est la commande ls avec l'option i, qui imprimera les identifiants de chaque fichier nommé. Donné pour le répertoire racine est $ ls -i

cela nous montrera une image quelque peu inattendue (pour plus de simplicité, les informations sur les fichiers ordinaires et les liens symboliques à la racine sont exclues de la sortie, et les répertoires restants sont triés par leurs identifiants) 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 boot /

A partir de cet exemple (se référant au système de fichiers de la machine sur laquelle ces lignes sont écrites), on peut voir que jusqu'à 7 répertoires ont les mêmes identifiants numériques égaux à 2. La question est, quelle est l'unicité ici ?

Les deux premiers éléments de la liste sont faciles à comprendre : ./ est la désignation du répertoire courant (dans ce cas, la racine), et ../ est le répertoire parent du répertoire courant ; et comme il n'y a rien au-dessus de la racine dans la hiérarchie des fichiers, par définition, il se désigne lui-même. Il n'est donc pas surprenant que. / Et ../ aient le même identifiant - ce sont des désignations différentes (liens physiques, ou, en d'autres termes, des noms en double) pour le même répertoire racine.

Mais de même, comme il semble à première vue, la signification de l'identifiant pour les répertoires /dev, /home, /tmp, /usr, /var nécessite une explication. Cependant, c'est simple : ce sont tous des répertoires dans lesquels des systèmes de fichiers indépendants sont montés, soit situés sur des périphériques séparés - des partitions de disque, comme les répertoires / home, / usr, / var, ou des systèmes de fichiers virtuels qui ne reposent sur aucun périphérique de disque (le répertoire / dev avec le système de fichiers du périphérique et, dans ce cas, le répertoire / tmp où le système de fichiers en mémoire est monté, ce qui doit encore être discuté). Et comme la table des inodes est différente pour chaque système de fichiers, il n'est pas surprenant que la racine de chacun d'eux soit identifiée par le numéro 2 - les inodes sont numérotés dans leur propre système de référence.

Ainsi, le montage est l'inclusion du système de fichiers du système dans l'un des répertoires existant dans le système racine (pas nécessairement directement à la racine, il peut s'agir de n'importe quel degré d'imbrication, ce qui sera illustré ci-dessous). Sans cela, les répertoires et fichiers d'un tel système de montage sont tout simplement inaccessibles. Ceci est important à comprendre face à des expressions telles que "créer / système de fichiers usr". D'après ce qui précède, il est évident que quelque chose est créé (par la commande newfs) juste un système de fichiers abstrait, et qu'il n'acquiert son "nom" qu'au moment du montage dans le répertoire spécifié.

Fait intéressant, l'identifiant du répertoire de montage (on l'appelle aussi le point de montage) n'est acquis qu'au moment du montage. Pour le vérifier, effectuons une expérience simple. Dans le répertoire / mnt, conçu spécifiquement pour le montage de systèmes de fichiers montés temporaires), vous pouvez voir trois sous-répertoires - / mnt / disk, mnt / iso, / mnt / usb (c'est sur mon système, je les ai créés pour ma propre convenance ; initialement le répertoire /mnt dans FreeBSD est vide). Au démarrage du système, rien n'est monté en eux, et leur état normal est d'être vide. Si vous regardez leurs identifiants, vous pouvez voir quelque chose comme ceci : $ ls -i1 / mnt 16:46 ttyp0 18 disk / 24 iso / 19 usb /

Maintenant, prenons et montons dans /mnt/usb une clé USB avec une interface USB (c'est ce à quoi je l'ai destiné) et répétons l'examen. Et on voit : 18 disque / 24 iso / 2 usb /

C'est-à-dire que les identifiants des répertoires laissés vides (/mnt/disk et /mnt/iso) n'ont pas changé, mais l'identifiant du répertoire /mnt/usb a changé comme par magie en 2. Car au moment du montage, il est devenu la racine de son propre système de fichiers et le point de départ du calcul des inodes de tous les fichiers enregistrés dessus.

Faisons une petite digression et rappelons-nous des liens physiques, à travers lesquels différents noms peuvent être attribués au même inode et à ses blocs de données associés. Maintenant, il est clair pourquoi tous ces fichiers de sauvegarde doivent résider dans le même système de fichiers : après tout, différents systèmes de fichiers ont leurs propres inodes de numérotation, pas les mêmes, et il est impossible de les identifier par des numéros (sinon, comment le système distinguerait-il les répertoires / usr et / var de notre exemple - après tout, les noms de fichiers dépendent profondément d'elle). Pour les liens symboliques qui ont leurs propres inodes (en fait, rien d'autre qu'eux) avec leurs identifiants numérotés dans le référentiel du système de fichiers dans lequel ils se trouvent, il n'y a pas de telle restriction. Et les liens symboliques peuvent être situés n'importe où (y compris sur une machine distante - pas seulement sur une autre partition).

Revenons cependant à notre exemple de répertoire racine. D'après tout ce qui a été considéré, il est clair qu'un certain nombre de ses branches se trouvent sur des partitions séparées et forment leurs propres systèmes de fichiers (en fait, c'est précisément pourquoi nous avons créé celles-ci et d'autres). Et par conséquent, ils doivent tous être montés. 9. Pratique de la monture

Le but du montage est la commande de montage, qui est exécutée soit automatiquement au démarrage, soit manuellement à partir de la ligne de commande. En fait, au sens plein, seul le système de fichiers racine est automatiquement monté dans tous les cas. Pas nécessairement sur le disque - lorsque vous démarrez à partir d'un CD de secours ou d'un autre support de sécurité, il peut se trouver sur un disque virtuel en RAM. Cependant, le processus de montage du système de fichiers racine est aussi inévitable que la victoire du socialisme à l'échelle mondiale : tout comme le socialisme, n'ayant pas gagné à l'échelle mondiale, perd simplement sa capacité d'exister (ce que nous avons observé il n'y a pas si longtemps) , donc un système d'exploitation peut exister sans un système racine ne peut pas. Sous Linux, cela provoque un mode panique du noyau - approximativement l'état dans lequel nos dirigeants sont tombés il y a 20 ans. Certes, ils se sont avérés plus puissants que Linux "et ils se sont améliorés assez rapidement - nous avons donc toujours un redémarrage (ou un redémarrage ? - et nous devenons plus forts :)). Cependant, cela ne s'applique pas au cas du montage, que je vais essayer de vous présenter maintenant.

Ainsi, pour monter tous les systèmes de fichiers à l'exception du système racine, vous devez prendre certaines mesures. Tout d'abord, nous verrons comment les exécuter à la main, puis - comment les immortaliser dans les fichiers de configuration appropriés.

Donc la commande mount. En fait, il s'agit d'une famille entière de programmes, dont chacun est conçu pour monter des systèmes de fichiers de certains types - pas seulement UFS, mais tous ceux pris en charge par FreeBSD. La liste de ceux-ci est assez longue - vous pouvez vous en faire une idée en consultant le répertoire / sbin de ce sujet : $ ls / sbin / mount *

ce qui nous donnera /sbin/mount/sbin/mount_msdosfs/sbin/mount_smbfs/sbin/mount_cd9660/sbin/mount_nfs/sbin/mount_std/sbin/mount_devfs/sbin/mount_ntfs/sbin/mount_udf /nudf/sbin/sbin/sbin / mount_nullfs sbin / mount_umapfs / sbin / mount_fdescfs / sbin / mount_nwfs / sbin / mount_unionfs / sbin / mount_linprocfs / sbin / mount_portalfs / sbin / mount_mfs / sbin / mount_procfs

Chaque commande de cette liste est responsable d'un type de système de fichiers différent, sur lequel nous reviendrons plus tard. Pour l'instant, nous ne noterons que /sbin/mount lui-même, conçu pour fonctionner avec UFS et UFS2.

Appelé à partir de la ligne de commande, il nécessite deux arguments - le nom du périphérique à monter et le point de montage (c'est-à-dire le répertoire dans lequel le système de fichiers doit être monté). Le nom du périphérique doit signifier un patricien déjà marqué sur une tranche BSD existante avec un système de fichiers UFS2 (UFS) créé dessus, par exemple, $ mount / dev / ads0d / usr

montera le système de fichiers sur la partition spécifiée dans le répertoire /usr de la racine de l'arborescence de fichiers. Si le système de fichiers sur le périphérique n'a pas été créé ou a un type autre que 4.2BSD, un message d'erreur suivra - une indication d'un super bloc incorrect : contrairement à l'utilitaire Linux du même nom, la commande de montage dans FreeBSD elle-même ne peut pas reconnaître le type de système de fichiers.

Les exigences suivantes sont imposées au point de montage : a) un répertoire portant ce nom doit exister au moment du montage, et b) être aussi vide que possible. Le premier est obligatoire, le second ne l'est pas tout à fait. Le montage dans un répertoire avec n'importe quel fichier passera sans entrave (je me souviens, sous Linux il n'y a pas si longtemps, cela provoquait un plantage du système), mais tout son contenu deviendra inaccessible jusqu'au démontage. Et si les fichiers qu'il contient jouent un rôle essentiel pour n'importe quel sous-système, cela peut entraîner toutes sortes de mauvaises conséquences. Par exemple, si le contenu du répertoire / tmp est verrouillé en y installant un système de fichiers pendant que le système de fenêtrage X est en cours d'exécution, le résultat sera très probablement un plantage du serveur X. Heureusement, si nécessaire, vous pouvez effectuer un montage combiné (voir ci-dessous).

Sous cette forme, le montage sera effectué avec certaines caractéristiques par défaut : le système de fichiers sera disponible en lecture/écriture dans ce que l'on appelle le mode. noasync (celui dans lequel les opérations avec les métadonnées sont effectuées de manière synchrone et les opérations avec les données sont effectuées de manière asynchrone). Vous pouvez modifier cette position en utilisant les valeurs de l'option -o. Il y en a pas mal, mais pratiquement les principaux à ce stade pour nous seront :

  • async - fournira un mode complètement asynchrone (malgré les avertissements désastreux dans les messages précédents, je vous parlerai plus tard de la situation lorsque cela peut être justifié);
  • sync - au contraire, en activant le mode entièrement synchrone (bien que je ne sache pas pourquoi cela est pratiquement nécessaire);
  • noatime est une option très utile qui empêche la mise à jour de l'attribut d'heure du dernier accès au fichier, ce qui contribue grandement aux performances ;
  • rdonly - monte le système de fichiers en lecture seule (parfois nécessaire) ;
  • union est la même option qui vous permet d'effectuer un montage fusionné, dans lequel le contenu précédent du répertoire du point de montage reste visible ; true - avec quelques limitations - voir man (8) mount.

Il existe plusieurs autres valeurs pour l'option -o, qui interdisent le placement de certains types de fichiers sur le système de fichiers monté, par exemple, les exécutables (-o noexec), les fichiers de périphérique (-o nodev) ou les fichiers avec ainsi -appelé. bit of suicide (-o nosuid), mais ils sont d'une importance pratique principalement pour les administrateurs de serveur et servent à des fins de sécurité. Sur une machine de bureau, une forme de montage typique serait quelque chose comme ceci : $ mount -o noatime / dev / ads0d / usr; $ mount -o noatime / dev / ads0e / var; $ mount -o noatime / dev / ads0f / home

Tout cela n'était pertinent que pour le montage des systèmes de fichiers FreeBSD. Cependant, en pratique, il est souvent nécessaire d'incorporer d'autres types de systèmes de fichiers dans son arborescence de répertoires. Ceci est particulièrement nécessaire pour ISO9660 (le système de fichiers habituel pour tous les CD à l'exception de Mac "ovsky") et les FAT de divers types. Dans ce cas, la commande de montage appropriée doit être invoquée explicitement, par exemple, $ mount_cd9660 / dev / acd0 / cdrom

pour monter le compact, ou $mount_msdosfs/dev/ad ##/mnt

pour FAT "et tout type (y compris FAT32). Cependant, cela peut être fait indirectement en spécifiant l'option -t file-system_type à la commande mount. Par exemple, la commande $ mount -t ext2fs / dev / ad ## / mnt / linux

monte un système de fichiers Linux (si activé dans le noyau). Dans ce cas, le montage standard des partitions BSD est simplement remplacé par la commande /mount_ext2fs, conçue pour monter les partitions ext2fs (et ext3fs aussi - mais, bien sûr, sans aucune fonction de journalisation). C'est-à-dire sous la forme $ mount -t type_fs ... ...

serait l'équivalent complet de la commande $ mount_fstype ... ...

Toutes les opérations de montage de systèmes de fichiers (y compris les supports amovibles) dans FreeBSD nécessitent des droits de superutilisateur. Contrairement à la commande de montage Linux, l'option -o n'inclut pas d'option utilisateur permettant aux utilisateurs normaux de procéder au montage. Certes, il y a plusieurs façons de contourner cela, mais maintenant il n'est plus de mise d'en parler.

En pratique, cependant, le montage manuel n'est utilisé que pour les systèmes de fichiers rarement utilisés. Tous les systèmes de fichiers qui sont fondamentalement importants pour le fonctionnement de FreeBSD sont montés automatiquement au démarrage du système, et ceux qui sont fréquemment utilisés sont montés en mode semi-automatique, pour ainsi dire.

Pour le montage automatique, le programme de montage est exécuté au démarrage à partir des scripts d'initialisation. Il recherche son fichier de configuration, /etc/fstab, et monte tout ce qu'il y trouve, à quelques exceptions près (notées ci-dessous).

Le fichier /etc/fstab lui-même est généré automatiquement lorsque FreeBSD est installé, y compris tous les systèmes de fichiers dont il a besoin pour continuer à fonctionner. Cependant, à l'avenir, il pourra être modifié manuellement afin d'introduire de nouveaux dispositifs de montage ou des options supplémentaires pour les dispositifs déjà inclus.

Le fichier /etc/fstab est une simple base de données textuelle (champs séparés par des espaces ou des tabulations) et comprend les champs suivants :

  • Périphérique - le nom de fichier du périphérique sur lequel se trouve le système de fichiers, similaire au premier argument de la commande de montage lorsqu'il est utilisé manuellement ;
  • Mountpoint - point de montage (correspond au deuxième argument de la commande mount) ;
  • FStype - type de système de fichiers, spécifié comme valeur de l'option -t ;
  • Options - options de montage supplémentaires, similaires aux valeurs de l'option -o ;
  • Dump - conditions d'exécution d'une sauvegarde du système de fichiers par l'utilitaire de vidage ;
  • Pass # - conditions de vérification du système de fichiers à l'aide de l'utilitaire fsck.

Dans un FreeBSD fraîchement installé /etc/fstab inclura obligatoirement les entrées suivantes (exemple pour la 1ère tranche du disque Master sur le 1er canal IDE) : # Device Mountpoint FStype Options Dump Pass #/dev/ad0s1a/ufs rw 1 1/ dev / ad0s1b aucun échange sw 0 0

Si vous suivez les conseils de personnes raisonnables (et les valeurs par défaut de sysinstall) et sélectionnez certaines branches du système de fichiers à partir de la racine, des entrées comme / dev / ad0s1d / var ufs rw 0 0 / dev / ad0s1e / usr ufs rw 0 0 / dev / ad0s1f / tmp ufs rw 0 0

responsable du système de fichiers avec les répertoires personnels des utilisateurs.

Évidemment, dans le champ Options, vous pouvez ajouter toutes les valeurs disponibles (et raisonnables) de l'option -o (séparées par des virgules, sans espaces), par exemple, noatime pour tous les systèmes de fichiers, et pour / tmp - également async, car le contenu de ce répertoire n'est pas censé être sauvegardé après le redémarrage.

Ce qui précède s'applique aux systèmes de fichiers qui sont automatiquement montés au démarrage. Cependant, personne ne se soucie de faire des entrées dans /etcfstab pour les systèmes qui sont connectés de temps en temps - dans ce cas, ils peuvent être montés selon un schéma simplifié (c'est ce que je voulais dire ci-dessus sous le mode semi-automatique). Ainsi, pour un lecteur de CD, vous pouvez ajouter une ligne (en fait, elle apparaît automatiquement lorsque le fichier /etc/fstab est généré)/dev/acd0/cdrom cd9660 ro, noauto 0 0

dans lequel les options, comme vous pouvez le deviner, prescrivent de ne pas monter au démarrage (noauto) et en mode lecture seule (ro). Après cela, pour monter le CD, il suffira de spécifier uniquement le point de montage - $mount / cdrom

Des entrées similaires peuvent être faites pour tous les périphériques de stockage amovibles (Zip, clés USB, même disquettes) et pour les partitions non BSD (FAT ou Ext2fs). Soit dit en passant, vous pouvez monter des systèmes de fichiers selon le schéma pardonné immédiatement après avoir apporté des modifications à / etc / fstab, sans attendre que la machine redémarre.

Tous les systèmes de fichiers concernés doivent être démontés avant de couper l'alimentation ou de redémarrer la machine. Avec un arrêt correct, cela se fait automatiquement, à la suite de quoi chacun des systèmes de fichiers inscriptibles (ou plutôt la partition, son support) reçoit un bit de démontage propre dans son superbloc.

Cependant, dans certains cas (par exemple, lors de la connexion ou de la déconnexion du mécanisme de mises à jour logicielles ou pour effectuer un contrôle d'intégrité), il devient nécessaire de démonter (et de remonter) manuellement les systèmes de fichiers, pour lesquels la commande umount est utilisée. Il ne nécessite qu'un seul argument - en spécifiant le point de montage du système de fichiers à "extraire" de l'arborescence des répertoires, par exemple : $ umount / tmp

Vous pouvez démonter plusieurs systèmes de fichiers en une seule ligne : $ umount / usr / var / home

Ou vous pouvez - tous les systèmes de fichiers montés ou tous les systèmes de fichiers répertoriés dans le fichier / etc / fstab (à l'exception de la racine), ce qui nécessite les options $ umount -A

ou $ montant -a

respectivement. Il est également possible de démonter certains types de systèmes de fichiers en spécifiant des valeurs pour l'option -t. Ainsi, la commande $ umount -t ufs

démontera uniquement les partitions BSD, sans affecter le CD et tout ce qui est impliqué dans le système.

Les systèmes de fichiers ne doivent pas être utilisés au moment du démontage, c'est-à-dire qu'il ne doit y avoir aucun appel aux fichiers qui s'y trouvent. Ainsi, être dans n'importe quel répertoire du système de fichiers est une raison suffisante pour refuser de le démonter (avec l'émission d'un message tel que périphérique occupé), pourquoi aucune des commandes ci-dessus ne pourra démonter le système de fichiers racine. Mais la lecture d'un fichier de données par n'importe quel programme n'est pas une raison pour refuser de démonter le système portant ce fichier (après tout, dans le cas général, la communication entre un fichier en mémoire et un fichier sur disque n'a lieu qu'au moment de l'écriture des modifications.

Cependant, vous pouvez également démonter le système de fichiers en cours d'utilisation - pour cela, vous devez exécuter la commande umount avec l'option -f. Certes, cela peut conduire à des erreurs, il vaut donc mieux ne pas y recourir sans besoin urgent. Et l'option de démontage forcé n'aura aucun effet sur le système de fichiers racine.

Pour continuer à travailler après avoir effectué des opérations de bas niveau avec les systèmes de fichiers, vous devrez les remonter. Cela peut être fait non seulement sans redémarrage, mais aussi sans le montage individuel fastidieux. Il suffit de recourir à l'option -a : $ mount -a

qui montera tous les systèmes de fichiers pour lesquels il y a des entrées dans /etc/fstab. En même temps, une tentative sera faite pour monter ceux d'entre eux qui sont marqués du drapeau noauto. Pour éviter cela, vous pouvez également définir le type de système de fichiers. C'est-à-dire que la commande $ mount -a -t ufs

ne montera que les partitions BSD, sans empiéter sur les CD ou les lecteurs flash. Ou, au contraire, vous pouvez exclure du processus de montage global certains des systèmes de fichiers répertoriés dans /etc/fstab, par exemple, les FAT actuellement inutiles : $ mount -a -t nomsdosfs Préambule au lieu de conclusion

Soit dit en passant, la commande mount sans options ni arguments (et sous cette forme, contrairement à tous les cas décrits ci-dessus, elle peut également être donnée par un utilisateur ordinaire) affichera une liste des systèmes de fichiers actuellement montés avec une indication du point de montage , ses conditions et son mode de fonctionnement. Par exemple, pour la machine sur laquelle ces lignes sont écrites, sa sortie ressemblera à ceci : / dev / ad0s1a on / (ufs, local, noatime, soft-updates) devfs on / dev (devfs, local) / dev / ccd0e on / var (ufs, local, noatime, soft-updates) / dev / ccd1e on / usr (ufs, local, noatime, soft-updates) / dev / ccd2e on / home (ufs, local, noatime, soft-updates) /dev/md0 on/tmp (ufs, local, noatime, async)

La première ligne de sortie montre que la partition / dev / ad0s1a est montée dans notre répertoire racine, porte le système de fichiers UFS (en particulier dans ce cas, UFS2, mais ils ne diffèrent pas dans la sortie de la commande de montage) avec les mises à jour logicielles mécanisme impliqué, est local (c'est-à-dire qu'il se trouve sur le disque de cette machine - les lecteurs réseau sont également montés avec la commande mount) et n'est pas soumis à la mise à jour de l'attribut atime.

Mais ensuite, il y a des lignes pour les périphériques et les systèmes de fichiers, qui n'ont pas été abordées dans les récits précédents. De plus, si on regarde le fichier /etc/fstab correspondant à la configuration disponible : $ more /etc/fstab/dev/ad0s1b none swap sw 0 0 / dev/ar0s1b none 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

alors nous verrons qu'une des lignes de sortie (devfs on /dev (devfs, local) ne correspond pas du tout parmi ses entrées. Quels sont ces périphériques et systèmes de fichiers ?

Pour les appareils comme /dev/ccd0 ? Je dirai seulement pour l'instant qu'il s'agit de matrices RAID logicielles (nous en discuterons plus en détail plus tard). Mais devfs et mfs sont des systèmes de fichiers virtuels, à propos desquels - directement dans la note suivante.

2021 wisemotors.ru. Comment ça fonctionne. Le fer. Exploitation minière. Crypto-monnaie.