Перейти к содержимому

Mount bind что это

  • автор:

DESCRIPTION

All files accessible in a Unix system are arranged in one big tree, the file hierarchy, rooted at /. These files can be spread out over several devices. The mount command serves to attach the filesystem found on some device to the big file tree. Conversely, the umount(8) command will detach it again. The filesystem is used to control how data is stored on the device or provided in a virtual way by network or other services.

The standard form of the mount command is:

mount -t type device dir

This tells the kernel to attach the filesystem found on device (which is of type type) at the directory dir. The option -t type is optional. The mount command is usually able to detect a filesystem. The root permissions are necessary to mount a filesystem by default. See section "Non-superuser mounts" below for more details. The previous contents (if any) and owner and mode of dir become invisible, and as long as this filesystem remains mounted, the pathname dir refers to the root of the filesystem on device.

If only the directory or the device is given, for example:

mount /dir

then mount looks for a mountpoint (and if not found then for a device) in the /etc/fstab file. It’s possible to use the —target or —source options to avoid ambiguous interpretation of the given argument. For example:

mount —target /mountpoint

The same filesystem may be mounted more than once, and in some cases (e.g., network filesystems) the same filesystem may be mounted on the same mountpoint multiple times. The mount command does not implement any policy to control this behavior. All behavior is controlled by the kernel and it is usually specific to the filesystem driver. The exception is —all, in this case already mounted filesystems are ignored (see —all below for more details).

Listing the mounts

The listing mode is maintained for backward compatibility only.

For more robust and customizable output use findmnt(8), especially in your scripts. Note that control characters in the mountpoint name are replaced with ‘?’.

The following command lists all mounted filesystems (of type type):

mount [-l] [-t type]

The option -l adds labels to this listing. See below.

Indicating the device and filesystem

Most devices are indicated by a filename (of a block special device), like /dev/sda1, but there are other possibilities. For example, in the case of an NFS mount, device may look like knuth.cwi.nl:/dir.

The device names of disk partitions are unstable; hardware reconfiguration, and adding or removing a device can cause changes in names. This is the reason why it’s strongly recommended to use filesystem or partition identifiers like UUID or LABEL. Currently supported identifiers (tags):

LABEL=label

Note that mount uses UUIDs as strings. The UUIDs from the command line or from fstab(5) are not converted to internal binary representation. The string representation of the UUID should be based on lower case characters.

PARTLABEL=label

PARTUUID=uuid

The command lsblk —fs provides an overview of filesystems, LABELs and UUIDs on available block devices. The command blkid -p <device> provides details about a filesystem on the specified device.

Don’t forget that there is no guarantee that UUIDs and labels are really unique, especially if you move, share or copy the device. Use lsblk -o +UUID,PARTUUID to verify that the UUIDs are really unique in your system.

The recommended setup is to use tags (e.g. UUID=uuid) rather than /dev/disk/by- udev symlinks in the /etc/fstab file. Tags are more readable, robust and portable. The mount(8) command internally uses udev symlinks, so the use of symlinks in /etc/fstab has no advantage over tags. For more details see libblkid(3).

The proc filesystem is not associated with a special device, and when mounting it, an arbitrary keyword — for example, proc — can be used instead of a device specification. (The customary choice none is less fortunate: the error message ‘none already mounted’ from mount can be confusing.)

The files /etc/fstab, /etc/mtab and /proc/mounts

The file /etc/fstab (see fstab(5)), may contain lines describing what devices are usually mounted where, using which options. The default location of the fstab(5) file can be overridden with the —fstab path command-line option (see below for more details).

mount -a [-t type] [-O optlist]

(usually given in a bootscript) causes all filesystems mentioned in fstab (of the proper type and/or having or not having the proper options) to be mounted as indicated, except for those whose line contains the noauto keyword. Adding the -F option will make mount fork, so that the filesystems are mounted in parallel.

When mounting a filesystem mentioned in fstab or mtab, it suffices to specify on the command line only the device, or only the mount point.

The programs mount and umount(8) traditionally maintained a list of currently mounted filesystems in the file /etc/mtab. The support for regular classic /etc/mtab is completely disabled at compile time by default, because on current Linux systems it is better to make /etc/mtab a symlink to /proc/mounts instead. The regular mtab file maintained in userspace cannot reliably work with namespaces, containers and other advanced Linux features. If the regular mtab support is enabled, then it’s possible to use the file as well as the symlink.

If no arguments are given to mount, the list of mounted filesystems is printed.

If you want to override mount options from /etc/fstab, you have to use the -o option:

mount device|dir -o options

and then the mount options from the command line will be appended to the list of options from /etc/fstab. This default behaviour can be changed using the —options-mode command-line option. The usual behavior is that the last option wins if there are conflicting ones.

The mount program does not read the /etc/fstab file if both device (or LABEL, UUID, ID, PARTUUID or PARTLABEL) and dir are specified. For example, to mount device foo at /dir:

mount /dev/foo /dir

This default behaviour can be changed by using the —options-source-force command-line option to always read configuration from fstab. For non-root users mount always reads the fstab configuration.

Non-superuser mounts

Normally, only the superuser can mount filesystems. However, when fstab contains the user option on a line, anybody can mount the corresponding filesystem.

Thus, given a line

/dev/cdrom /cd iso9660 ro,user,noauto,unhide

any user can mount the iso9660 filesystem found on an inserted CDROM using the command:

Note that mount is very strict about non-root users and all paths specified on command line are verified before fstab is parsed or a helper program is executed. It’s strongly recommended to use a valid mountpoint to specify filesystem, otherwise mount may fail. For example it’s a bad idea to use NFS or CIFS source on command line.

Since util-linux 2.35, mount does not exit when user permissions are inadequate according to libmount’s internal security rules. Instead, it drops suid permissions and continues as regular non-root user. This behavior supports use-cases where root permissions are not necessary (e.g., fuse filesystems, user namespaces, etc).

For more details, see fstab(5). Only the user that mounted a filesystem can unmount it again. If any user should be able to unmount it, then use users instead of user in the fstab line. The owner option is similar to the user option, with the restriction that the user must be the owner of the special file. This may be useful e.g. for /dev/fd if a login script makes the console user owner of this device. The group option is similar, with the restriction that the user must be a member of the group of the special file.

Bind mount operation

Remount part of the file hierarchy somewhere else. The call is:

mount —bind olddir newdir

or by using this fstab entry:

/olddir /newdir none bind

After this call the same contents are accessible in two places.

It is important to understand that "bind" does not create any second-class or special node in the kernel VFS. The "bind" is just another operation to attach a filesystem. There is nowhere stored information that the filesystem has been attached by a "bind" operation. The olddir and newdir are independent and the olddir may be unmounted.

One can also remount a single file (on a single file). It’s also possible to use a bind mount to create a mountpoint from a regular directory, for example:

mount —bind foo foo

The bind mount call attaches only (part of) a single filesystem, not possible submounts. The entire file hierarchy including submounts can be attached a second place by using:

mount —rbind olddir newdir

Note that the filesystem mount options maintained by the kernel will remain the same as those on the original mount point. The userspace mount options (e.g., _netdev) will not be copied by mount and it’s necessary to explicitly specify the options on the mount command line.

Since util-linux 2.27 mount permits changing the mount options by passing the relevant options along with —bind. For example:

mount -o bind,ro foo foo

This feature is not supported by the Linux kernel; it is implemented in userspace by an additional mount(2) remounting system call. This solution is not atomic.

The alternative (classic) way to create a read-only bind mount is to use the remount operation, for example:

mount —bind olddir newdir

mount -o remount,bind,ro olddir newdir

Note that a read-only bind will create a read-only mountpoint (VFS entry), but the original filesystem superblock will still be writable, meaning that the olddir will be writable, but the newdir will be read-only.

It’s also possible to change nosuid, nodev, noexec, noatime, nodiratime, relatime and nosymfollow VFS entry flags via a "remount,bind" operation. The other flags (for example filesystem-specific flags) are silently ignored. It’s impossible to change mount options recursively (for example with -o rbind,ro).

Since util-linux 2.31, mount ignores the bind flag from /etc/fstab on a remount operation (if -o remount is specified on command line). This is necessary to fully control mount options on remount by command line. In previous versions the bind flag has been always applied and it was impossible to re-define mount options without interaction with the bind semantic. This mount behavior does not affect situations when "remount,bind" is specified in the /etc/fstab file.

The move operation

Move a mounted tree to another place (atomically). The call is:

mount —move olddir newdir

This will cause the contents which previously appeared under olddir to now be accessible under newdir. The physical location of the files is not changed. Note that olddir has to be a mountpoint.

Note also that moving a mount residing under a shared mount is invalid and unsupported. Use findmnt -o TARGET,PROPAGATION to see the current propagation flags.

Shared subtree operations

Since Linux 2.6.15 it is possible to mark a mount and its submounts as shared, private, slave or unbindable. A shared mount provides the ability to create mirrors of that mount such that mounts and unmounts within any of the mirrors propagate to the other mirror. A slave mount receives propagation from its master, but not vice versa. A private mount carries no propagation abilities. An unbindable mount is a private mount which cannot be cloned through a bind operation. The detailed semantics are documented in Documentation/filesystems/sharedsubtree.txt file in the kernel source tree; see also mount_namespaces(7).

Supported operations are:

The following commands allow one to recursively change the type of all the mounts under a given mountpoint.

mount does not read fstab(5) when a —make-* operation is requested. All necessary information has to be specified on the command line.

Note that the Linux kernel does not allow changing multiple propagation flags with a single mount(2) system call, and the flags cannot be mixed with other mount options and operations.

Since util-linux 2.23 the mount command can be used to do more propagation (topology) changes by one mount(8) call and do it also together with other mount operations. The propagation flags are applied by additional mount(2) system calls when the preceding mount operations were successful. Note that this use case is not atomic. It is possible to specify the propagation flags in fstab(5) as mount options (private, slave, shared, unbindable, rprivate, rslave, rshared, runbindable).

COMMAND-LINE OPTIONS

The full set of mount options used by an invocation of mount is determined by first extracting the mount options for the filesystem from the fstab table, then applying any options specified by the -o argument, and finally applying a -r or -w option, when present.

The mount command does not pass all command-line options to the /sbin/mount.suffix mount helpers. The interface between mount and the mount helpers is described below in the EXTERNAL HELPERS section.

Command-line options available for the mount command are:

-a, —all

The correct functionality depends on /proc (to detect already mounted filesystems) and on /sys (to evaluate filesystem tags like UUID= or LABEL=). It’s strongly recommended to mount /proc and /sys filesystems before mount -a is executed, or keep /proc and /sys at the beginning of fstab.

The option —all is possible to use for remount operation too. In this case all filters (-t and -O) are applied to the table of already mounted filesystems.

Since version 2.35 it is possible to use the command line option -o to alter mount options from fstab (see also —options-mode).

Note that it is a bad practice to use mount -a for fstab checking. The recommended solution is findmnt —verify.

-B, —bind

-c, —no-canonicalize

Note that mount does not pass this option to the /sbin/mount.type helpers.

-F, —fork

-i, —internal-only

-L, —label label

-l, —show-labels

-M, —move

-m, —mkdir[=mode]

-n, —no-mtab

-N, —namespace ns

mount switches to the mount namespace when it reads /etc/fstab, writes /etc/mtab: (or writes to _/run/mount) and calls mount(2), otherwise it runs in the original mount namespace. This means that the target namespace does not have to contain any libraries or other requirements necessary to execute the mount(2) call.

See mount_namespaces(7) for more information.

-O, —test-opts opts

mount -a -O no_netdev

mounts all filesystems except those which have the option netdev specified in the options field in the /etc/fstab file.

It is different from -t in that each option is matched exactly; a leading no at the beginning of one option does not negate the rest.

The -t and -O options are cumulative in effect; that is, the command

mount -a -t ext2 -O _netdev

mounts all ext2 filesystems with the _netdev option, not all filesystems that are either ext2 or have the _netdev option specified.

-o, —options opts

mount LABEL=mydisk -o noatime,nodev,nosuid

For more details, see the FILESYSTEM-INDEPENDENT MOUNT OPTIONS and FILESYSTEM-SPECIFIC MOUNT OPTIONS sections.

—options-mode mode

—options-source source

—options-source-force

-R, —rbind

-r, —read-only

Note that, depending on the filesystem type, state and kernel behavior, the system may still write to the device. For example, ext3 and ext4 will replay the journal if the filesystem is dirty. To prevent this kind of write access, you may want to mount an ext3 or ext4 filesystem with the ro,noload mount options or set the block device itself to read-only mode, see the blockdev(8) command.

—source device

—target directory

—target-prefix directory

mount —all —target-prefix /chroot -o X-mount.mkdir

mounts all from system fstab to /chroot, all missing mountpoint are created (due to X-mount.mkdir). See also —fstab to use an alternative fstab.

-T, —fstab path

Note that mount does not pass the option —fstab to the /sbin/mount.type helpers, meaning that the alternative fstab files will be invisible for the helpers. This is no problem for normal mounts, but user (non-root) mounts always require fstab to verify the user’s rights.

-t, —types fstype

The programs mount and umount(8) support filesystem subtypes. The subtype is defined by a ‘.subtype’ suffix. For example ‘fuse.sshfs’. It’s recommended to use subtype notation rather than add any prefix to the mount source (for example ‘sshfs#example.com’ is deprecated).

If no -t option is given, or if the auto type is specified, mount will try to guess the desired type. mount uses the libblkid(3) library for guessing the filesystem type; if that does not turn up anything that looks familiar, mount will try to read the file /etc/filesystems, or, if that does not exist, /proc/filesystems. All of the filesystem types listed there will be tried, except for those that are labeled "nodev" (e.g. devpts, proc and nfs). If /etc/filesystems ends in a line with a single *, mount will read /proc/filesystems afterwards. While trying, all filesystem types will be mounted with the mount option silent.

The auto type may be useful for user-mounted floppies. Creating a file /etc/filesystems can be useful to change the probe order (e.g., to try vfat before msdos or ext3 before ext2) or if you use a kernel module autoloader.

More than one type may be specified in a comma-separated list, for the -t option as well as in an /etc/fstab entry. The list of filesystem types for the -t option can be prefixed with no to specify the filesystem types on which no action should be taken. The prefix no has no effect when specified in an /etc/fstab entry.

The prefix no can be meaningful with the -a option. For example, the command

mount -a -t nomsdos,smbfs

mounts all filesystems except those of type msdos and smbfs.

For most types all the mount program has to do is issue a simple mount(2) system call, and no detailed knowledge of the filesystem type is required. For a few types however (like nfs, nfs4, cifs, smbfs, ncpfs) an ad hoc code is necessary. The nfs, nfs4, cifs, smbfs, and ncpfs filesystems have a separate mount program. In order to make it possible to treat all types in a uniform way, mount will execute the program /sbin/mount.type (if that exists) when called with type type. Since different versions of the smbmount program have different calling conventions, /sbin/mount.smbfs may have to be a shell script that sets up the desired call.

-U, —uuid uuid

-v, —verbose

-w, —rw, —read-write

A synonym is -o rw.

Note that specifying -w on the command line forces mount to never try read-only mount on write-protected devices or already mounted read-only filesystems.

-h, —help

-V, —version

FILESYSTEM-INDEPENDENT MOUNT OPTIONS

Some of these options are only useful when they appear in the /etc/fstab file.

Some of these options could be enabled or disabled by default in the system kernel. To check the current setting see the options in /proc/mounts. Note that filesystems also have per-filesystem specific default mount options (see for example tune2fs -l output for extN filesystems).

The following options apply to any filesystem that is being mounted (but not every filesystem actually honors them — e.g., the sync option today has an effect only for ext2, ext3, ext4, fat, vfat, ufs and xfs):

context=context, fscontext=context, defcontext=context, and rootcontext=context

A commonly used option for removable media is context="system_u:object_r:removable_t.

The fscontext= option works for all filesystems, regardless of their xattr support. The fscontext option sets the overarching filesystem label to a specific security context. This filesystem label is separate from the individual labels on the files. It represents the entire filesystem for certain kinds of permission checks, such as during mount or file creation. Individual file labels are still obtained from the xattrs on the files themselves. The context option actually sets the aggregate context that fscontext provides, in addition to supplying the same label for individual files.

You can set the default security context for unlabeled files using defcontext= option. This overrides the value set for unlabeled files in the policy and requires a filesystem that supports xattr labeling.

The rootcontext= option allows you to explicitly label the root inode of a FS being mounted before that FS or inode becomes visible to userspace. This was found to be useful for things like stateless Linux.

Note that the kernel rejects any remount request that includes the context option, even when unchanged from the current context.

Warning: the context value might contain commas, in which case the value has to be properly quoted, otherwise mount will interpret the comma as a separator between mount options. Don’t forget that the shell strips off quotes and thus double quoting is required. For example:

mount -t tmpfs none /mnt -o \ ‘context="system_u:object_r:tmp_t:s0:c127,c456",noexec’

For more details, see selinux(8).

Note that the real set of all default mount options depends on the kernel and filesystem type. See the beginning of this section for more details.

Since Linux 2.6.30, the kernel defaults to the behavior provided by this option (unless noatime was specified), and the strictatime option is required to obtain traditional semantics. In addition, since Linux 2.6.30, the file’s last access time is always updated if it is more than 1 day old.

strictatime

nostrictatime

This mount option significantly reduces writes to the inode table for workloads that perform frequent random writes to preallocated files.

The on-disk timestamps are updated only when:

The remount operation together with the bind flag has special semantics. See above, the subsection Bind mounts.

The remount functionality follows the standard way the mount command works with options from fstab. This means that mount does not read fstab (or mtab) only when both device and dir are specified.

mount -o remount,rw /dev/foo /dir

After this call all old mount options are replaced and arbitrary stuff from fstab (or mtab) is ignored, except the loop= option which is internally generated and maintained by the mount command.

mount -o remount,rw /dir

After this call, mount reads fstab and merges these options with the options from the command line (-o). If no mountpoint is found in fstab, then a remount with unspecified source is allowed.

mount allows the use of —all to remount all already mounted filesystems which match a specified filter (-O and -t). For example:

mount —all -o remount,ro -t vfat

remounts all already mounted vfat filesystems in read-only mode. Each of the filesystems is remounted by mount -o remount,ro /dir semantic. This means the mount command reads fstab or mtab and merges these options with the options from the command line.

What is a bind mount?

What is a “bind mount”? How do I make one? What is it good for?

I’ve been told to use a bind mount for something, but I don’t understand what it is or how to use it.

Gilles 'SO- stop being evil''s user avatar

3 Answers 3

What is a bind mount?

A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.

For example, after issuing the Linux command-

the directories /some/where and /else/where have the same content, which is the content of /some/where . (If /else/where was not empty, its previous content is now hidden.)

Unlike a hard link or symbolic link, a bind mount doesn’t affect what is stored on the filesystem. It’s a property of the live system.

How do I create a bind mount?

bindfs

The bindfs filesystem is a FUSE filesystem which creates a view of a directory tree. For example, the command

makes /else/where a mount point under which the contents of /some/where are visible.

Since bindfs is a separate filesystem, the files /some/where/foo and /else/where/foo appear as different files to applications (the bindfs filesystem has its own st_dev value). Any change on one side is “magically” reflected on the other side, but the fact that the files are the same is only apparent when one knows how bindfs operates.

Bindfs has no knowledge of mount points, so if there is a mount point under /some/where , it appears as just another directory under /else/where . Mounting or unmounting a filesystem underneath /some/where appears under /else/where as a change of the corresponding directory.

Bindfs can alter some of the file metadata: it can show fake permissions and ownership for files. See the manual for details, and see below for examples.

A bindfs filesystem can be mounted as a non-root user, you only need the privilege to mount FUSE filesystems. Depending on your distribution, this may require being in the fuse group or be allowed to all users. To unmount a FUSE filesystem, use fusermount -u instead of umount , e.g.

nullfs

FreeBSD provides the nullfs filesystem which creates an alternate view of a filesystem. The following two commands are equivalent:

After issuing either command, /else/where becomes a mount point at which the contents of /some/where are visible.

Since nullfs is a separate filesystem, the files /some/where/foo and /else/where/foo appear as different files to applications (the nullfs filesystem has its own st_dev value). Any change on one side is “magically” reflected on the other side, but the fact that the files are the same is only apparent when one knows how nullfs operates.

Unlike the FUSE bindfs, which acts at the level of the directory tree, FreeBSD’s nullfs acts deeper in the kernel, so mount points under /else/where are not visible: only the tree that is part of the same mount point as /some/where is reflected under /else/where .

The nullfs filesystem may be usable under other BSD variants (OS X, OpenBSD, NetBSD) but it is not compiled as part of the default system.

Linux bind mount

Under Linux, bind mounts are available as a kernel feature. You can create one with the mount command, by passing either the —bind command line option or the bind mount option. The following two commands are equivalent:

Here, the “device” /some/where is not a disk partition like in the case of an on-disk filesystem, but an existing directory. The mount point /else/where must be an existing directory as usual. Note that no filesystem type is specified either way: making a bind mount doesn’t involve a filesystem driver, it copies the kernel data structures from the original mount.

mount —bind also support mounting a non-directory onto a non-directory: /some/where can be a regular file (in which case /else/where needs to be a regular file too).

A Linux bind mount is mostly indistinguishable from the original. The command df -T /else/where shows the same device and the same filesystem type as df -T /some/where . The files /some/where/foo and /else/where/foo are indistinguishable, as if they were hard links. It is possible to unmount /some/where , in which case /else/where remains mounted.

With older kernels (I don’t know exactly when, I think until some 3.x), bind mounts were truly indistinguishable from the original. Recent kernels do track bind mounts and expose the information through <code/proc/PID/mountinfo, which allows findmnt to indicate bind mount as such.

You can put bind mount entries in /etc/fstab . Just include bind (or rbind etc.) in the options, together with any other options you want. The “device” is the existing tree. The filesystem column can contain none or bind (it’s ignored, but using a filesystem name would be confusing). For example:

If there are mount points under /some/where , their contents are not visible under /else/where . Instead of bind , you can use rbind , also replicate mount points underneath /some/where . For example, if /some/where/mnt is a mount point then

is equivalent to

In addition, Linux allows mounts to be declared as shared, slave, private or unbindable. This affects whether that mount operation is reflected under a bind mount that replicates the mount point. For more details, see the kernel documentation.

Linux also provides a way to move mounts: where —bind copies, —move moves a mount point.

It is possible to have different mount options in two bind-mounted directories. There is a quirk, however: making the bind mount and setting the mount options cannot be done atomically, they have to be two successive operations. (Older kernels did not allow this.) For example, the following commands create a read-only view, but there is a small window of time during which /else/where is read-write:

I can’t get bind mounts to work!

If your system doesn’t support FUSE, a classical trick to achieve the same effect is to run an NFS server, make it export the files you want to expose (allowing access to localhost ) and mount them on the same machine. This has a significant overhead in terms of memory and performance, so bind mounts have a definite advantage where available (which is on most Unix variants thanks to FUSE).

Use cases

Read-only view

It can be useful to create a read-only view of a filesystem, either for security reasons or just as a layer of safety to ensure that you won’t accidentally modify it.

With Linux, the simple way:

This leaves a short interval of time during which /mnt/readonly is read-write. If this is a security concern, first create the bind mount in a directory that only root can access, make it read-only, then move it to a public mount point. In the snippet below, note that it’s important that /root/private (the directory above the mount point) is private; the original permissions on /root/private/mnt are irrelevant since they are hidden behind the mount point.

Remapping users and groups

Filesystems record users and groups by their numerical ID. Sometimes you end up with multiple systems which assign different user IDs to the same person. This is not a problem with network access, but it makes user IDs meaningless when you carry data from one system to another on a disk. Suppose that you have a disk created with a multi-user filesystem (e.g. ext4, btrfs, zfs, UFS, …) on a system where Alice has user ID 1000 and Bob has user ID 1001, and you want to make that disk accessible on a system where Alice has user ID 1001 and Bob has user ID 1000. If you mount the disk directly, Alice’s files will appear as owned by Bob (because the user ID is 1001) and Bob’s files will appear as owned by Alice (because the user ID is 1000).

You can use bindfs to remap user IDs. First mount the disk partition in a private directory, where only root can access it. Then create a bindfs view in a public area, with user ID and group ID remapping that swaps Alice’s and Bob’s user IDs and group IDs.

Mounting in a jail or container

A chroot jail or container runs a process in a subtree of the system’s directory tree. This can be useful to run a program with restricted access, e.g. run a network server with access to only its own files and the files that it serves, but not to other data stored on the same computer). A limitation of chroot is that the program is confined to one subtree: it can’t access independent subtrees. Bind mounts allow grafting other subtrees onto that main tree. This makes them fundamental to most practical usage of containers under Linux.

For example, suppose that a machine runs a service /usr/sbin/somethingd which should only have access to data under /var/lib/something . The smallest directory tree that contains both of these files is the root. How can the service be confined? One possibility is to make hard links to all the files that the service needs (at least /usr/sbin/somethingd and several shared libraries) under /var/lib/something . But this is cumbersome (the hard links need to be updated whenever a file is upgraded), and doesn’t work if /var/lib/something and /usr are on different filesystems. A better solution is to create an ad hoc root and populate it with using mounts:

Linux’s mount namespaces generalize chroots. Bind mounts are how namespaces can be populated in flexible ways. See Making a process read a different file for the same filename for an example.

Running a different distribution

Another use of chroots is to install a different distribution in a directory and run programs from it, even when they require files at hard-coded paths that are not present or have different content on the base system. This can be useful, for example, to install a 32-bit distribution on a 64-bit system that doesn’t support mixed packages, to install older releases of a distribution or other distributions to test compatibility, to install a newer release to test the latest features while maintaining a stable base system, etc. See How do I run 32-bit programs on a 64-bit Debian/Ubuntu? for an example on Debian/Ubuntu.

Suppose that you have an installation of your distribution’s latest packages under the directory /f/unstable , where you run programs by switching to that directory with chroot /f/unstable . To make home directories available from this installations, bind mount them into the chroot:

The program schroot does this automatically.

Accessing files hidden behind a mount point

When you mount a filesystem on a directory, this hides what is behind the directory. The files in that directory become inaccessible until the directory is unmounted. Because BSD nullfs and Linux bind mounts operate at a lower level than the mount infrastructure, a nullfs mount or a bind mount of a filesystem exposes directories that were hidden behind submounts in the original.

For example, suppose that you have a tmpfs filesystem mounted at /tmp . If there were files under /tmp when the tmpfs filesystem was created, these files may still remain, effectively inaccessible but taking up disk space. Run

(FreeBSD) to create a view of the root filesystem at /mnt . The directory /mnt/tmp is the one from the root filesystem.

NFS exports at different paths

Some NFS servers (such as the Linux kernel NFS server before NFSv4) always advertise the actual directory location when they export a directory. That is, when a client requests server:/requested/location , the server serves the tree at the location /requested/location . It is sometimes desirable to allow clients to request /request/location but actually serve files under /actual/location . If your NFS server doesn’t support serving an alternate location, you can create a bind mount for the expected request, e.g.

in /etc/exports and the following in /etc/fstab :

A substitute for symbolic links

Sometimes you’d like to make symbolic link to make a file /some/where/is/my/file appear under /else/where , but the application that uses file expands symbolic links and rejects /some/where/is/my/file . A bind mount can work around this: bind-mount /some/where/is/my to /else/where/is/my , and then realpath will report /else/where/is/my/file to be under /else/where , not under /some/where .

Side effects of bind mounts

Recursive directory traversals

If you use bind mounts, you need to take care of applications that traverse the filesystem tree recursively, such as backups and indexing (e.g. to build a locate database).

Usually, bind mounts should be excluded from recursive directory traversals, so that each directory tree is only traversed once, at the original location. With bindfs and nullfs, configure the traversal tool to ignore these filesystem types, if possible. Linux bind mounts cannot be recognized as such: the new location is equivalent to the original. With Linux bind mounts, or with tools that can only exclude paths and not filesystem types, you need to exclude the mount points for the bind mounts.

Traversals that stop at filesystem boundaries (e.g. find -xdev , rsync -x , du -x , …) will automatically stop when they encounter a bindfs or nullfs mount point, because that mount point is a different filesystem. With Linux bind mounts, the situation is a bit more complicated: there is a filesystem boundary only if the bind mount is grafting a different filesystem, not if it is grafting another part of the same filesystem.

Going beyond bind mounts

Bind mounts provide a view of a directory tree at a different location. They expose the same files, possibly with different mount options and (with bindfs) different ownership and permissions. Filesystems that present an altered view of a directory tree are called overlay filesystems or stackable filesystems. There are many other overlay filesystems that perform more advanced transformations. Here are a few common ones. If your desired use case is not covered here, check the repository of FUSE filesystems.

    — log all filesystem access for debugging or monitoring purposes (configuration file syntax, Is it possible to find out what program or script created a given file?, List the files accessed by a program)

Filter visible files

clamfs — run files through a virus scanner when they are read

filterfs — hide parts of a filesystem

rofs — a read-only view. Similar to bindfs -r , just a little more lightweight.

Union mounts — present multiple filesystems (called branches) under a single directory: if tree1 contains foo and tree2 contains bar then their union view contains both foo and bar . New files are written to a specific branch, or to a branch chosen according to more complex rules. There are several implementations of this concept, including:

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Всё о монтировании: от системного администрирования до IT криминалистики

Оглавление

8.8.1 Опции монтирования для ntfs-3g

8.21 Опции монтирования для btrfs

8.22 Опции монтирования для adfs

8.23 Опции монтирования для affs

8.24 Опции монтирования для debugfs

8.25 Опции монтирования для devpts

8.26 Опции монтирования для hfs

8.27 Опции монтирования для hpfs

8.28 Опции монтирования для jfs

8.29 Опции монтирования для ncpfs

8.30 Опции монтирования для overlay

8.31 Опции монтирования для reiserfs

8.32 Опции монтирования для ubifs

8.33 Опции монтирования для ufs

8.34 Опции монтирования для usbfs

8.35 Опции монтирования для NFS

8.36 Опции монтирования для XFS

8.37 Опции монтирования для NILFS2

1. Основы монтирования и использования команды mount

Что такое монтирование

Монтирование в Linux позволяет получить доступ к содержимому диска и организовать структуру файловой системы. С помощью монтирования также можно открыть для работы образ диска (например, созданного с помощью программы dd), а также открыть для доступа и редактирования самые разные файловые системы и образы дисков (например, образы дисков виртуальных машин); даже удалённые сетевые директории могут быть смонтированы, в результате чего они станут доступны как будто бы файлы на любом другом локальном хранилище.

Кроме того, что с помощью монтирования можно работать с образами дисков, правильные настройки монтирования необходимы для компьютера к которому подключается диск для криминалистического анализа — например, этот диск не должен автоматически монтироваться с правами записи (чтобы не быть испорченным).

В Linux есть такое понятие как «монтирование» диска. Чтобы получить доступ к файлам на этом диске, его нужно сначала смонтировать. Может возникнуть вопрос, зачем такие сложности? Монтирование это мощнейшая вещь, которая позволяет поразительно гибко настроить файловую систему!

Суть монтирования в том, что в файловой системе создаётся новая директория (обычная папка), допустим, это папка /mnt/disk_d. А затем командой mount указывается, что теперь, например, диск /dev/sda смонтирован в директорию /mnt/disk_d. После этого можно получить доступ к файлам диска /dev/sda открыв папку /mnt/disk_d в любом менеджере файлов:

С помощью такого подхода — когда любой диск может быть любой папкой в системе, можно делать очень гибкую настройку. Самый частый пример, встречающийся на практике: файлы пользователя хранятся в папке /home/имя_пользователя/, например, у меня это папка /home/mial/. При установке операционной системы я могу сделать так, что мой второй или третий диск (а не системный) будет смонтирован в точку /home/mial/. То есть вся операционная система будет располагаться на одном диске, а все мои пользовательские файлы — на другом. Что это даёт? В случае переустановки системы, я вновь настрою монтирование диска с моими файлами в папку /home/mial/ и в результате в новой, только что установленной системе, уже будут на месте все мои документы, фотографии и прочее!

Поскольку часто узким местом в мощных компьютерах является скорость чтения с диска, то на на серверах с высокой нагрузкой практикуется перенос файлов баз данных (например, /var/lib/mysql/ на другой диск), возможен перенос файлов сервера (/srv/http/) на третий диск, файлов логов (/var/log/httpd/) на ещё один диск и т. д. Это позволяет добиться того, что данные из баз данных считываются независимо от записи журналов, то есть пока выполняются операции чтения-записи для одного процесса, другому процессу не нужно ждать своей очереди — всё выполняется одновременно.

Ещё монтирование позволяет выбрать различные режимы, например, диск можно смонтировать в режиме «только чтение» — в результате с него можно будет просматривать файлы, но испортить этот диск невозможно.

В общем, несмотря на то, что монтирование является чем-то непривычным для пользователей Windows, это потрясающая функция! Причём ничего сложного в этом нет, если понять суть.

Как соотносится операция монтирования с разбивкой на разделы и форматированием

Монтирование — это один из видов действий, которые можно выполнять с диском (блочным устройством). Обращаясь к устройству по его имени /dev/* возможно:

  • создавать новые разделы
  • удалять существующие разделы
  • форматировать разделы или весь диск
  • выполнять низкоуровневые настройки на уровне устройства (установка флага только чтение на уровне диска, выполнять сброс кэша записи на диске, контроль Advanced Power Management и прочее), а также считывать значения этих настроек и свойств диска
  • клонировать содержимое диска с помощью команды dd (или аналогов) в файл или на другой диск
  • восстанавливать содержимое диска из файла командой dd
  • монтировать разделы диска (или весь диск, если он не разбит на разделы)

Смотрите также:

  • Как в Linux подключить новый диск, разметить и отформатировать разделы
  • Как узнать количество включений и время работы диска в Linux
  • Как узнать, когда была создана файловая система ext4/ext3/ext2 и когда она была последний раз смонтирована
  • Инструкция по использованию команды dd

При этом операция монтирования препятствует другим действиям, например, форматированию или созданию нового раздела. Перед тем как перейти к управлению разделами на диске или их форматированию, необходимо отмонтировать (размонтировать) диск, иначе будет получена ошибка, что диск используется.

При этом сама операция размонтирования (или перемонтирования) может завершиться неудачей и ошибкой, что диск уже занят. Это происходит потому, что какая-то программа открыла и использует файл на смонтированном диске.

Чтобы выяснить, какая программа препятствует операции размонтирования/перемонтирования, можно использовать программу lsof следующим образом:

Например, я пытаюсь перемонтировать диск, смонтированный в директорию /mnt/disk_d/ и получаю ошибку, что диск используется. Чтобы определить, какая команда это делает, я запускаю:

Как можно увидеть, данной программой является doublecmd, идентификатором процесса, по которому её можно выключить с помощью команды kill, является 14470, также показано, что программу запустил пользователь mial, а также показано, какой именно файл или папка являются открытыми (колонка NAME).

Также смотрите связанные статьи:

  • Как пользоваться lsof для просмотра открытых файлов (в Linux всё является файлами)
  • В чём различия и как пользоваться командами kill, pkill и killall

Что нужно для монтирования

Для того чтобы компьютер смог успешно работать с файловой системой, необходимо, чтобы Linux поддерживал данную файловую систему. К счастью, в ядро Linux уже встроена поддержка большинства файловых систем, с которыми вы можете столкнуться.

Самыми распространёнными файловыми системами являются ext2, ext3, ext4, xfs, btrfs, vfat, sysfs, proc, nfs и cifs.

Уже на этапе установке Linux из ISO образа вы могли сталкиваться с одной из этих файловых систем. Образ диска ISO сам по себе является файловой системой iso9660. Но это ещё не всё, на образе файлы дистрибутива могут быть упакованы в файлы *.sfs — это файловая система sysfs (так сделано в Manjaro). На установочном образе Linux Mint вы сможете найти файл filesystem.squashfs, это файловая система Squashfs.

Содержимое установочного диска Manjaro:

Содержимое установочного диска Linux Mint:

Вам не нужно беспокоиться об этом разнообразии файловых систем, поскольку их поддержка уже встроена в ядро.

Чтобы просмотреть список всех поддерживаемых файловых систем на вашем дистрибутиве, выполните следующие команды:

Для работы с ещё более экзотическими файловыми системами, такими как образы дисков виртуальных машин, может понадобиться установка дополнительного программного обеспечения — об этом далее.

Поддержка файловой системы NTFS (по умолчанию используется в современных версиях Windows в качестве основной файловой системы) в Linux также имеется. Ядро обеспечивает базовую поддержку — доступ для чтения файлов. Для полной поддержки с возможностью записи необходимо установить драйвер ntfs-3g.

Для установки в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

Для установки в Arch Linux и производные:

Поддержка exFAT должна уже присутствовать на уровне ядра, но если у вас какие-то проблемы с данной файловой системой, то установите драйвер и пакет утилит.

Для установки в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

Для установки в Arch Linux и производные:

Поддержка Network File Systems (NFS) должна уже присутствовать на уровне ядра, но если у вас какие-то проблемы с данной файловой системой, то установите пакет утилит, включающий программу-помощник для монтирования.

Для установки в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

Для установки в Arch Linux и производные:

Поддержка NILFS2 должна уже присутствовать на уровне ядра, но если у вас какие-то проблемы с данной файловой системой, то установите пакет утилит, включающий программу-помощник для монтирования.

Для установки в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

Для установки в Arch Linux и производные:

Все остальные файловые системы поддерживаются ядром Linux. Имеется ввиду возможность монтирования. Если необходимо выполнить создание, проверку, изменение свойств файловых систем и другие операции, то для этого может потребоваться установка дополнительных пакетов с предназначенными для этого утилитами.

Указание типа файловой системы

Программа mount способна самостоятельно определить тип файловой системы, либо тип можно указать явно с помощью опции -t. Если опция -t не указана или указан тип auto, mount попытается угадать желаемый тип. Mount использует библиотеку blkid для определения типа файловой системы; если при этом не появится ничего знакомого, mount попытается прочитать файл /etc/filesystems или, если он не существует, /proc/filesystems. Будут опробованы все перечисленные там типы файловых систем, кроме тех, которые помечены как «nodev» (например, devpts, proc и nfs). Если /etc/filesystems оканчивается строкой с одним *, то mount затем прочитает /proc/filesystems. Во время попытки все типы файловых систем будут смонтированы с опцией монтирования silent.

Итак, подытожим, для монтирования нам не нужно беспокоиться о типе файловой системы, поскольку она определяется автоматически. Нам не нужно заботиться о поддерживаемых типах файловых систем, поскольку ядро Linux имеет встроенную поддержку большинства из них.

Как увидеть точки монтирования

Для просмотра устройств и точек их монтирования, выполните команду:

Эта команда отображает целевую точку монтирования (TARGET), исходное устройство (SOURCE), тип файловой системы (FSTYPE) и соответствующие параметры монтирования (OPTIONS) для каждой файловой системы, как показано на скриншоте. Подробности смотрите в статье «Команда findmnt для просмотра смонтированных файловых систем в Linux».

Команда findmnt без опций покажет больше данных:

Но среди вывода будут различные виртуальные файловые системы, которые нужны не всегда.

Команда mount также может показывать список точек монтирования, но эта функция в ней поддерживается только для обратной совместимости. Тем не менее, для вывода смонтированных реальных файловых систем вы можете использовать команду:

А для показа всех точек монтирования, запустите команду следующим образом:

Вы можете наблюдать процесс монтирования и размонтирования в реальном времени. К примеру, для отслеживания любых действий по монтированию и размонтированию в файловой системе используйте команду:

Как смонтировать диск

Общая команда монтирования диска имеет вид:

  • ОПЦИИ — опции утилиты mount или опции монтирования
  • УСТРОЙСТВО — блочное устройство или файл образа, который мы хотим подключить к файловой системе
  • ДИРЕКТОРИЯ — папка, где будут доступны файлы со смонтированного устройства

Среди ОПЦИЙ можно указать, например, тип файловой системы или режим только для чтения (по умолчанию монтирование выполняется для чтения и для записи). Существует большое количество опций, некоторые из которых применимы для всех файловых систем, а некоторые из которых специфичны только для определённых файловых систем. Программа mount имеет свои опции, которые относятся к поведению этой утилиты, а также имеются опции, которые относятся к файловым системам, такие опции указываются после -o.

Некоторые опции можно указать любым из этих способов, например, опцию -w, которая означает монтирование для чтения и записи (её псевдонимы —rw, —read-write), также можно указать как «-o rw».

Справочная информация по опциям будет приведена в конце данной статьи.

На самом деле, если вы хотите смонтировать диск для чтения и записи, то можно не указывать никакие опции.

Поэтому обычно для монтирования используется команда вида:

Допустим, я хочу, чтобы новый диск с именем /dev/sda был подключён (смонтирован) к папке /mnt/disk_d (название папки можно выбрать любое, а точка монтирования необязательно должна быть в директории /mnt/ — можно сделать в домашней папке или в любой другой).

Начинаем с создания директории, в которую будет смонтирован диск:

Монтируем диск /dev/sda:

Разрешаем доступ всем в этот диск, чтобы обычный пользователь также мог смотреть и записывать туда файлы:

На самом деле, права доступа можно настроить более тонко — без полного разрешения для всех.

Как смонтировать диск только для чтения

Для монтирования диска с правами записи, используется любая из опций: -w, —rw, —read-write, -o rw. На самом деле, ни одну из них указывать не нужно, поскольку монтирования с правами записи является поведением по умолчанию.

Чтобы смонтировать диск только с правами чтения, используйте любой из вариантов опции: -r, —read-only, -o ro.

Обратите внимание, что, в зависимости от типа файловой системы, состояния и поведения ядра, система все ещё может записывать данные на устройство. Например, ext3 и ext4 будут использовать журнал, если файловая система загрязнена. Чтобы предотвратить такой доступ для записи, вы можете смонтировать файловую систему ext3 или ext4 с параметрами монтирования ro,noload или установить само блочное устройство в режим только для чтения с помощью команды blockdev:

Обратите внимание, что эффект команды blockdev проявится только если устройство не смонтировано. Если оно уже смонтировано, то изменения вступят в силу после перемонтирования.

Программа hdparm также позволяет установить флаг read-only устройства. Когда значение read-only установлено на 1, Linux не разрешает операции записи на устройство.

Чтобы установить флаг read-only:

Чтобы снять флаг read-only (устройство станет доступным для записи):

Чтобы проверить текущее состояние флага read-only:

Пример проверки значения флага read-only для диска /dev/nvme0n1:

Вывод (режим только чтение отключён, то есть возможна запись на устройство):

Альтернативный (классический) способ создания монтирования привязки только для чтения — использовать операцию повторного монтирования, например:

О привязке (bind) и перемонтировании будет далее.

Как размонтировать диск

Для размонтирования диска используется любая из двух команд:

Частой ошибкой является когда указывают с командой umount одновременно ени диска и точки монтирования — нужно указать только что-то одно.

Если вы получили ошибку, что диск занят, это означает, что какая-то программа держит открытым файл на этом диске. Чтобы выяснить, какая программа препятствует операции размонтирования/перемонтирования, можно использовать программу lsof следующим образом:

Операция привязки bind

Для перемонтирования файловой иерархии в другое место используется команда вида:

После этого вызова одно и то же содержимое станет доступно в двух местах.

Важно понимать, что «привязка» не создаёт никаких узлов второго класса или специальных узлов в VFS ядра. «Привязка» — это просто ещё одна операция по присоединению файловой системы. Нигде не хранится информация о том, что файловая система была прикреплена операцией «привязки». СТАРАЯ_ДИРЕКТОРИЯ и НОВАЯ_ДИРЕКТОРИЯ независимы, более того, СТАРУЮ_ДИРЕКТОРИЮ можно размонтировать.

Можно перемонтировать один единичный файл в другой единичный файл. Также можно использовать привязку монтирования для создания точки монтирования из обычного каталога, например:

Вызов привязки mount подключает только (часть) единичной файловой системы, но не возможные подмонтирования. Всю файловую иерархию, включая субмонтирования, можно прикрепить на втором месте, используя:

Обратите внимание, что параметры монтирования файловой системы, поддерживаемые ядром, останутся такими же, как и в исходной точке монтирования. Параметры монтирования в пользовательском пространстве (например, _netdev) не будут скопированы при монтировании, и необходимо явно указать параметры в командной строке монтирования.

Начиная с util-linux 2.27 mount позволяет изменять параметры монтирования, передавая соответствующие параметры вместе с —bind. Например:

Эта функция не поддерживается ядром Linux; она реализуется в пользовательском пространстве с помощью дополнительного системного вызова перемонтирования mount. Это решение не атомарно.

Альтернативный (классический) способ создания монтирования привязки только для чтения — использовать операцию повторного монтирования, например:

Обратите внимание, что привязка только для чтения создаст точку монтирования только для чтения (запись VFS), но исходный суперблок файловой системы по-прежнему будет доступен для записи, что означает, что СТАРАЯ_ДИРЕКТОРИЯ будет доступна для записи, а НОВАЯ_ДИРЕКТОРИЯ будет доступна только для чтения.

Также можно изменить флаги записи VFS nosuid, nodev, noexec, noatime, nodiratime и relatime с помощью операции "remount,bind". Остальные флаги (например, специфичные для файловой системы) игнорируются. Рекурсивно изменить параметры монтирования (например, с -o rbind,ro) невозможно.

Начиная с util-linux 2.31, mount игнорирует флаг привязки из /etc/fstab при операции повторного монтирования (если в командной строке указано «-o remount»). Это необходимо для полного управления параметрами монтирования при повторном подключении из командной строки. В предыдущих версиях всегда применялся флаг привязки, и было невозможно повторно определить параметры монтирования без взаимодействия с семантикой связывания. Такое поведение mount не влияет на ситуации, когда в файле /etc/fstab указано «remount,bind».

Перемещение точки монтирования

Можно переместить точку монтирования в другую директорию, для этого используется команда вида:

Это приведёт к тому, что содержимое, которое ранее отображалось в СТАРАЯ_ДИРЕКТОРИЯ, теперь будет доступно в НОВАЯ_ДИРЕКТОРИЯ. Физическое расположение файлов не меняется. Обратите внимание, что СТАРАЯ_ДИРЕКТОРИЯ должен быть точкой монтирования.

Также обратите внимание, что перемещение монтирования, находящегося под общим монтированием, недопустимо и не поддерживается. Используйте команду findmnt, чтобы увидеть текущие флаги распространения:

Как перемонтировать диск

Можно перемонтировать уже смонтированную файловую систему. Обычно это используется для изменения флагов монтирования файловой системы, особенно для того, чтобы сделать файловую систему доступной для записи. Это не меняет устройство или точку монтирования. Эта операция отличается от предыдущих двух: от привязки и перемещения она отличается тем, что не создаётся новая точка монтирования и не перемещается точка монтирования, но меняются опции монтирования.

Функциональность повторного монтирования соответствует стандартному способу работы команды mount с параметрами из fstab. Это означает, что mount не читает fstab (или mtab) только тогда, когда указаны и устройство, и каталог.

Команда перемонтирования имеет общий вид:

К примеру, чтобы перемонтировать диск, смонтированный в /mnt/disk_d, установив права доступа на «только для чтения»:

Можно также указать одновременно устройство и точку монтирования:

Пример перемонтирования корневой файловой системы с опцией «чтение и запись»:

Опция «чтение и запись» может быть помещена в опцию строки команды -o, например:

После этого вызова все старые параметры монтирования заменяются, а произвольные данные из fstab (или mtab) игнорируются, за исключением параметра loop=, который генерируется внутри и поддерживается командой mount.

После этого вызова mount читает fstab и объединяет эти параметры с параметрами из командной строки (-o). Если в fstab не найдена точка монтирования, разрешается повторное монтирование с неуказанным источником.

mount позволяет использовать —all для повторного монтирования всех уже смонтированных файловых систем, соответствующих указанному фильтру (-O и -t). Например, команда:

перемонтирует все уже смонтированные файловые системы vfat в режим только для чтения. Каждая файловая система перемонтируется семантикой «mount -o remount,ro /dir». Это означает, что команда mount считывает fstab или mtab и объединяет эти параметры с параметрами из командной строки.

Просмотр информации о блочных устройствах

Чтобы смонтировать диск (или файл образа) достаточно указать имя устройства и папку, куда его смонтировать (где будут доступны файлы с этого диска). Как мы уже выяснили, не нужно даже указывать тип файловой системы.

Но чтобы смонтировать нужный диск, нужно правильно указать его название или название его раздела.

Отсюда возникает вопрос, как узнать имя раздела для монтирования? Устройства в Linux имеют имена вида /dev/*. Большинство дисков и USB накопителей имеют имена вида /dev/sd*, где в качестве * (звёздочки) используются буквы от a и далее, то есть b, c, d… Номер буквы соответствует порядковому номеру диска в системе. Если диск разбит на разделы, то после буквы идёт цифра раздела, например, /dev/sda1, /dev/sda2 и так далее. Если диск не разбит на разделы, то его можно смонтировать по имени без цифры, например, /dev/sda. Если же диск разбит на разделы, то нужно указать его имя с цифрой раздела, например, /dev/sda3.

В зависимости от используемой технологии дисков, у них могут быть другие имена. Пример имени диска NVMe: /dev/nvme0n1. В этом случае нумерация разделов также не подчиняется описанным выше правилам, первый и второй разделы имеют имена /dev/nvme0n1p1 и /dev/nvme0n1p2 соответственно.

Итак, необходимо правильно определить имя диска (или имя раздела, если диск разбит на разделы).

Обзорную информацию о дисках в системе может дать команда:

Эта команда показала, что в системе есть диски трёх типов: SCSI (внутренний жёсткий диск), [SAT], ATA (жёсткий диск, подключённый по USB переходнику к компьютеру), NVMe (внутренний твердотельный диск).

На самом деле, вывод команды неполный (пропущена USB флешка) и в нём полностью отсутствует информация о разделах. Тем не менее она может помочь вам сориентироваться в присутствующих на вашей системе дисках.

Хорошим вариантом является следующая программа:

Она выводит информацию о каждом диске и каждом разделе. В информации присутствует модель диска, размер и тип разделов — основываясь на этих данных можно найти название нужного раздела.

Если вы всё равно не можете разобраться, то со съёмными носителями (внешними USB дисками и флешками), вы можете поступить так: выполнить команду fdisk -l до подключения диска, затем подключить диск/флешку, выполнить команду fdisk -l ещё раз и посмотреть, какой диск добавился.

Если диск монтируется автоматически, то его имя можно увидеть с помощью команда мониторинга:

Ещё одна команда, показывающая обзорную информацию об именах дисках, их файловых системах, ярлык и занятое пространство (в процентах) и доступный объём свободного места (в гигабайтах):

Возможно вы сможете найти полезную информацию в LABEL разделов, чтобы показать сразу все разделы, выполните:

Если вы уже почти определились с разделом и хотите подтвердить свою правоту, то информацию по конкретному разделу можно получить командой вида:

Команда file также может рассказать много интересного про раздел:

Смотрите также:

  • 8 способов определить тип файловой системы в Linux (Ext2, Ext3 или Ext4, FAT32, NTFS)
  • Как узнать, когда была создана файловая система ext4/ext3/ext2 и когда она была последний раз смонтирована
  • Инструкция по использованию команды file

2. Монтирование образов дисков и доступ к файлам на них

Как просмотреть информации об образах для монтирования. Как определить файловую систему образа

С помощью команды file можно анализировать, какая файловая система используется в файлах, являющихся образами дисков.

Пример проверки файла test.image:

Пример анализа образа disk.ntfs:

Как можно убедиться, это образ с файловой системой NTFS.

Проверка образа rootfs.sfs:

Это образ с файловой системой Squashfs.

Анализ образа ext3-img-kw-1.dd:

Это образ с файловой системой ext3.

Чтобы выполнять команды по монтированию файлов-образов, вы можете создать образы, например, сделав клон флешки примерно следующим образом:

В этой команде утилита dd считывает содержимое диска /dev/sdc и сохраняет его в файл /mnt/disk_d/disk.ntfs. Помните, что программа dd считывает не файлы, а байты со всего диска. Поэтому получаемый образ по размеру будет равен диску (разделу) с которого он был сделан, независимо от заполненности этого диска. То есть если флешка размером 8 Гигабайт и на ней ничего не записано, то всё равно получится образ размером 8 Гигабайт.

Вы также можете перейти на страницу http://dftt.sourceforge.net/ — на ней есть ссылки на уроки, с которых вы можете скачать образы самых разных файловых систем.

Как смонтировать файл образа диска (раздела)

Общий вид команды монтирования файлов образов следующий:

  • ОПЦИИ — опции утилиты mount или опции монтирования
  • ОБРАЗ — файл с образом диска
  • ДИРЕКТОРИЯ — папка, где будут доступны файлы со смонтированного устройства

По сути, синтаксис монтирования образов с помощью mount отличается от монтирования диска тем, что вместо УСТРОЙСТВА указывается путь до ОБРАЗА. ОПЦИИ указывать необязательно, тип файловой системы будет определён автоматически.

К примеру, нужно смонтировать образ диска disk.ntfs, расположенный по пути /mnt/disk_d/disk.ntfs.

Начнём с создания временной точки монтирования в /tmp:

Монтируем образ /mnt/disk_d/disk.ntf в папку /tmp/disk:

Просмотрим содержимое образа disk.ntfs:

Мы можем видеть файлы, размещённые в образе disk.ntfs, их можно открывать и копировать.

Некоторые файловые системы (например, ISO образы) доступны только для чтения. Но в данном случае мы можем записать любые изменения в папку /tmp/disk и они сохраняться в файле disk.ntfs даже после размонтирования и повторного монтирования диска disk.ntfs.

Для размонтирования образа можно использовать любую из команд:

Пример просмотра содержимого образов с помощью монтирования

Для практики, возьмём установочный образ дистрибутива Linux. Они интересны тем, что там может быть сразу несколько файлов образов с разными файловыми системами. Для примера посмотрим содержимое установочного диска Manjaro.

Создадим папку для монтирования:

У меня установочный диск расположен по пути /mnt/disk_d/Share/manjaro-kde-20.0.3-200606-linux56.iso, а монтировать я его буду в /tmp/iso, тогда команда следующая:

Получено следующее сообщение:

Оно означает, что монтирование было выполнено, но источник защищён от записи, поэтому монтирование выполнено с правами только чтение. Помните, что последующие монтирования файлов с этого образа могут быть формально доступны для записи, но поскольку начальное хранилище открыто только для чтения, то любые сделанные изменения не сохранятся.

Посмотрим содержимое установочного диска:

Там среди прочего есть файл efi.img, проверим, какая у него файловая система:

Похоже, что это FAT.

Мы можем посмотреть содержимое этого файла. Создадим точку монтирования для него

И смонтируем файл /tmp/iso/efi.img в папку /tmp/efi:

Теперь нам доступно содержимое этого файла:

Вернёмся к нашему смонтированному ISO образу и посмотрим содержимое папки manjaro/x86_64/:

Крошечные файлы с расширением .md5 это просто контрольные суммы. Но файлы desktopfs.sfs, livefs.sfs, mhwdfs.sfs и rootfs.sfs интереснее. Они содержат основные файлы, необходимые для работы LIVE образа и установки дистрибутива Linux.

Мы можем посмотреть содержимое любого из этих файлов. Допустим, нас интересует desktopfs.sfs.

Создаём для него новую временную точку монтирования:

И монтируем файл /tmp/iso/manjaro/x86_64/desktopfs.sfs в папку /tmp/desktopfs:

Смотрим содержимое файла desktopfs.sfs:

Вы можете самостоятельно смонтировать и изучить содержимое других образов .sfs на этом установочном диске. Либо для самостоятельных упражнений вы можете скачать установочный диск Linux Mint. Там образ файловой системы расположен в файле casper/filesystem.squashfs.

Что касается установочного диска Kali Linux, то там сопроводители дистрибутива не стали использовать образы, а просто разместили файлы внутри iso9660, то есть его не так интересно исследовать.

3. Таблица файловых систем /etc/fstab

Структура записей в /etc/fstab

При включении компьютера с Linux диски уже смонтированы в системе: главный диск смонтирован в / (корень), загрузочный диск смонтирован в /boot, дополнительные диски смонтированы в /mnt/*. Информация для этих монтирвоаний содержится в файле /etc/fstab. Система автоматически монтирует диски на основании записей, содержащихся в файле /etc/fstab.

Файл fstab содержит описательную информацию о файловых системах, которые может монтировать система. fstab только читается программами, но не записывается; системный администратор обязан правильно создать и поддерживать этот файл. Порядок записей в fstab важен, потому что утилиты fsck, mount и umount последовательно выполняют итерацию через fstab, делая своё дело.

Каждая файловая система описывается в отдельной строке. Поля в каждой строке разделены табуляцией или пробелами. Строки, начинающиеся с символа "#", являются комментариями. Пустые строки игнорируются.

Ниже приведён типичный пример записи в fstab:

Первое поле (fs_spec).

Это поле описывает специальное блочное устройство, удалённую файловую систему или образ файловой системы для loop устройства, которое нужно смонтировать, или файл подкачки, или раздел подкачки, который нужно включить.

Для обычных монтирований оно будет содержать (ссылку на) узел специального блочного устройства (созданный утилитой mknod) для монтируемого устройства, например, «/dev/cdrom» или «/dev/sdb7». Для монтирования NFS это поле — <host>:<dir>, например, «knuth.aeb.nl:/». Для файловых систем без хранилища можно использовать любую строку, которая будет отображаться, например, в выводе df. Обычно для procfs используется «proc»; а для tmpfs используются «mem», «none» или «tmpfs». Другие специальные файловые системы, такие как udev и sysfs, обычно не указываются в fstab.

Вместо имени устройства можно указать LABEL=<label> или UUID=<uuid>. Это рекомендуемый метод, поскольку имена устройств часто совпадают с порядком обнаружения оборудования и могут измениться при добавлении или удалении других дисков. Например, «LABEL=Boot» или «UUID=3e6be9de-8139-11d1-9106-a43f08d823a6». (Используйте инструмент, специфичный для файловой системы, например e2label, xfs_admin или fatlabel, чтобы установить LABEL в файловых системах).

Также можно использовать ARTUUID= и PARTLABEL=. Эти идентификаторы разделов поддерживаются, например, для таблицы разделов GUID (GPT).

Подробности смотрите в статье: Постоянные имена для файловых устройств

Чтобы узнать UUID всех дисков используйте любую из следующих команд:

Чтобы узнать UUID определённого диска, используйте любую из следующих команд:

Обратите внимание, что mount использует UUID как строки. В документации сказано, что строковое представление UUID должно быть основано на символах нижнего регистра. Но по факту для некоторых дисков UUID состоит из букв в верхнем регистре — использование таких UUID с заглавными буквами не вызывает каких-либо проблем.

Второе поле (fs_file).

Это поле описывает точку монтирования (цель) для файловой системы. Для разделов подкачки это поле должно быть указано как «none». Если имя точки монтирования содержит пробелы или табуляции, их можно использовать как «\040» и «\011» соответственно.

Третье поле (fs_vfstype).

Это поле описывает тип файловой системы. Linux поддерживает множество типов файловых систем: ext4, xfs, btrfs, f2fs, vfat, ntfs, hfsplus, tmpfs, sysfs, proc, iso9660, udf, squashfs, nfs, cifs и многие другие.

Запись подкачки в этом поле должна содержать «swap».

Запись «none» полезна для привязки или перемещения монтирований.

Можно указать несколько типов в списке, разделённом запятыми.

mount и umount поддерживают подтипы файловых систем. Подтип определяется суффиксом «.subtype». Например, «fuse.sshfs». Рекомендуется использовать нотацию подтипа, а не добавлять префикс в первое поле fstab (например, «sshfs#example.com» является устаревшим).

Четвёртое поле (fs_mntops).

В этом поле описаны параметры монтирования, связанные с файловой системой.

Поле отформатировано как список параметров, разделённых запятыми. Оно содержит как минимум тип монтирования (ro или rw), а также любые дополнительные параметры, соответствующие типу файловой системы (включая параметры настройки производительности).

Основные параметры, не зависящие от файловой системы:

defaults

использовать параметры по умолчанию: rw, suid, dev, exec, auto, nouser и async.

noauto

не монтировать при использовании команды «mount -a» (например, во время загрузки)

позволяет монтировать указанному пользователю

позволяет монтировать указанному владельцу устройства

или x-<name> для использования программами поддержки fstab

nofail

не сообщает об ошибках для этого устройства, если оно не существует.

Пятое поле (fs_freq).

Это поле используется dump, чтобы определить, какие файловые системы нужно выгрузить. По умолчанию, если не присутствует, — ноль (не выгружать).

Шестое поле (fs_passno).

Это поле используется fsck для определения порядка, в котором выполняется проверка файловых систем во время загрузки. Корневая файловая система должна быть указана с fs_passno равным 1.

Для других файловых систем значение fs_passno должно быть равно 2. Файловые системы на диске будут проверяться последовательно, но файловые системы на разных дисках будут проверяться одновременно, чтобы использовать параллелизм, доступный на оборудовании. По умолчанию нулевое значение (не использовать fsck), если оно отсутствует.

Рассмотрим пример реального файла /etc/fstab на моей системе:

Этот файл отчасти создан автоматически, отчасти дописан вручную.

Автоматическая часть была создана командой в соответствии с «Инструкцией по установке Arch Linux»:

Самая первая строка является комментарием и просто напоминает значение полей.

Затем строка «# /dev/nvme0n1p2» также является комментарием, она содержит удобное для восприятия имя диска, чтобы было проще ориентироваться, к какому диску относится последующая запись.

Следующая строка начинается с «UUID=01e4d4f5-698f-4dc2-987b-270499457f48» — это уникальный идентификатор диска. Вторым полем идёт «/», это означает, что диск смонтирован в корень файловой системы. Затем «ext4» указывает на тип файловой системы. Затем идут опции монтирования «rw,relatime». Затем идёт «0», означающий, что не нужно выгружать файловые системы. Последней идёт «1», означающая, что в случае возникновения проблем этот диск должен быть проверен первым.

Следующая строка вновь является комментарием, показывающим нам, к какому диску она относится «# /dev/nvme0n1p1».

Затем идёт идентификатор диска «UUID=7327-B4E4», обратите внимание, что он намного короче предыдущего — видимо, зависит от файловой системы. Затем идёт точка монтирования «/boot», то есть это загрузочный раздел, который монтируется в указанную папку. Далее тип файловой системы «vfat». Затем опции монтирования «rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro» — все опции монтирования будут рассмотрены в конце данной статьи, поэтому не будем на них останавливаться. Затем идёт «0», означающий, что не нужно выгружать файловые системы, затем идёт «2», означающая, что диск должен быть проверен вторым.

На этом заканчивается автоматически сгенерированная часть и начинается часть дописанная мною вручную.

После установки системы, второй внутренний диск мной был отформатирован в файловую систему ext4, у этого диска название /dev/sda и он смонтирован в директорию /mnt/disk_d с опциями «rw,relatime». Вместо имени диска /dev/sda можно указать его UUID — но это не критично.

Далее идёт закомментированная строка, подключающая файл подкачки «#/swapfile none swap defaults 0 0». Поскольку строка закомментированна, это означает, что файл подкачки не используется.

Про создание и удаление файлов подкачки смотрите статьи:

  • Как в Kali Linux создать или увеличить файл подкачки (Swap)
  • Файл подкачки и раздел подкачки в Arch Linux: что выбрать и как добавить Swap
  • Как в Linux Mint и Ubuntu увеличить и раздел подкачки. Как в Linux создать файл подкачки Swap
  • Как создать раздел подкачки не на системном диске. Как переместить раздел подкачки на другой диск

Управление опциями монтирования с помощью /etc/fstab

Помните, что при любом монтировании, даже если оно происходит не в начале запуска компьютера, а в любое другое время, программа mount сверяется с опциями из файла /etc/fstab. По этой причине можно прописать необходимые опции и точки монтирования в этом файл.

К примеру, у меня есть внешний USB диск, который при подключении к компьютеру по умолчанию монтируется в «/run/media/mial/Новый том».

Мне такое название точки монтирования не нравится, я хочу, чтобы именно этот диск монтировался в /mnt/disk_e (как на моём старом компьютере это был диск E:\).

В этом случае мне нужно отмонтировать диск и заново его монтировать примерно следующей командой:

Это ненужные действия, которые можно избежать, прописав опции монтирования и точку монтирования в файле fstab. Открываем этот файл для редактирования:

Мне необходимо узнать UUID данного диска (поскольку при подключении он иногда получает имя /dev/sdc1, иногда /dev/sdd1 или другие, например, если к компьютеру уже подключены другие диски или флешки). UUID диска можно узнать например так:

Теперь в файл /etc/fstab я добавляю следующие строки:

Первая из них — комментарий, который напомнит мне, к чему относится эта запись.

Затем идёт строка, с описанными выше полями. В первом поле я идентифицирую диск — я использую не его имя, а UUID, поскольку имя устройства может меняться. Затем указываю точку монтирвоания (/mnt/disk_e). Затем тип файловой системы (ntfs). Затем идут опции, обратите внимание, что ОБЯЗАТЕЛЬНО нужно добавить опцию nofail, иначе если этот диск не подключён к компьютеру во время загрузки, компьютер может вовсе не загрузиться из-за ошибки в файле /etc/fstab. Затем идут ещё две цифры необязательных полей (отмена выгрузки файловых систем и отмена проверки).

Теперь в любое время при подключении этого диска он будет автоматически смонтирован в /mnt/disk_e. Это можно проверить с помощью команды:

Примечание: вы можете обратить внимание, что опции монтирования из файла /etc/fstab и опции монтирования на скриншоте не совпадают. Дело в том, что программа mount может использовать программы-помогатели, которые фактически и выполняют монтирования. При вызове программ-помогателей некоторые опции могут теряться или игнорироваться программой, которая в конечном счёте выполняет монтирование. По этой же причине, кстати, вместо файловой системы ntfs указана fuseblk — это означает, что работу по монтированию диска выполнила FUSE.

Ещё одним следствием описания монтирования в файле /etc/fstab является то, что для указанных там дисков можно использовать сокращённую команду монтирования — указывая только точку монтирования или только имя устройства, например:

Эта команда сработает как надо, смонтировав диск /dev/sdc1 в /mnt/disk_e — недостающие сведения и опции монтирования будут взяты из /etc/fstab.

Проверка файла /etc/fstab

Для проверки записей в файле /etc/fstab используйте команду

На скриншоте можно увидеть, что диск с UUID равным 26FC3023FC2FEC2D является недоступным (unreachable). Это может означать, что запись в файле /etc/fstab имеет ошибку. Но в данном случае диск с UUID=26FC3023FC2FEC2D — это съёмный диск, для его монтирования указана опция nofail (не вызывать фатальную ошибку, даже если диск отсутствует), поэтому предупреждение можно проигнорировать.

Для вывода более подробной информации добавьте опцию —verbose:

Все пункты успешно прошли проверку, рассмотрим более подробно записи проблемного диска:

  • /mnt/disk_e — точка монтирования
  • [ ] target exists — целевая папка (точка монтирования), существуют, то есть директория /mnt/disk_e имеется в системе
  • [ ] VFS options: rw — найдена такая опция монтирования как rw, то есть диск монтируется для чтения и для записи. VFS — это опции ядра, системных вызовов. Эти опции одинаковы для всех файловых систем.
  • [ ] FS options: utf8 — найдена опция, специфичная для данной файловой системы. Этой опцией является utf8, то есть для преобразования имён файлов будет использоваться кодировка UTF-8.
  • [ ] userspace options: noauto,nofail — здесь перечислены опции пользовательского пространства. Опция noauto означает не монтировать автоматически, а опция nofail означает не сообщает об ошибках для этого устройства, если оно не существует — эта опция важна для съёмных носителей и сетевых дисков, которые могут отсутствовать во время загрузки компьютера.

4. Доступ к содержимому дисков виртуальных машин и их изменение

Мы рассмотрели монтирование обычных дисков в файловую систему. Затем мы рассмотрели монтирование образов дисков в файловую систему. Теперь мы рассмотрим монтирование дисков виртуальных машин в файловую систему. На самом деле, последняя тема стоит особняком от уже рассмотренных вопросов — она не имеет отношения к команде mount (хотя поддержка файловых систем виртуальных дисков нужна чтобы можно было работать с ними).

Но для конечного пользователя, которому нужно просмотреть и/или отредактировать содержимое образа, нет особого интереса до технических подробностей. А с практической точки зрение главное то, что мы уже умеем открывать файлы образов любых файловых систем, а сейчас мы научимся открывать и редактировать файлы дисков виртуальных машин.

Для работы с образами виртуальных машин необходим пакет libguestfs.

libguestfs — это набор инструментов для доступа и изменения образов дисков виртуальных машин (ВМ). Вы можете использовать его для просмотра и редактирования файлов внутри гостей, создания сценариев для изменений виртуальных машин, мониторинга статистики использования/свободного диска, создания гостей, P2V, V2V, выполнения резервного копирования, клонирования виртуальных машин, создания виртуальных машин, форматирования дисков, изменения размера дисков и многого другого.

libguestfs может получить доступ практически к любому образу диска, который только можно вообразить. Он может делать это безопасно — без необходимости root и с несколькими уровнями защиты от вредоносных образов дисков. Он может получить доступ к образам дисков на удалённых машинах или на компакт-дисках/USB-накопителях. Он может получить доступ к проприетарным системам, таким как VMware и Hyper-V.

Все эти функции доступны через оболочку с поддержкой сценариев под названием guestfish или интерактивную спасательную оболочку virt-rescue.

libguestfs — это библиотека C, которая может быть связана с программами управления C и C++ и имеет привязки примерно для десятка других языков программирования. Используя модуль FUSE, вы также можете монтировать гостевые файловые системы на хосте.

libguestfs — это способ создания, доступа и изменения образов дисков. Вы можете заглядывать внутрь образов дисков, изменять файлы, которые они содержат, создавать их с нуля, изменять их размер и многое другое. Это особенно полезно из сценариев и программ, а также из командной строки.

Для установки в Debian, Kali Linux, Linux Minut, Ubuntu и их производные выполните:

Для установки в Arch Linux, Manjaro, BlackArch и их производные выполните:

Данный пакет включает в себя большое количество утилит:

  • guestfs — главная документация по API
  • guestfish — интерактивный шелл
  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему
  • virt-alignment-scan — проверить выравнивание разделов виртуальной машины
  • virt-builder — быстрый построитель образов
  • virt-builder-repository — создаёт репозитории virt-builder
  • virt-cat — показывает файл
  • virt-copy-in — копирует файлы и директории в виртуальную машину
  • virt-copy-out — копирует файлы и директории из виртуальной машины
  • virt-customize — настраивает виртуальные машины
  • virt-df — показывает свободное место на виртуальных дисках
  • virt-dib — безопасный diskimage-builder
  • virt-diff — показывает разницу между виртуальными дисками
  • virt-edit — редактирует файл
  • virt-filesystems — показывает информацию о файловых системах, устройствах, LVM
  • virt-format — стирает и делает пустые диски
  • virt-get-kernel — получает ядро с диска
  • virt-inspector — инспектирует образы виртуальных машин
  • virt-list-filesystems — выводит список файловых систем
  • virt-list-partitions — выводит список разделов дисков
  • virt-log — показывает файлы журналов
  • virt-ls — показывает список файлов
  • virt-make-fs — создаёт файловую систему
  • virt-p2v — конвертирует физическую машину для запуска на KVM
  • virt-p2v-make-disk — делает P2V ISO
  • virt-p2v-make-kickstart — делает P2V kickstart
  • virt-rescue — спасательный шелл
  • virt-resize — изменяет размер виртуальных машин
  • virt-sparsify — сделать виртуальные машины разреженными (с тонким предоставлением)
  • virt-sysprep — отключает виртуальную машину перед клонированием
  • virt-tail — показывает изменения в файле журнала
  • virt-tar — архивирует и выгружает файлы
  • virt-tar-in — архивирует и выгружает файлы
  • virt-tar-out — архивирует и загружает файлы
  • virt-v2v — конвертирует гостевую машину для запуска на KVM
  • virt-win-reg — экспортирует и объединяет ключи реестра Window
  • libguestfs-test-tool — тест libguestfs
  • libguestfs-make-fixed-appliance — сделать libguestfs фиксированным устройством
  • hivex — извлекает куст реестра Windows
  • hivexregedit — объединяет и экспортирует изменения в реестре из файлов в формате regedit
  • hivexsh — оболочка кустов реестра Windows
  • hivexml — конвертирует куст реестра Windows в XML
  • hivexget — извлекает данные из куста реестра Windows
  • supermin — инструмент для создания supermin. Это крошечные устройства (похожие на виртуальные машины), обычно размером около 100 КБ, которые полностью создаются на лету за доли секунды, когда вам нужно загрузить одно из них.
  • guestfsd — демон guestfs

Ключевыми являются программы:

  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему

Программа guestfish (интерактивный шелл) требует глубокого изучения, но позволит вам работать с содержимым виртуальных дисков в интерактивном режиме, или писать скрипты для автоматической обработки последовательности действий.

Многие из перечисленных программ являются скриптами, автоматизирующими действия. То есть они выполняют монтирование образа виртуального диска, делают указанное действие и размонтируют.

Типичная команда монтирования виртуального диска:

После опции -a нужно указать виртуальный диск для монтирования.

Рассмотрим ещё несколько опций:

Опция -i (—inspector) означает использовать код virt-inspector для проверки дисков в поисках операционной системы и монтирование файловых систем, как если бы они были смонтированы на реальной виртуальной машине.

Опция —live позволяет подключиться к работающей виртуальной машине, эта опция является экспериментальной.

Опция -r (—ro) добавляет устройство и монтирует всё только для чтения. Также запрещает запись и делает диск доступным только для чтения для FUSE. Это настоятельно рекомендуется, если вы не собираетесь редактировать гостевой диск. Если гость работает, а эта опция не указана, существует высокий риск повреждения диска в гостевой системе.

Опция -w (—rw) изменяет параметры -a, -d и -m, так что диски добавляются, а монтирование выполняется для чтения-записи.

Итак, смонтируем диск виртуальной машины Windows Server 2019.vdi.

Создадим точку монтирования:

Монтируем диск /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi в папку /tmp/guest:

Смотрим содержимое смонтированного диска:

Теперь посмотрим содержимое папки C:/Users/Администратор/Downloads/:

Для размонтирования используется команда вида:

Извлечение кустов реестра Windows

С помощью virt-win-reg можно извлекать кусты реестра Windows, в том числе те, которые доступны только для учётной записи System.

Общий вид команды:

По умолчанию содержимое будет выведено на экран, поэтому для сохранения данных в файл нужно воспользоваться перенаправлением вывода.

Например, команда для извлечения куста HKEY_LOCAL_MACHINE\SYSTEM из операционной системы Windows, чей виртуальный диск расположен в /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi и сохранение полученных данных в файл SYSTEM.reg:

Ещё один пример, извлечение куста реестра HKEY_LOCAL_MACHINE\SAM из образа диска /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi и сохранение данных в файл SAM.reg:

Просмотр свободного места

Программа virt-df покажет разделы дисков и количество свободного места на них.

Общий вид команды:

Пример вывода для ОС Linux:

Ещё один пример команды:

Пример вывода для ОС Windows:

Обратите внимание, что разделы в Windows названы по аналогии с разделами Linux.

Анализ виртуальных дисков

Команда virt-inspector проведёт анализ файловых систем и покажет установленные программы, а также некоторую другую информацию об операционных системах.

Общий вид команды:

Вывод списка файлов

Вы можете посмотреть содержимое любой папки на виртуальном диске с помощью virt-ls.

Общий вид команды:

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое корня диска C: для виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

Просмотр содержимого файла

Программа virt-cat покажет содержимое любого файла. Файл будет выведен прямо на экран (в стандартный вывод), поэтому если это бинарный файл, то используйте перенаправление вывода для его сохранения.

Общий вид команды:

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое файла C:\DumpStack.log.tmp из виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

Просмотр разделов дисков

Программа virt-filesystems просто покажет количество разделов дисков и их номера.

Общий вид команды:

Пример команды и вывода для Windows:

Пример команды и вывода для Linux:

5. Файловая система в оперативной памяти

Файловая система tmpfs может найти повседневное применение в вашей деятельности, поскольку она невероятно быстрая и может помочь снизить нагрузку на ваше постоянное хранилище (особенно актуально тем, у кого Linux установлен на флешку или карту памяти).

tmpfs — это виртуальная файловая система, располагающаяся в оперативной памяти.

Средство tmpfs позволяет создавать файловые системы, содержимое которых находится в виртуальной памяти. Поскольку файлы в таких файловых системах обычно находятся в ОЗУ, доступ к файлам осуществляется очень быстро.

Файловая система создаётся автоматически при монтировании файловой системы с типом tmpfs с помощью следующей команды:

Файловая система tmpfs имеет следующие свойства:

  • Файловая система может использовать пространство подкачки, когда этого требует физическая нагрузка на память.
  • Файловая система потребляет столько физической памяти и пространства подкачки, сколько требуется для хранения текущего содержимого файловой системы.
  • Во время операции повторного монтирования (mount -o remount) размер файловой системы может быть изменён (без потери существующего содержимого файловой системы).

Если файловая система tmpfs размонтирована, её содержимое теряется (удаляется).

Вы можете скопировать в tmpfs файлы для максимально быстрого доступа. Это могут быть файлы баз данных или веб-сервера.

Ещё одна цель использования — снизить износ постоянного хранилища. Это не особенно актуально для жёсткого диска или твердотельного диска — современные модели при любом типе домашнего использования переживут нас. Но это может быть актуально, если система установлена на карту памяти. Вы можете разместить в оперативную память приложение, которое постоянно использует хранилище (часто обращается к файлам или непрерывно сохраняет файлы), тем самым ускорится работа этого приложения, а также всей системы за счёт снижения нагрузки на карту памяти.

Ещё одна возможная причина использование — незаметность, при работе в tmpfs всё будет происходить в оперативной памяти, а на постоянных хранилищах не останется никаких следов.

Рассмотрим пример копирования файлов — насколько быстрее это будет происходить в tmpfs по сравнению с дисками.

Создадим точку монтирования:

Создадим виртуальную файловую систему размером 20 Гигабайт в оперативной памяти:

Скопируем туда файл размером в несколько Гигабайт:

Проверим, сколько времени понадобится для создания копии этого файла в оперативной памяти:

Понадобилось совсем немного времени — примерно полторы секунды.

А теперь сделаем копию этого же файла на жёстком диске:

Понадобилось 14 секунд — в 10 раз больше времени.

Итак, используя tmpfs можно добиться максимальной скорости доступа к файлам.

6. Автоматическое монтирование и его отключение

Включение и отключение автоматического монтирования на уровне графического окружения рабочего стола

Если подключить к компьютеру с Linux флешку или внешний USB диск, то система его автоматически смонтирует и откроет окно файлового менеджера. Причём окно будет открыто даже если у вам это не нужно и даже если у вас уже открыто окно файлового менеджера. Это довольно раздражительно.

Отключение автоматического открытия файлового менеджера после монтирования

Чтобы это отключить, установите пакет dconf-editor.

Для установки в Debian, Linux Mint, Ubuntu, Kali Linux и их производные:

Для установки в Arch Linux и производные:

После установки запустите в консоли:

Для Cinnamon перейдите в пункты: org -> cinnamon -> desktop -> media-handling. И отключите automount-open:

Для GNOME перейдите в пункты: org -> gnome -> desktop -> media-handling. И отключите automount-open.

Для Xfce4 перейдите в пункты: org -> gnome -> desktop -> media-handling. И отключите automount-open.

Обратите внимание на то, что программа dconf-editor запускается без sudo. Если вы запустите её с sudo, то сделанная настройка будто бы не сработает. На самом деле, эта настройка будет установлена на пользователя root, а не для вашего пользователя.

Также можно отключить автоматический запуск файлового менеджера после монтирования из командной строки.

Как отключить автоматическое монтирование дисков

Если вам не нужно автоматическое монтирование дисков вообще, то его также можно отключить.

Чтобы это сделать с помощью dconf-editor, для Cinnamon перейдите в пункты: org -> cinnamon -> desktop -> media-handling. И отключите automount.

Для GNOME перейдите в пункты: org -> gnome -> desktop -> media-handling и отключите automount.

Для Xfce4 перейдите в пункты: org -> gnome -> desktop -> media-handling и отключите automount.

Отключение в командной строке.

Включение и отключение автоматического монтирования на уровне udev

[В ПРОЦЕССЕ ПОДГОТОВКИ]

Автоматическое монтирование с помощью udisks2 и udiskie

[В ПРОЦЕССЕ ПОДГОТОВКИ]

7. Монтирование сетевых файловых систем

Примеры монтирования сетевых файловых систем вы найдёте по следующим ссылкам:

  • Как смонтировать общую папку Windows/Samba в Linux
  • Настройка автоматического монтирования сетевой папки в Linux
  • Сетевая файловая система SSHFS
  • Монтирование в VirtualBox

Помните об опции монтирования _netdev, которую можно указать в файле /etc/fstab, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).

8. Опции команды mount и опции монтирования

Опции команды mount

Полный набор опций монтирования, используемых при вызове монтирования, определяется сначала извлечением опций монтирования для файловой системы из таблицы fstab, затем применением любых опций, указанных аргументом -o, и, наконец, применением опции -r или -w, если они присутствуют.

Параметры командной строки, доступные для команды mount:

-a, —all

Смонтировать все файловые системы (указанных типов), упомянутые в fstab (кроме тех, чья строка содержит ключевое слово noauto). Файловые системы монтируются в соответствии с их порядком в fstab. Команда mount сравнивает источник файловой системы, цель (и корень fs для bind mount или btrfs) для обнаружения уже смонтированных файловых систем. Таблица ядра с уже смонтированными файловыми системами кэшируется во время монтирования —all. Это означает, что все повторяющиеся записи fstab будут смонтированы.

Параметр —all также можно использовать для операции повторного монтирования. В этом случае все фильтры (-t и -O) применяются к таблице уже смонтированных файловых систем.

Начиная с версии 2.35, можно использовать параметр командной строки -o для изменения параметров монтирования из fstab (см. также —options-mode).

Обратите внимание, что использование mount -a для проверки fstab — плохая практика. Рекомендуемое решение:

-B, —bind

Перемонтировать поддерево в другом месте (чтобы его содержимое было доступно в обоих местах). Смотрите выше раздел «Операция привязки bind».

-c, —no-canonicalize

Не канонизировать пути. Команда mount по умолчанию канонизирует все пути (из командной строки или fstab). Этот параметр можно использовать вместе с флагом -f для уже канонизированных абсолютных путей. Опция предназначена для помощников монтирования, которые вызывают mount -i. Настоятельно рекомендуется не использовать этот параметр командной строки для обычных операций монтирования.

Обратите внимание, что mount не передаёт эту опцию помощникам /sbin/mount.ТИП.

-F, —fork

(Используется вместе с -a.) Разветвляет новое воплощение mount для каждого устройства. Это позволит выполнять монтирование на разных устройствах или на разных серверах NFS параллельно.

Эта опция имеет преимущество в скорости; также таймауты NFS продолжаются параллельно. Недостатком является то, что порядок операций монтирования не определён. Таким образом, вы не можете использовать эту опцию, если хотите монтировать и /usr и /usr/spool.

-f, —fake

Делает все, кроме самого системного вызова; проще говоря, это подделка монтирования файловой системы. Эта опция полезна вместе с флагом -v, чтобы определить, что пытается сделать команда монтирования. Её также можно использовать для добавления записей для устройств, которые были смонтированы ранее с параметром -n. Параметр -f проверяет наличие существующей записи в /etc/mtab и завершается ошибкой, если запись уже существует (при обычном монтировании без подделки эта проверка выполняется ядром).

-i, —internal-only

Не вызывать помощник /sbin/mount.ФАЙЛОВАЯ-СИСТЕМА, даже если он существует.

-L, —label МЕТКА

Скопировать раздел, имеющий указанную метку.

-l, —show-labels

Добавляет метки в вывод монтирования. Для этого у mount должно быть разрешение на чтение с дискового устройства (например, root-идентификатор пользователя). Такую метку можно установить для ext2, ext3 и ext4 с помощью утилиты e2label, для XFS с помощью xfs_admin и для reiserfs с помощью reiserfstune.

-M, —move

Переместить поддерево в другое место. Смотрите выше подраздел «Перемещение точки монтирования».

-n, —no-mtab

Смонтировать без записи в /etc/mtab. Это необходимо, например, когда /etc находится в файловой системе, доступной только для чтения.

-N, —namespace ns

Выполнит операцию монтирования в пространстве имён монтирования, указанном ns. ns — это либо PID процесса, запущенного в этом пространстве имён, либо специальный файл, представляющий это пространство имён.

mount переключается на пространство имён mount, когда он читает /etc/fstab, записывает /etc/mtab (или записывает в /run/mount) и вызывает системный вызов mount, в противном случае он выполняется в исходном пространстве имён mount. Это означает, что целевое пространство имён необязательно должно содержать какие-либо библиотеки или другие требования, необходимые для выполнения вызова mount.

Смотрите mount_namespaces для получения дополнительной информации.

-O, —test-opts opts

Ограничивает набор файловых систем, к которым применяется опция -a. В этом отношении он похож на параметр -t, за исключением того, что -O бесполезен без -a. Например, команда:

монтирует все файловые системы, кроме тех, для которых параметр _netdev указан в поле параметров в файле /etc/fstab.

Она отличается от -t тем, что каждый параметр соответствует точно; ведущее «no» в начале одного варианта не отменяет остальных.

Опции -t и -O действуют кумулятивно; то есть команда

монтирует все файловые системы ext2 с параметром _netdev, а не файловые системы, которые либо ext2, либо с указанным параметром _netdev.

-o, —options ОПЦИИ

Использовать указанные параметры монтирования. Аргумент ОПЦИИ представляет собой список, разделённый запятыми. Например:

—options-mode РЕЖИМ

Управляет тем, как комбинировать параметры из fstab/mtab с параметрами из командной строки. РЕЖИМ может быть одним из ignore (игнорирования), append (добавления), prepend (добавления перед) или replace (замены). Например, append означает, что параметры из fstab добавляются к параметрам из командной строки. Значение по умолчанию — prepend — это означает, что параметры командной строки оцениваются после параметров fstab. Обратите внимание, что последний вариант выигрывает, если есть конфликтующие.

—options-source ИСТОЧНИК

Источник опций по умолчанию. ИСТОЧНИК — это список файлов fstab, mtab и disable, разделённых запятыми. disable отключает fstab и mtab и отключает —options-source-force. Значение по умолчанию — fstab,mtab.

—options-source-force

Использовать параметры из fstab/mtab, даже если указаны и устройство, и каталог.

-R, —rbind

Перемонтировать поддерево и все возможные подмонтирования в другом месте (чтобы его содержимое было доступно в обоих местах). Смотрите выше подраздел «Операция привязки bind».

-r, —read-only

Монтирует файловую систему только для чтения. Синоним -o ro.

Обратите внимание, что, в зависимости от типа файловой системы, состояния и поведения ядра, система все ещё может записывать данные на устройство. Например, ext3 и ext4 будут воспроизводить журнал, если файловая система загрязнена. Чтобы предотвратить такой доступ для записи, вы можете смонтировать файловую систему ext3 или ext4 с параметрами монтирования ro,noload или установить само блочное устройство в режим только для чтения, для этого используйте команду blockdev.

-s

Терпит неаккуратные варианты монтирования вместо завершения работы с ошибкой. При этом будут проигнорированы параметры монтирования, не поддерживаемые типом файловой системы. Не все файловые системы поддерживают эту опцию. В настоящее время она поддерживается только помощником монтирования mount.nfs.

—source УСТРОЙСТВО

Если указан только один аргумент для команды монтирования, то этот аргумент может интерпретироваться как цель (точка монтирования) или источник (устройство). Эта опция позволяет вам явно указать, что аргумент является источником монтирования.

—target ДИРЕКТОРИЯ

Если указан только один аргумент для команды монтирования, то этот аргумент может интерпретироваться как цель (точка монтирования) или источник (устройство). Эта опция позволяет вам явно указать, что аргумент является целью монтирования.

—target-prefix ДИРЕКТОРИЯ

Добавляет указанный каталог ко всем целям монтирования. Этот параметр можно использовать для отслеживания fstab, но операции монтирования выполняются в другом месте, например:

монтирует всё из системного fstab в /chroot, все отсутствующие точки монтирования создаются (из-за X-mount.mkdir). Смотрите также —fstab, чтобы использовать альтернативный fstab.

-T, —fstab ПУТЬ

Задаёт альтернативный файл fstab. Если ПУТЬ — это каталог, то файлы в каталоге сортируются с помощью strverscmp; файлы, начинающиеся с "." или без расширения .fstab игнорируются. Опция может быть указана более одного раза. Этот параметр в основном разработан для сценариев initramfs или chroot, где указывается дополнительная конфигурация помимо стандартной конфигурации системы.

Обратите внимание, что mount не передаёт параметр —fstab помощникам /sbin/mount.ТИП, что означает, что альтернативные файлы fstab будут невидимы для помощников. Это не проблема для обычных монтирований, но пользовательские (не root) монтирования всегда требуют fstab для проверки прав пользователя.

-t, —types fstype

Аргумент, следующий за -t, используется для указания типа файловой системы. Типы файловых систем, которые в настоящее время поддерживаются, зависят от работающего ядра. Смотрите /proc/filesystems и /lib/modules/$(uname -r)/kernel/fs для получения полного списка файловых систем. Наиболее распространены ext2, ext3, ext4, xfs, btrfs, vfat, sysfs, proc, nfs и cifs.

Программы mount и umount поддерживают подтипы файловых систем. Подтип определяется суффиксом «.subtype». Например, «fuse.sshfs». Рекомендуется использовать обозначение подтипа вместо добавления префикса к источнику монтирования (например, «sshfs#example.com» является устаревшим).

Если опция -t не указана или указан тип auto, mount попытается угадать желаемый тип. Mount использует библиотеку blkid для определения типа файловой системы; если при этом не появится ничего знакомого, mount попытается прочитать файл /etc/filesystems или, если он не существует, /proc/filesystems. Будут опробованы все перечисленные там типы файловых систем, кроме тех, которые помечены как «nodev» (например, devpts, proc и nfs). Если /etc/filesystems оканчивается строкой с одним *, то mount затем прочитает /proc/filesystems. Во время попытки все типы файловых систем будут смонтированы с опцией монтирования silent.

Создание файла /etc/filesystems может быть полезно для изменения порядка проверки (например, чтобы попробовать vfat перед msdos или ext3 перед ext2) или если вы используете автозагрузчик модуля ядра.

Для параметра -t, а также в записи /etc/fstab можно указать несколько типов, разделённых запятой. Список типов файловых систем для параметра -t может начинаться с префикса no, чтобы указать типы файловых систем, с которыми не следует предпринимать никаких действий. Префикс no не действует, если он указан в записи /etc/fstab.

Префикс no может иметь значение с параметром -a. Например, команда

монтирует все файловые системы, кроме систем типа msdos и smbfs.

Для большинства типов всё, что нужно сделать программе mount, — это выполнить простой системный вызов mount, и никаких подробных знаний о типе файловой системы не требуется. Однако для некоторых типов (таких как nfs, nfs4, cifs, smbfs, ncpfs) необходим специальный код. Файловые системы nfs, nfs4, cifs, smbfs и ncpfs имеют отдельную программу монтирования. Чтобы можно было обрабатывать все типы единообразно, mount будет выполнять программу /sbin/mount.ТИП (если она существует) при вызове с типом ТИП. Поскольку разные версии программы smbmount имеют разные соглашения о вызовах, /sbin/mount.smbfs может быть сценарием оболочки, который устанавливает желаемый вызов.

-U, —uuid uuid

Монтирует раздел с указанным uuid.

-v, —verbose

-w, —rw, —read-write

Монтирует файловую систему для чтения/записи. Чтение-запись — это значение по умолчанию ядра, а монтировании по умолчанию только для чтения выполняется при попытке монтирования, если предыдущий системный вызов монтирования с флагами чтения-записи на защищённых от записи устройствах файловых систем завершился неудачно.

Синоним -o rw.

Обратите внимание, что указание -w в командной строке заставляет mount никогда не пробовать монтирование только для чтения на устройствах защищённых от записи или уже смонтированных файловых системах только для чтения.

-V, —version

Показать информацию о версии и выйти.

-h, —help

Показать текст справки и выйти.

Опции монтирования, не зависящие от файловой системы

Некоторые из этих параметров полезны только тогда, когда они появляются в файле /etc/fstab.

Некоторые из этих параметров могут быть включены или отключены по умолчанию в ядре системы. Чтобы проверить текущую настройку, смотрите параметры в /proc/mounts. Обратите внимание, что файловые системы также имеют параметры монтирования по умолчанию для каждой файловой системы. Например, чтобы посмотреть установленные параметры для файловых систем extN выполните команду вида:

Следующие параметры применяются к любой монтируемой файловой системе (но на самом деле не каждая файловая система учитывает их — например, параметр sync сегодня действует только для ext2, ext3, ext4, fat, vfat, ufs и xfs):

async

Все операции ввода-вывода в файловую систему должны выполняться асинхронно. (Смотрите также параметр sync.)

atime

Не использовать функцию noatime, поэтому время доступа к inode контролируется настройками ядра по умолчанию. Смотрите также описание параметров монтирования relatime и strictatime.

noatime

Не обновлять время доступа к индексным дескрипторам в этой файловой системе. Это работает для всех типов inode (также для каталогов), поэтому подразумевает nodiratime.

auto

Может быть смонтирован при запуске mount с опцией -a.

noauto

Может быть смонтирован только явно (т.е. опция -a не приведёт к монтированию файловой системы).

context=КОНТЕКСТ, fscontext=КОНТЕКСТ, defcontext=КОНТЕКСТ и rootcontext=КОНТЕКСТ

Параметр context= полезен при монтировании файловых систем, которые не поддерживают расширенные атрибуты, таких как дискета или жёсткий диск, отформатированные с помощью VFAT, или системы, которые обычно не работают под SELinux, например, отформатированный в ext3 или ext4 диск из рабочей станции не-SELinux. Вы также можете использовать context= для файловых систем, которым вы не доверяете, например, для дискет. Это также помогает в совместимости с файловыми системами, поддерживающими xattr, в более ранних версиях ядра 2.4.<x>. Даже там, где поддерживаются xattrs, вы можете сэкономить время, не помечая каждый файл, назначив всему диску один контекст безопасности.

Обычно для съёмных носителей используется параметр «context="system_u:object_r:removable_t"».

Два других параметра — это fscontext= и defcontext=, они оба исключают параметр context=. Это означает, что вы можете использовать fscontext и defcontext друг с другом, но ни один из них не может использоваться с context.

Параметр fscontext= работает для всех файловых систем, независимо от их поддержки xattr. Опция fscontext устанавливает общую метку файловой системы для определённого контекста безопасности. Эта метка файловой системы отделена от отдельных меток файлов. Она представляет всю файловую систему для определённых видов проверок разрешений, например, во время монтирования или создания файла. Индивидуальные метки файлов по-прежнему берутся из xattrs самих файлов. Параметр context фактически устанавливает совокупный контекст, который предоставляет fscontext, в дополнение к предоставлению той же метки для отдельных файлов.

Вы можете установить контекст безопасности по умолчанию для немаркированных файлов, используя опцию defcontext=. Это переопределяет значение, установленное для немаркированных файлов в политике, и требует файловой системы, поддерживающей маркировку xattr.

Параметр rootcontext= позволяет вам явно пометить корневой индексный узел монтируемой файловой системы до того, как эта файловая система или индексный узел станет видимым для пользовательского пространства. Это оказалось полезным для таких вещей, как Linux без сохранения состояния.

Обратите внимание, что ядро отклоняет любой запрос перемонтирования, который включает параметр контекста, даже если он не изменился по сравнению с текущим контекстом.

Предупреждение: значение context может содержать запятые, и в этом случае значение должно быть правильно заключено в кавычки, иначе mount интерпретирует запятую как разделитель между параметрами монтирования. Не забывайте, что оболочка удаляет кавычки, и поэтому требуется двойное цитирование. Например:

Больше подробностей смотрите в справке по selinux.

defaults

Использовать параметры по умолчанию: rw, suid, dev, exec, auto, nouser и async.

Обратите внимание, что реальный набор всех параметров монтирования по умолчанию зависит от типа ядра и файловой системы.

dev

Интерпретировать специальные символьные или блочные устройства в файловой системе.

nodev

Не интерпретировать специальные символьные или блочные устройства в файловой системе.

diratime

Обновлять время доступа inode к каталогу в этой файловой системе. Это значение по умолчанию. (Этот параметр игнорируется, если установлено noatime.)

nodiratime

Не обновлять время доступа inode к каталогу в этой файловой системе. (Этот параметр подразумевается, если установлен noatime.)

dirsync

Все обновления каталогов в файловой системе должны выполняться синхронно. Это влияет на следующие системные вызовы: creat, link, unlink, symlink, mkdir, rmdir, mknod и rename.

exec

Разрешить выполнение двоичных файлов.

noexec

Не разрешать прямое выполнение любых двоичных файлов в смонтированной файловой системе.

group

Разрешить обычному пользователю монтировать файловую систему, если одна из групп этого пользователя соответствует группе устройства. Этот параметр подразумевает параметры nosuid и nodev (если они не переопределены последующими параметрами в строке опций group,dev,suid).

iversion

Каждый раз, когда изменяется индексный дескриптор, поле i_version будет увеличиваться.

noiversion

Не увеличивать поле иноды i_version.

mand

Разрешить обязательную блокировку этой файловой системы. Смотрите fcntl.

nomand

Не разрешать принудительные блокировки этой файловой системы.

_netdev

Файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).

nofail

Не сообщать об ошибках для этого устройства, если оно не существует.

relatime

Обновить время доступа к inode относительно времени модификации или изменения. Время доступа обновляется, только если предыдущее время доступа было раньше, чем текущее время модификации или изменения.

(Подобно noatime, но не нарушает работу mutt или других приложений, которым необходимо знать, был ли файл прочитан с момента последнего изменения.)

Начиная с Linux 2.6.30, ядро по умолчанию использует поведение, обеспечиваемое этой опцией (если не указано noatime), а опция strictatime требуется для получения традиционной семантики. Кроме того, начиная с Linux 2.6.30, время последнего доступа к файлу всегда обновляется, если ему более 1 дня.

norelatime

Не использовать функцию relatime. Смотрите также вариант монтирования strictatime.

strictatime

Позволяет явно запрашивать полные обновления времени. Это позволяет ядру по умолчанию использовать relatime или noatime, но все же позволяет пользовательскому пространству переопределять его. Для получения дополнительных сведений о параметрах монтирования системы по умолчанию смотрите /proc/mounts.

nostrictatime

Использовать поведение ядра по умолчанию для обновления времени доступа inode.

lazytime

Обновлять только время (atime, mtime, ctime) версии файловых inode в памяти.

Эта опция монтирования значительно сокращает количество операций записи в таблицу inode для рабочих нагрузок, которые часто выполняют произвольную запись в заранее выделенные файлы.

Временные метки на диске обновляются только в следующих случаях:

  • необходимо обновить inode для некоторых изменений, не связанных с временными метками файла
  • приложение использует fsync, syncfs или sync
  • неудалённый inode убирается из памяти
  • с момента записи i-node на диск прошло более 24 часов.

nolazytime

Не использовать функцию lazytime.

suid

Учитывать биты set-user-ID и set-group-ID или возможности файлов при выполнении программ из этой файловой системы.

nosuid

Не соблюдать биты set-user-ID и set-group-ID или возможности файла при выполнении программ из этой файловой системы.

silent

Включить флаг silent.

loud

Выключить флаг silent.

owner

Разрешить обычному пользователю монтировать файловую систему, если этот пользователь является владельцем устройства. Этот параметр подразумевает параметры nosuid и nodev (если они не отменены последующими параметрами, как в строке параметров owner,dev,suid).

remount

Попытка перемонтировать уже смонтированную файловую систему. Обычно это используется для изменения флагов монтирования файловой системы, особенно для того, чтобы сделать файловую систему доступной для записи. Это не меняет устройство или точку монтирования.

Операция перемонтирования вместе с флагом bind имеет особую семантику. Смотрите выше подраздел «Операция привязки bind».

Функциональность повторного монтирования соответствует стандартному способу работы команды mount с параметрами из fstab. Это означает, что mount не читает fstab (или mtab) только тогда, когда указаны и устройство, и каталог.

После этого вызова все старые параметры монтирования заменяются, а произвольный материал из fstab (или mtab) игнорируется, за исключением параметра loop=, который генерируется внутри и поддерживается командой mount.

После этого вызова mount читает fstab и объединяет эти параметры с параметрами из командной строки (-o). Если в fstab не найдена точка монтирования, то разрешено перемонтирование с неуказанным источником.

mount позволяет использовать —all для перемонтирования всех уже смонтированных файловых систем, которые соответствуют указанному фильтру (-O и -t). Например:

перемонтирует все уже смонтированные файловые системы vfat в режиме только для чтения. Каждая из файловых систем перемонтируется семантикой «mount -o remount,ro /dir». Это означает, что команда mount считывает fstab или mtab и объединяет эти параметры с параметрами из командной строки.

ro

Смонтировать файловую систему только для чтения.

rw

Смонтировать файловую систему для чтения-записи.

sync

Все операции ввода-вывода в файловую систему должны выполняться синхронно. В случае носителей с ограниченным числом циклов записи (например, некоторые флэш-накопители) синхронизация может привести к сокращению жизненного цикла.

user

Разрешить обычному пользователю монтировать файловую систему. Имя монтирующего пользователя записывается в файл mtab (или в частный файл libmount в /run/mount в системах без обычного mtab), чтобы этот же пользователь мог снова размонтировать файловую систему. Этот параметр подразумевает параметры noexec, nosuid и nodev (если они не отменены последующими параметрами, как в строке параметров user,exec,dev,suid).

nouser

Запретить обычному пользователю монтировать файловую систему. Это значение по умолчанию; поэтому данную опцию можно не указывать.

users

Разрешить любому пользователю монтировать и размонтировать файловую систему, даже если её смонтировал другой обычный пользователь. Этот параметр подразумевает параметры noexec, nosuid и nodev (если они не отменены последующими параметрами, как в строке параметров users,exec,dev,suid).

X-*

Все параметры с префиксом «X-» интерпретируются как комментарии или как параметры конкретного приложения в пользовательском пространстве. Эти параметры не хранятся в пользовательском пространстве (например, в файле mtab), не отправляются в помощники mount.ТИП или в системный вызов mount. Предлагаемый формат — X-appname.option.

x-*

То же, что и параметры X-*, но постоянно хранятся в пользовательском пространстве. Это означает, что параметры также доступны для размонтирования или других операций. Обратите внимание, что поддерживать параметры монтирования в пользовательском пространстве сложно, потому что необходимо использовать инструменты на основе libmount, и нет гарантии, что параметры будут всегда доступны (например, после операции монтирования перемещения или в неразделенном пространстве имён).

Обратите внимание, что до util-linux v2.30 параметры x-* не поддерживались libmount и не хранились в пространстве пользователя (функциональность была такой же, как и для X-* сейчас), но из-за растущего числа вариантов использования (в initrd, systemd и т. д.) функциональность была расширена, чтобы можно было использовать существующие конфигурации fstab без изменений.

X-mount.mkdir[=РЕЖИМ]

Разрешить создать целевой каталог (точку монтирования), если она ещё не существует. Необязательный аргумент РЕЖИМ определяет режим доступа к файловой системе, используемый для mkdir, в восьмеричной системе счисления. Режим по умолчанию — 0755. Эта функция поддерживается только для пользователей root или при монтировании без прав suid. Опция также поддерживается как x-mount.mkdir, эта нотация устарела с версии 2.30.

Опции монтирования, специфичные для файловых систем

В этом разделе перечислены параметры, относящиеся к конкретным файловым системам.

Следующие параметры применимы только к определенным файловым системам. Все параметры следуют за флагом -o.

Какие опции поддерживаются немного зависит от работающего ядра.

Файловые системы ext4, ext3, ext2, ext

ext — это сложное расширение файловой системы minix. Она была полностью заменена второй версией расширенной файловой системы (ext2) и была удалён из ядра (в 2.1.21).

ext2 — это высокопроизводительная дисковая файловая система, используемая Linux для фиксированных дисков, а также съёмных носителей. Вторая расширенная файловая система была разработана как расширение расширенной файловой системы (ext).

ext3 — это журналируемая версия файловой системы ext2. Легко переключаться между ext2 и ext3.

ext4 — это набор обновлений для ext3, включая существенные улучшения производительности и надёжности, а также значительное увеличение ограничений на размер тома, файла и каталога.

Вторая, третья и четвёртая расширенные файловые системы, или, как их обычно называют, ext2, ext3 и ext4 — это файловые системы Linux, которые исторически были файловой системой по умолчанию для многих дистрибутивов Linux. Это файловые системы общего назначения, которые были разработаны для обеспечения расширяемости и обратной совместимости. В частности, файловые системы, ранее предназначенные для использования с файловыми системами ext2 и ext3, могут быть смонтированы с помощью драйвера файловой системы ext4, и действительно, во многих современных дистрибутивах Linux драйвер файловой системы ext4 настроен для обработки запросов монтирования для файловых систем ext2 и ext3.

Опции монтирования для ext2

Файловая система ext2 — это стандартная файловая система Linux. Начиная с Linux 2.5.46, для большинства параметров монтирования значение по умолчанию определяется суперблоком файловой системы. Установить их можно с помощью tune2fs.

acl|noacl

Поддержка списков контроля доступа POSIX (или нет). Смотрите страницу руководства по acl.

bsddf|minixdf

Задаёт поведение для системного вызова statfs. Поведение minixdf состоит в том, чтобы вернуть в поле f_blocks общее количество блоков файловой системы, в то время как поведение bsddf (которое является по умолчанию) заключается в вычитании служебных блоков, используемых файловой системой ext2 и недоступных для хранения файлов. Таким образом

(Обратите внимание, что в этом примере показано, что можно добавить параметры командной строки к параметрам, указанным в /etc/fstab.)

check=none или nocheck

Во время монтирования проверка не выполняется. Это значение по умолчанию. Это быстро. Целесообразно время от времени вызывать e2fsck, например во время загрузки. Поведение не по умолчанию не поддерживается (параметры check=normal и check=strict были удалены). Обратите внимание, что эти параметры монтирования не должны поддерживаться, если драйвер ядра ext4 используется для файловых систем ext2 и ext3.

debug

Печать отладочной информации при каждом (повторном) монтировании.

Определяет поведение при обнаружении ошибки. (Либо игнорировать ошибки и просто отметить файловую систему как ошибочную и продолжить (continue), либо перемонтировать файловую систему только для чтения (remount-ro), либо паниковать и остановить систему (panic)) Значение по умолчанию устанавливается в суперблоке файловой системы и может быть изменено с помощью tune2fs.

grpid|bsdgroups и nogrpid|sysvgroups

Эти параметры определяют, какой идентификатор группы получает вновь созданный файл. Когда установлен grpid, он принимает идентификатор группы каталога, в котором он создан; в противном случае (по умолчанию) он принимает fsgid текущего процесса, если для каталога не установлен бит setgid, и в этом случае он берет gid из родительского каталога, а также получает установленный бит setgid, если это сам каталог.

grpquota|noquota|quota|usrquota

Параметр монтирования usrquota (то же, что и quota) включает поддержку пользовательских квот в файловой системе. grpquota включает поддержку групповых квот. Вам нужны утилиты quota, чтобы фактически включить систему квот и управлять ею.

nouid32

Отключает 32-битные UID и GID. Это сделано для взаимодействия со старыми ядрами, которые хранят и ожидают только 16-битные значения.

oldalloc или orlov

Использовать старый распределитель или распределитель Орлова для новых inodes. По умолчанию — orlov.

resgid=n и resuid=n

Файловая система ext2 резервирует определённый процент доступного пространства (по умолчанию 5%, смотрите mke2fs(8) и tune2fs(8)). Эти параметры определяют, кто может использовать зарезервированные блоки. (Примерно: тот, кто имеет указанный uid или принадлежит к указанной группе.)

sb=n

Вместо использования обычного суперблока использовать альтернативный суперблок, указанный в n. Эта опция обычно используется, когда повреждён первичный суперблок. Расположение суперблоков резервного копирования зависит от размера блока файловой системы, количества блоков в группе и таких функций, как sparse_super.

Дополнительные резервные суперблоки могут быть определены с помощью программы mke2fs с использованием опции -n для вывода на печать, где существуют суперблоки, предполагая, что mke2fs снабжён аргументами, которые соответствуют структуре файловой системы (например, размер блока, количество блоков на группу, sparse_super и т. д.) .

Номер блока здесь использует 1 k единиц. Таким образом, если вы хотите использовать логический блок 32768 в файловой системе с 4k блоками, используйте «sb=131072».

user_xattr|nouser_xattr

Поддержка «пользовательских» расширенных атрибутов (или нет).

Опции монтирования для ext3

Файловая система ext3 — это версия файловой системы ext2, в которую добавлено ведение журнала. Она поддерживает те же параметры, что и ext2, а также следующие дополнения:

journal_dev=devnum/journal_path=ПУТЬ

Когда старший/младший номер внешнего устройства журнала изменились, эти параметры позволяют пользователю указать новое местоположение журнала. Журнальное устройство идентифицируется либо по его новым старшим/младшим номерам, закодированным в devnum, либо по пути к устройству.

norecovery/noload

Не загружать журнал при монтировании. Обратите внимание: если файловая система не была размонтирована чисто, пропуск воспроизведения журнала приведёт к тому, что файловая система будет содержать несогласованности, которые могут привести к любому количеству проблем.

Задаёт режим ведения журнала для данных файла. Метаданные всегда журналируются. Чтобы использовать в корневой файловой системе режимы, отличные от ordered, передайте режим ядру в качестве параметра загрузки, например rootflags=data=journal.

journal

Все данные фиксируются в журнале до записи в основную файловую систему.

ordered

Это режим «по умолчанию». Все данные принудительно передаются непосредственно в основную файловую систему до того, как их метаданные будут сохранены в журнале.

writeback

Порядок данных не сохраняется — данные могут быть записаны в основную файловую систему после того, как её метаданные были зафиксированы в журнале. По слухам, это самый высокопроизводительный вариант. Он гарантирует целостность внутренней файловой системы, однако может позволить старым данным появляться в файлах после сбоя и восстановления журнала.

data_err=ignore

Просто печатать сообщение об ошибке, если ошибка происходит в буфере данных файла в режиме ordered.

data_err=abort

Прервать журнал, если в буфере данных файла в режиме ordered возникла ошибка.

barrier=0 / barrier=1

Это отключает/включает использование барьеров записи в коде jbd. barrier=0 отключает, barrier=1 включает (установлен по умолчанию). Для этого также требуется стек ввода-вывода, который может поддерживать барьеры, и если jbd получит ошибку при записи барьера, он снова отключит барьеры с предупреждением. Барьеры записи обеспечивают надлежащий порядок журнальных коммитов на диске, что делает использование кэшей записи на энергозависимый диск безопасным при некотором снижении производительности. Если ваши диски так или иначе имеют резервное питание от батареи, отключение барьеров может безопасно повысить производительность.

commit=nrsec

Начать фиксацию журнала каждые nrsec секунд. Значение по умолчанию — 5 секунд. Ноль означает по умолчанию.

user_xattr

Включает расширенные атрибуты пользователя. Смотрите страницу руководства attr(5).

Помимо старой системы квот (как в ext2, jqfmt=vfsold или квота версии 1) ext3 также поддерживает журналируемые квоты (квота версии 2). jqfmt=vfsv0 или jqfmt=vfsv1 включает журналируемые квоты. У журналируемых квот есть то преимущество, что даже после сбоя проверка квоты не требуется. Когда функция файловой системы квот включена, журналируемые квоты используются автоматически, и этот параметр монтирования игнорируется.

usrjquota=aquota.user|grpjquota=aquota.group

Для журналируемых квот (jqfmt=vfsv0 или jqfmt=vfsv1) параметры монтирования srjquota=aquota.user и grpjquota=aquota.group необходимы, чтобы указать системе квот, какие файлы базы данных квот использовать. Когда функция файловой системы квот включена, журналируемые квоты используются автоматически, и этот параметр монтирования игнорируется.

Опции монтирования для ext4

Файловая система ext4 — это продвинутый уровень файловой системы ext3, который включает улучшения масштабируемости и надёжности для поддержки больших файловых систем.

Параметры journal_dev, journal_path, norecovery, noload, data, commit, orlov, oldalloc, [no]user_xattr, [no]acl, bsddf, minixdf, debug, errors, data_err, grpid, bsdgroups, nogrpid, sysvgroups, resgid, resuid, sb, quota, noquota, nouid32, grpquota, usrquota, usrjquota, grpjquota и jqfmt обратно совместимы с ext3 или ext2.

journal_checksum | nojournal_checksum

Параметр journal_checksum включает контрольную сумму проводок журнала. Это позволит коду восстановления в e2fsck и ядру обнаружить повреждение ядра. Это совместимое изменение, оно будет проигнорировано старыми ядрами.

journal_async_commit

Блок фиксации может быть записан на диск, не дожидаясь блоков дескриптора. Если включено, старые ядра не могут смонтировать устройство. Это включит «journal_checksum» внутри.

barrier=0 / barrier=1 / barrier / nobarrier

Эти параметры монтирования имеют тот же эффект, что и в ext3. Опции монтирования «barrier» и «nobarrier» добавлены для согласованности с другими вариантами монтирования ext4.

Файловая система ext4 по умолчанию включает барьеры записи.

inode_readahead_blks=n

Этот параметр настройки контролирует максимальное количество блоков таблицы inode, которые алгоритм опережающего чтения таблицы inode ext4 будет предварительно считывать в буферный кеш. Значение должно быть степенью 2. Значение по умолчанию — 32 блока.

stripe=n

Количество блоков файловой системы, которые mballoc попытается использовать для размера выделения и выравнивания. Для систем RAID5/6 это должен быть номер размер блока дисковых данных * RAID в блоках файловой системы.

delalloc

Отсрочка выделения блока до времени списания.

nodelalloc

Отключить отложенное выделение. Блоки выделяются при копировании данных от пользователя в кеш страницы.

max_batch_time=usec

Максимальное время, в течение которого ext4 должна ожидать пакетной обработки дополнительных операций файловой системы вместе с синхронной операцией записи. Поскольку синхронная операция записи будет принудительно выполнить фиксацию, а затем дожидаться завершения ввода-вывода, это не требует больших затрат и может быть огромным выигрышем в пропускной способности, мы ждём небольшое количество времени, чтобы увидеть, есть ли другие транзакции, которые могут совмещаться с синхронной записью. Используемый алгоритм предназначен для автоматической настройки скорости диска путём измерения количества времени (в среднем), которое требуется для завершения фиксации транзакции. Назовите это время «временем фиксации». Если время выполнения транзакции меньше, чем время фиксации, ext4 попытается засыпать на время фиксации, чтобы увидеть, присоединятся ли к транзакции другие операции. Время фиксации ограничено max_batch_time, которое по умолчанию составляет 15000 мкс (15 мс). Эту оптимизацию можно полностью отключить, установив max_batch_time равным 0.

min_batch_time=usec

Этот параметр устанавливает время фиксации (как описано выше) как минимум min_batch_time. По умолчанию это ноль микросекунд. Увеличение этого параметра может улучшить пропускную способность многопоточных синхронных рабочих нагрузок на очень быстрых дисках за счёт увеличения задержки.

journal_ioprio=prio

Приоритет ввода-вывода (от 0 до 7, где 0 — наивысший приоритет), который следует использовать для операций ввода-вывода, отправленных kjournald2 во время операции фиксации. По умолчанию это 3, что является немного более высоким приоритетом, чем приоритет ввода-вывода по умолчанию.

abort

Смоделирует эффекты вызова ext4_abort() в целях отладки. Обычно это используется при перемонтировании уже смонтированной файловой системы.

auto_da_alloc|noauto_da_alloc

Многие плохие приложения не используют fsync() при замене существующих файлов с помощью таких шаблонов, как

Если auto_da_alloc включен, ext4 обнаружит шаблоны replace-via-rename и replace-via-truncate и сделает так, что любые отсроченные блоки выделялись таким образом, чтобы при следующей фиксации журнала в дефолтном режиме data=ordered блоки данных нового файла будут принудительно записаны на диск до того, как будет зафиксирована операция rename(). Это обеспечивает примерно тот же уровень гарантий, что и ext3, и позволяет избежать проблемы «нулевой длины», которая может возникнуть при сбое системы до того, как блоки отложенного распределения будут перенесены на диск.

noinit_itable

Не инициализировать никакие неинициализированные блоки таблицы inode в фоновом режиме. Эта функция может использоваться установочными компакт-дисками, чтобы процесс установки завершился как можно быстрее; тогда процесс инициализации таблицы inode будет отложен до следующего монтирования файловой системы.

init_itable=n

Код lazy itable инициализации будет ждать в n раз больше миллисекунд, которые потребовались для обнуления таблицы inode предыдущей группы блоков. Это сводит к минимуму влияние на производительность системы при инициализации таблицы inode файловой системы.

discard/nodiscard

Определяет, должна ли ext4 выдавать команды discard/TRIM базовому блочному устройству при освобождении блоков. Это полезно для устройств SSD и LUN с разреженным/тонким выделением ресурсов, но по умолчанию отключено, пока не будет проведено достаточное тестирование.

block_validity/noblock_validity

Эта опция включает/отключает встроенную функцию ядра для отслеживания блоков метаданных файловой системы во внутренних структурах данных. Это позволяет многоблочному распределителю и другим подпрограммам быстро находить экстенты, которые могут перекрываться с блоками метаданных файловой системы. Этот параметр предназначен для отладки и, поскольку он отрицательно влияет на производительность, по умолчанию отключён.

dioread_lock/dioread_nolock

Определяет, следует ли ext4 использовать блокировку чтения DIO. Если указана опция dioread_nolock, ext4 выделит неинициализированный экстент перед записью в буфер и преобразует экстент в инициализированный после завершения ввода-вывода. Этот подход позволяет коду ext4 избегать использования мьютекса inode, что улучшает масштабируемость на высокоскоростных хранилищах. Однако это не работает с журналированием данных, и параметр dioread_nolock будет проигнорирован с предупреждением ядра. Обратите внимание, что путь кода dioread_nolock используется только для файлов на основе экстентов. Из-за ограничений, содержащихся в этих параметрах, он по умолчанию отключён (например, dioread_lock).

max_dir_size_kb=n

Это ограничивает размер каталогов, так что любая попытка расширить их сверх указанного предела в килобайтах вызовет ошибку ENOSPC. Это полезно в средах с ограничением памяти, где очень большой каталог может вызвать серьёзные проблемы с производительностью или даже спровоцировать убийцу Out Of Memory. (Например, если доступно только 512 МБ памяти, каталог 176 МБ может серьёзно ограничить стиль системы.)

i_version

Включить поддержку 64-битной версии inode. По умолчанию этот параметр отключён.

nombcache

Эта опция отключает использование mbcache для расширенной дедупликации атрибутов. В системах, где расширенные атрибуты редко или никогда не используются совместно между файлами, использование mbcache для дедупликации добавляет ненужные вычислительные затраты.

prjquota

Параметр монтирования prjquota включает поддержку квот проекта в файловой системе. Вам нужны утилиты quota, чтобы фактически включить систему квот и управлять ею. Для этой опции монтирования требуется функция файловой системы project.

АТРИБУТЫ ФАЙЛОВ

Файловые системы ext2, ext3 и ext4 поддерживают установку следующих атрибутов файлов в системах Linux с помощью утилиты chattr(1):

  • a — только добавить
  • A — без обновлений atime
  • d — без дампа
  • D — синхронное обновление каталога
  • i — неизменный
  • S — синхронные обновления
  • u — неудаляемый

В дополнение, файловые системы ext3 и ext4 поддерживают следующий флаг:

  • j — журналирование данных

Наконец, файловая система ext4 также поддерживает следующий флаг:

  • e — расширенные атрибуты

Описание этих флагов атрибутов смотрите на странице руководства chattr(1).

Опции монтирования для ntfs

NTFS — заменяет файловые системы FAT в Microsoft Window (VFAT, FAT32). Она имеет улучшения надёжности, производительности и использования пространства, а также такие функции, как списки контроля доступа, ведение журнала, шифрование и т. д.

iocharset=name

Набор символов для использования при возврате имён файлов. В отличие от VFAT, NTFS подавляет имена, содержащие неконвертируемые символы. Не рекомендуется для использования.

nls=name

Новое имя для опции, ранее называвшейся iocharset.

utf8

Использовать UTF-8 для преобразования имён файлов.

При 0 (или «no» или «false») не использовать escape-последовательности для неизвестных символов Unicode. При 1 (или «yes» или «true») или 2 использовать 4-байтовые escape-последовательности в стиле vfat, начинающиеся с «:». Здесь 2 задают обратную кодировку, а 1 — двоичную кодировку с обратным байтом.

posix=[0|1]

Если включено (posix=1), файловая система различает верхний и нижний регистр. Псевдонимы 8.3 представлены как жёсткие ссылки, а не подавляются. Эта опция устарела.

uid=value, gid=value and umask=value

Установит права доступа к файлу в файловой системе. Значение umask указывается в восьмеричном формате. По умолчанию файлы принадлежат пользователю root и никому не доступны для чтения.

Опции монтирования для fat

(Примечание: fat — это не отдельная файловая система, а общая часть файловых систем msdos, umsdos и vfat.)

vfat — это расширенная файловая система FAT, используемая Microsoft Windows95 и Windows NT. vfat добавляет возможность использовать длинные имена файлов в файловой системе MSDOS.

msdos — это файловая система, используемая DOS, Windows и некоторыми компьютерами OS/2. Имена файлов msdos не могут быть длиннее 8 символов, за которыми следует необязательная точка и 3-символьное расширение.

umsdos — это расширенная файловая система DOS, используемая Linux. Он добавляет возможность для длинных имён файлов, UID/GID, разрешений POSIX и специальных файлов (устройств, именованных каналов и т. д.) в файловой системе DOS, не жертвуя совместимостью с DOS.

Установит размер блока (по умолчанию 512). Эта опция устарела.

uid=ЗНАЧЕНИЕ и gid=ЗНАЧЕНИЕ

Установит владельца и группу всех файлов. (По умолчанию: UID и GID текущего процесса.)

umask=ЗНАЧЕНИЕ

Установит umask (битовую маску разрешений, которых нет). По умолчанию используется маска umask текущего процесса. ЗНАЧЕНИЕ даётся в восьмеричном формате.

dmask=ЗНАЧЕНИЕ

Установит umask только для каталогов. По умолчанию используется маска umask текущего процесса. ЗНАЧЕНИЕ даётся в восьмеричном формате.

fmask=ЗНАЧЕНИЕ

Установит umask только для обычных файлов. По умолчанию используется маска umask текущего процесса. ЗНАЧЕНИЕ даётся в восьмеричном формате.

allow_utime=ЗНАЧЕНИЕ

Эта опция управляет проверкой разрешений mtime/atime.

20

Если текущий процесс находится в группе идентификаторов группы файлов, вы можете изменить метку времени.

2

Другие пользователи могут изменить метку времени.

По умолчанию устанавливается из опции «dmask». (Если каталог доступен для записи, также разрешено использование utime(2). Т.е.

Обычно utime(2) проверяет, является ли текущий процесс владельцем файла или что у него есть возможность CAP_FOWNER. Но файловые системы FAT не имеют UID/GID на диске, поэтому обычная проверка слишком негибкая. С помощью этой опции можно её расслабить.

check=ЗНАЧЕНИЕ

Можно выбрать три разных уровня разборчивости:

r[elaxed]

Допускаются верхний и нижний регистр и эквивалентны, части длинного имени усекаются (например, verylongname.foobar становится verylong.foo), ведущие и встроенные пробелы допускаются в каждой части имени (имя и расширение).

n[ormal]

Подобно «relaxed», но многие специальные символы (*, ?, <, пробелы и т. д.) отклоняются. Это значение по умолчанию.

s[trict]

Подобно «normal», но имена, содержащие длинные части или специальные символы, которые иногда используются в Linux, но не принимаются MS-DOS (+, = и т. д.), отклоняются.

codepage=ЗНАЧЕНИЕ

Устанавливает кодовую страницу для преобразования в символы короткого имени в файловых системах FAT и VFAT. По умолчанию используется кодовая страница 437.

conv=РЕЖИМ

Эта опция устарела и может не работать или игнорироваться.

cvf_format=МОДУЛЬ

Заставляет драйвер использовать модуль CVF (сжатый файл тома) cvf_module вместо автоопределения. Если ядро поддерживает kmod, опция cvf_format=xxx также управляет загрузкой модуля CVF по запросу. Эта опция устарел.

cvf_option=option

Опция передана модулю CVF. Эта опция устарел.

debug

Включит флаг debug. Будет напечатана строка версии и список параметров файловой системы (эти данные также распечатываются, если параметры кажутся несовместимыми).

discard

Если установлено, то при освобождении блоков блочному устройству будут выдаваться команды discard/TRIM. Это полезно для устройств SSD и LUN с разреженным/тонким выделением ресурсов.

dos1xfloppy

Если установлено, использует резервную конфигурацию блока параметров BIOS по умолчанию, определяемую размером резервного устройства. Эти статические параметры соответствуют значениям по умолчанию, принятым в DOS 1.x для дискет 160, 180, 320 и 360 КиБ и их образов.

Укажит поведение FAT при критических ошибках: panic (паника), continue (продолжение без каких-либо действий) или remount-ro (перемонтирование раздела в режиме только для чтения) (поведение по умолчанию).

Указывает битность 12, 16 или 32 fat. Это отменяет процедуру автоматического определения типа FAT. Используйте с осторожностью!

iocharset=ЗНАЧЕНИЕ

Набор символов, используемый для преобразования 8-битных символов в 16-битные символы Unicode. По умолчанию iso8859-1. Длинные имена файлов хранятся на диске в формате Unicode.

Включите это, только если вы хотите экспортировать файловую систему FAT через NFS.

stale_rw

Эта опция поддерживает индекс (кеш) индексных дескрипторов каталогов, который используется кодом, связанным с nfs, для улучшения поиска. Поддерживаются полные файловые операции (чтение/запись) через NFS, но с вытеснением кеша на сервере NFS это может привести к ложным ошибкам ESTALE.

nostale_ro

Эта опция основывает номер inode и дескриптор файла на месте на диске файла в записи каталога FAT. Это гарантирует, что ESTALE не будет возвращён после удаления файла из кэша inode. Однако это означает, что такие операции, как переименование, создание и разъединение, могут привести к тому, что дескрипторы файлов, которые ранее указывали на один файл, станут указывать на другой файл, что может привести к повреждению данных. По этой причине эта опция также монтирует файловую систему только для чтения.

Для обеспечения обратной совместимости также можно использовать «-o nfs» по умолчанию — stale_rw.

tz=UTC

Этот параметр отключает преобразование меток времени между местным временем (используемым Windows в FAT) и временем UTC (которое Linux использует для внутренних целей). Это особенно полезно при установке устройств (например, цифровых фотоаппаратов), которые настроены на всемирное координированное время, чтобы избежать ошибок местного времени.

time_offset=МИНУТЫ

Установит смещение для преобразования меток времени из местного времени, используемого FAT, в UTC. То есть минуты будут вычитаться из каждой временной метки, чтобы преобразовать её в UTC, используемое внутри Linux. Это полезно, когда часовой пояс, установленный в ядре с помощью settimeofday(2), не совпадает с часовым поясом, используемым файловой системой. Обратите внимание, что эта опция по-прежнему не обеспечивает правильные отметки времени во всех случаях при наличии летнего времени — летнее время будет отличаться на один час.

quiet

Включит флаг quiet. Попытки открыть файлы chown или chmod не возвращают ошибок, хотя и терпят неудачу. Используйте с осторожностью!

rodir

FAT имеет атрибут ATTR_RO (только для чтения). В Windows ATTR_RO каталога просто игнорируется и используется только приложениями в качестве флага (например, он установлен для настраиваемой папки).

Если вы хотите использовать ATTR_RO как флаг только для чтения даже для каталога, установите эту опцию.

showexec

Если установлено, биты разрешения на выполнение файла будут разрешены только в том случае, если часть расширения имени — .EXE, .COM или .BAT. По умолчанию не установлено.

sys_immutable

Если установлен, атрибут ATTR_SYS в FAT обрабатывается как флаг IMMUTABLE в Linux. По умолчанию не установлено.

flush

Если установлено, файловая система попытается сбросить данные на диск раньше, чем обычно. По умолчанию не установлено.

usefree

Использует значение «свободных кластеров», хранящееся в FSINFO. Он будет использоваться для определения количества свободных кластеров без сканирования диска. Но он не используется по умолчанию, потому что недавние версии Windows в некоторых случаях не обновляют его правильно. Если вы уверены, что «свободные кластеры» в FSINFO верны, с помощью этой опции вы можете избежать сканирования диска.

dots, nodots, dotsOK=[yes|no]

Различные ошибочные попытки навязать соглашения Unix или DOS файловой системе FAT.

Опции монтирования для exfat

exFAT — это простая файловая система, созданная Microsoft. Она предназначена для замены FAT32, устраняя некоторые её ограничения. exFAT — это стандартная файловая система для карт памяти SDXC.

umask=ЗНАЧЕНИЕ

Установит umask (битовую маску разрешений, которые отсутствуют, в восьмеричном формате). По умолчанию — 0.

dmask=ЗНАЧЕНИЕ

Установит umask только для каталогов.

fmask=ЗНАЧЕНИЕ

Установит umask только для файлов.

uid=n

Установите владельца для всех файлов и каталогов. По умолчанию это владелец текущего процесса.

gid=n

Установит группу для всех файлов и каталогов. По умолчанию это группа текущего процесса.

ro

Смонтировать файловую систему в режиме только для чтения.

noatime

Не обновлять время доступа при чтении файла.

Опции монтирования для umsdos

Смотрите опции монтирования для msdos. Опция dotsOK явно уничтожается umsdos.

Опции монтирования для msdos

Смотрите опции монтирования для fat. Если файловая система msdos обнаруживает несоответствие, она сообщает об ошибке и устанавливает файловую систему только для чтения. Файловую систему можно снова сделать доступной для записи, перемонтировав её.

Опции монтирования для vfat

vfat — это расширенная файловая система FAT, используемая Microsoft Windows95 и Windows NT. vfat добавляет возможность использовать длинные имена файлов в файловой системе MSDOS.

В первую очередь vfat поддерживает все опции монтирования fat. Опция dotsOK явно уничтожается vfat. Кроме того, есть следующие опции:

uni_xlate

Преобразует необработанные символы Юникода в специальные экранированные последовательности. Это позволяет создавать резервные копии и восстанавливать имена файлов, созданные с использованием любых символов Юникода. Без этой опции используется «?», когда перевод невозможен. Экранирующий символ — «:», потому что в противном случае он недопустим в файловой системе vfat. Используемая escape-последовательность, где u — символ Юникода, следующая: ':', (u & 0x3f), ((u>>6) & 0x3f), (u>>12).

posix

Разрешить два файла с именами, которые отличаются только регистром. Эта опция устарела.

nonumtail

Сначала попробовать сделать короткое имя без порядкового номера, а затем попробовать name

utf8

UTF8 — это безопасная для файловой системы 8-битная кодировка Unicode, которая используется консолью. Её можно включить для файловой системы с помощью этой опции или отключить с помощью utf8=0, utf8=no или utf8=false. Если установлен uni_xlate, UTF8 отключается.

shortname=РЕЖИМ

Определяет поведение для создания и отображения имён файлов, которые соответствуют 8.3 символам. Если для файла существует длинное имя, оно всегда будет предпочтительным для отображения. Есть четыре режима:

lower

При отображении краткое имя переводится в нижний регистр; сохраняется длинное имя, если короткое имя не состоит только из верхнего регистра.

win95

При отображении краткое имя переводится в верхний регистр; сохраняется длинное имя, если короткое имя не состоит только из верхнего регистра.

winnt

Отображать короткое имя как есть; сохраняется длинное имя, когда короткое имя состоит не только из нижнего или верхнего регистра.

mixed

Отображать короткое имя как есть; сохраняется длинное имя, если короткое имя не состоит только из верхнего регистра. Этот режим используется по умолчанию, начиная с Linux 2.6.32.

Опции монтирования для vboxsf

Файловая система vboxsf используется для монтирования общей папки VirtualBox из хост-системы в точку монтирования гостевой системы.

Доступные опции монтирования:

rw

монтирование с возможностью записи (по умолчанию)

ro

монтирование только для чтения

uid=UID

установить идентификатор пользователя владельца файла по умолчанию на UID

gid=GID

установить идентификатор группы владельцев файлов по умолчанию на GID

ttl=TTL

установите «время жизни» равным TID для дентри

dmode=РЕЖИМ

переопределить режим всех каталогов на (восьмеричный) РЕЖИМ

fmode=РЕЖИМ

переопределить режим всех обычных файлов на (восьмеричный) РЕЖИМ

umask=UMASK

установите umask в (восьмеричное) UMASK

dmask=UMASK

установить umask только для каталогов

fmask=UMASK

установить маску, применяемую только к обычным файлам

iocharset КОДИРОВКА

использовать набор символов КОДИРОВКА для операций ввода-вывода (по умолчанию используется utf8)

Опции монтирования для iso9660

iso9660 — это файловая система CD-ROM, соответствующая стандарту ISO 9660.

Linux поддерживает High Sierra, предшественник стандарта ISO 9660 для файловых систем CD-ROM. Она автоматически распознаётся файловой системой iso9660, поддерживаемой в Linux.

Linux также поддерживает записи протокола общего использования системы, определённые протоколом обмена Rock Ridge. Они используются для дальнейшего описания файлов в файловой системе iso9660 на хосте UNIX и предоставляют такую информацию, как длинные имена файлов, UID/GID, разрешения POSIX и устройства. Она автоматически распознаётся файловой системой iso9660, поддерживаемой в Linux.

ISO 9660 — это стандарт, описывающий структуру файловой системы, которая будет использоваться на CD-ROM. (Этот тип файловой системы также встречается на некоторых DVD. Смотрите также файловую систему udf.)

Обычные имена файлов iso9660 отображаются в формате 8.3 (то есть, с ограничениями, подобными DOS на длину имени файла), и, кроме того, все символы находятся в верхнем регистре. Также нет поля для владения файлом, защиты, количества ссылок, положения для блочных/символьных устройств и т. д.

Rock Ridge — это расширение для iso9660, которое предоставляет все эти UNIX-подобные функции. По сути, для каждой записи каталога есть расширения, которые предоставляют всю дополнительную информацию, и когда Rock Ridge используется, файловая система неотличима от обычной файловой системы UNIX (за исключением того, что она, конечно, доступна только для чтения).

norock

Отключит использование расширений Rock Ridge, даже если они доступны. Смотрите также опцию map.

nojoliet

Отключит использование расширений Microsoft Joliet, даже если они доступны. Смотрите также опцию map.

При check=relaxed имя файла сначала преобразуется в нижний регистр перед выполнением поиска. Вероятно, это имеет смысл только вместе с norock и map=normal. (По умолчанию: check=strict.)

uid=value и gid=value

Дать всем файлам в файловой системе указанный идентификатор пользователя или группы, возможно, переопределив информацию, содержащуюся в расширениях Rock Ridge. (По умолчанию: uid=0,gid=0.)

Для томов, не относящихся к Rock Ridge, обычное преобразование имён сопоставляет заглавные буквы и прописные ASCII, удаляет конечный «;1» и конвертирует «;» в «.». С map=off перевод имени не выполняется. Смотрите также опцию norock. (По умолчанию: map=normal.) map=acorn похож на map=normal, но также применяет расширения Acorn, если они есть.

mode=ЗНАЧЕНИЕ

Для томов, отличных от Rock Ridge, устанавливает для всех файлов указанный режим. (По умолчанию: разрешение на чтение и выполнение для всех.) Для значений восьмеричного режима требуется начальный 0.

unhide

Также показывать скрытые и связанные файлы. (Если обычные файлы и связанные или скрытые файлы имеют одинаковые имена файлов, это может сделать обычные файлы недоступными.)

Установите размер блока на указанное значение. (По умолчанию: block=1024.)

conv=РЕЖИМ

Эта опция устарела и может не работать или игнорироваться.

cruft

Если старший байт длины файла содержит другой мусор, установите эту опцию монтирования, чтобы игнорировать старшие биты длины файла. Это означает, что размер файла не может превышать 16 МБ.

session=x

Выберите номер сеанса на мультисессионном компакт-диске.

sbsector=xxx

Сессия начинается с сектора xxx.

Следующие параметры такие же, как для vfat, и их указание имеет смысл только при использовании дисков, закодированных с использованием расширений Microsoft Joliet.

iocharset=ЗНАЧЕНИЕ

Набор символов, который используется для преобразования 16-битных символов Unicode на компакт-диске в 8-битные символы. По умолчанию iso8859-1.

utf8

Преобразование 16-битных символов Unicode на компакт-диске в UTF-8.

Опции монтирования для udf

UDF — это файловая система «универсального формата диска» (Universal Disk Format), определённая OSTA, Ассоциацией технологий оптического хранения, и часто используется для DVD-ROM, часто в форме гибридной файловой системы UDF/ISO-9660. Однако она отлично подходит для использования на дисковых накопителях, флеш-накопителях и других блочных устройствах. Смотрите также iso9660.

uid=

Сделать все файлы в файловой системе принадлежащими данному пользователю. uid=forget может быть указано независимо от uid=<user> (или обычно в дополнение к нему), в результате UDF не сохраняет uid на носителе. Фактически записанный uid — это 32-битный uid переполнения -1, как определено стандартом UDF. Значение задаётся либо как <user>, которое является допустимым именем пользователя, либо как соответствующий десятичный идентификатор пользователя, либо как специальная строка «forget».

gid=

Сделать все файлы в файловой системе принадлежащими данной группе. gid=forget можно указать независимо от gid=<group> (или обычно в дополнение к нему), в результате UDF не сохраняет gid на носителе. Фактически, записанный gid является 32-битным gid переполнения -1, как определено стандартом UDF. Значение задаётся либо как <группа>, что является допустимым именем группы, либо как соответствующий десятичный идентификатор группы, либо как специальная строка «forget».

umask=

Скрыть данные разрешения от всех inodes, читаемых из файловой системы. Значение дано в восьмеричном формате.

mode=

Если установлен режим mode=, то права доступа для всех inodes, не относящихся к каталогам, считываемых из файловой системы, будут установлены в указанный режим. Значение дано в восьмеричном формате.

dmode=

Если dmode= установлен, права доступа для всех индексных дескрипторов каталогов, считываемых из файловой системы, будут установлены в заданный dmode. Значение дано в восьмеричном формате.

bs=

Установит размер блока. Значение по умолчанию до версии ядра 2.6.30 было 2048. Начиная с 2.6.30 и до 4.11, это был размер блока логического устройства с откатом до 2048. Начиная с 4.11, это размер логического блока с откатом к любому допустимому размеру блока между размером блока логического устройства и 4096.

Для получения дополнительных сведений смотрите справочную страницу mkudffs(8) 2.0+, разделы СОВМЕСТИМОСТЬ и РАЗМЕР БЛОКА.

unhide

Показать другие скрытые файлы.

undelete

Показывать удалённые файлы в списках.

adinicb

Вставить данные в индексный дескриптор (по умолчанию)

noadinicb

Не вставлять данные в индексный дескриптор.

shortad

Использовать короткие дескрипторы адресов UDF.

longad

Использовать длинные дескрипторы адресов UDF. (по умолчанию)

nostrict

Отмените строгое соответствие.

iocharset=

Установит набор символов NLS. Для этого требуется ядро, скомпилированное с параметром CONFIG_UDF_NLS.

utf8

Установит набор символов UTF-8.

Параметры монтирования для отладки и аварийного восстановления

novrs

Игнорировать последовательность распознавания томов и все равно попытайтесь смонтировать.

session=

Выбрать номер сеанса для оптических носителей с записью нескольких сеансов. (по умолчанию = последний сеанс)

anchor=

Отменить стандартное расположение привязки. (по умолчанию = 256)

lastblock=

Установит последний блок файловой системы.

Неиспользуемые исторические параметры монтирования, которые могут встретиться и должны быть удалены

uid=ignore

Игнорируется, используйте вместо этого uid=<user>.

gid=ignore

Игнорируется, используйте вместо этого gid=<group>.

volume=

Не реализовано и игнорируется.

partition=

Не реализовано и игнорируется.

fileset=

Не реализовано и игнорируется.

rootdir=

Не реализовано и игнорируется.

Опции монтирования для fuse

FUSE (Filesystem in Userspace — файловая система в пространстве пользователя) — это простой интерфейс для программ пользовательского пространства для экспорта виртуальной файловой системы в ядро Linux. FUSE также стремится обеспечить безопасный метод для непривилегированных пользователей для создания и монтирования своих собственных реализаций файловой системы.

FUSE

Файловая система в ядре, которая перенаправляет запросы процессу пользовательского пространства.

Файловая система

Процесс пользовательского пространства, отвечающий на запросы, полученные от ядра.

libfuse

Общая библиотека, которую большинство файловых систем (в пространстве пользователя) используют для связи с FUSE (файловой системой ядра). libfuse также предоставляет помощник fusermount3 (или fusermount, если у вас более старая версия libfuse), позволяющий непривилегированным пользователям монтировать файловые системы.

Владелец файловой системы

Пользователь, запускающий файловую систему и инструктирующий ядро связать её с определённой точкой монтирования. Последнее обычно выполняется самой файловой системой при запуске. При использовании libfuse это делается путём вызова утилиты fusermount3.

Клиент

Любой процесс, взаимодействующий с точкой монтирования.

Некоторые параметры политики монтирования можно установить в файле /etc/fuse.con. В настоящее время это следующие опции:

mount_max = NNN

Установитемаксимальное количество подключений FUSE, разрешённое для пользователей без полномочий root. По умолчанию 1000.

user_allow_other

Разрешить пользователям без полномочий root указывать параметры монтирования allow_other или allow_root (смотрите ниже).

Эти ограничения устанавливаются помощником fusermount3, поэтому файловые системы, работающие от имени root, могут их обойти.

Поддерживается большинство общих параметров монтирования, описанных для mount (ro, rw, suid, nosuid, dev, nodev, exec, noexec, atime, noatime, sync, async, dirsync). Файловые системы монтируются с помощью nodev, по умолчанию nosuid, который может быть переопределен только привилегированным пользователем.

Общие опции монтирования:

Это специфичные для FUSE опции монтирования, которые можно указать для всех файловых систем:

default_permissions

Этот параметр указывает ядру выполнить собственную проверку разрешений вместо того, чтобы перекладывать всю проверку разрешений на файловую систему. Проверка ядром выполняется в дополнение к любым проверкам разрешений файловой системой, и обе должны быть успешными, чтобы операция была разрешена. Ядро выполняет стандартную проверку разрешений UNIX (на основе битов режима и владения записью каталога, а также uid/gid клиента).

Эта опция монтирования активируется неявно, если файловая система включает поддержку ACL во время первоначального согласования функций при открытии устройства fd. В этом случае ядро выполняет как ACL, так и стандартную проверку разрешений unix.

Файловые системы, которые не реализуют проверку разрешений, обычно должны добавлять эту опцию внутри себя.

allow_other

Эта опция отменяет меры безопасности, ограничивающие доступ к файлам только владельцу файловой системы, так что все пользователи (включая root) могут получить доступ к файлам.

rootmode=M

Задаёт файловый режим корня файловой системы (в восьмеричном представлении).

blkdev

Смонтировать файловую систему, поддерживаемую блочным устройством. Это привилегированный вариант. Устройство должно быть указано с параметром fsname=ИМЯ.

blksize=N

Установит размер блока для файловой системы. Эта опция действительна только для монтирования типа fuseblk. По умолчанию 512.

В большинстве случаев этот параметр не должен указываться владельцем файловой системы, а устанавливается внутри файловой системы.

max_read=N

С помощью этой опции можно установить максимальный размер операций чтения. По умолчанию установлено бесконечное число, но обычно ядро устанавливает собственный предел в дополнение к этому. Нулевое значение соответствует отсутствию ограничения.

Этот параметр не должен указываться владельцем файловой системы. Правильное (или оптимальное) значение зависит от реализации файловой системы и, таким образом, должно устанавливаться файловой системой внутри.

Эта опция монтирования устарела в пользу прямого согласования через устройство fd (как это сделано, например, для максимального размера операций записи). В настоящее время файловые системы, использующие libfuse, которые хотят ограничить размер чтения, должны использовать эту опцию монтирования и снова установить то же значение в обработчике init().

fd=N

Файловый дескриптор, используемый для связи между файловой системой пользовательского пространства и ядром. Дескриптор файла должен быть получен при открытии устройства FUSE (/dev/fuse).

Этот параметр не должен указываться владельцем файловой системы. Он устанавливается libfuse (или, если libfuse не используется, должен быть установлен самой файловой системой).

user_id=N

group_id=N

Задаёт числовой uid/gid владельца монтирования.

Этот параметр не должен указываться владельцем файловой системы. Он устанавливается libfuse (или, если libfuse не используется, должен быть установлен самой файловой системой).

fsname=ИМЯ

Устанавливает источник файловой системы (первое поле в /etc/mtab). По умолчанию это имя процесса файловой системы.

subtype=ТИП

Устанавливает тип файловой системы (третье поле в /etc/mtab). По умолчанию это имя процесса файловой системы. Если ядро это поддерживает, в /etc/mtab и /proc/mounts тип файловой системы будет отображаться как fuse.

Если ядро не поддерживает подтипы, исходным полем будет TYPE#NAME, или, если опция fsname не указана, просто TYPE.

Параметры монтирования, специфичные для libfuse:

Эти следующие параметры фактически не передаются ядру, но интерпретируются libfuse. Их можно указать для всех файловых систем, использующих libfuse:

allow_root

Этот параметр похож на allow_other, но доступ к файлу ограничен владельцем файловой системы и root. Этот параметр и allow_other исключают друг друга.

auto_unmount

Эта опция включает автоматическое освобождение точки монтирования, если файловая система прекращает работу по какой-либо причине. Обычно файловая система отвечает за освобождение точки монтирования, что означает, что точка монтирования становится недоступной, если файловая система завершает работу без предварительного размонтирования.

На данный момент эта опция подразумевает, что файловая система также будет смонтирована с помощью nodev и nosuid (даже при монтировании от root). Это ограничение может быть снято в будущем.

Опции монтирования высокого уровня:

Эти следующие параметры фактически не передаются ядру, но интерпретируются libfuse. Их можно указать только для файловых систем, использующих высокоуровневый API libfuse:

kernel_cache

Эта опция отключает очистку кеша содержимого файла при каждом open(2). Это должно быть включено только в файловых системах, где данные файла никогда не изменяются извне (не через смонтированную файловую систему FUSE). Таким образом, он не подходит для сетевых файловых систем и других «промежуточных» файловых систем.

ПРИМЕЧАНИЕ: если этот параметр не указан (и ни один из direct_io), данные по-прежнему кэшируются после open(2), поэтому системный вызов read(2) не всегда инициирует операцию чтения.

auto_cache

Эта опция является альтернативой kernel_cache. Вместо того чтобы безоговорочно хранить кэшированные данные, кэшированные данные становятся недействительными при open(2), если время модификации или размер файла изменились с момента его последнего открытия.

umask=M

Отменит биты прав доступа в st_mode, установленные файловой системой. Результирующие биты разрешения — это те, которые отсутствуют в заданном значении umask. Значение указывается в восьмеричном представлении.

uid=N

Заменяет поле st_uid, установленное файловой системой (N — числовое значение).

gid=N

Заменяет поле st_gid, установленное файловой системой (N — числовое значение).

entry_timeout=T

Тайм-аут в секундах, в течение которого запросы имени будут кэшироваться. По умолчанию — 1,0 секунда. Для всех вариантов тайм-аута также можно указать доли секунды (например, entry_timeout=2.8)

negative_timeout=T

Тайм-аут в секундах, в течение которого будет кэшироваться отрицательный поиск. Это означает, что если файл не существует (поиск вернул ENOENT), поиск будет повторен только по истечении тайм-аута, и предполагается, что до этого момента файл/каталог не существует. Значение по умолчанию — 0,0 секунды, что означает, что кеширование отрицательных запросов отключено.

attr_timeout=T

Тайм-аут в секундах, в течение которого кэшируются атрибуты файла/каталога. По умолчанию — 1,0 секунда.

ac_attr_timeout=T

Тайм-аут в секундах, в течение которого атрибуты файла кэшируются с целью проверки, должен ли auto_cache сбрасывать данные файла при открытии. По умолчанию используется значение attr_timeout.

noforget

remember=T

Обычно libfuse назначает inode путям только до тех пор, пока ядро знает о них. С этой опцией inodes вместо этого назначаются как минимум на T секунд (или, в случае noforget, на время жизни файловой системы). Для этого потребуется больше памяти, но может потребоваться при использовании приложений, использующих номера inode.

modules=M1[:M2…]

Добавить модули в стек файловой системы. Модули помещаются в указанном порядке, при этом исходная файловая система находится в нижней части стека.

Эти параметры интерпретируются с помощью mount.fuse3 и поэтому доступны только при монтировании файловой системы через mount.fuse3 (например, при монтировании с помощью общей команды mount(1) или /etc/fstab). Поддерживаемые опции:

setuid=ПОЛЬЗОВАТЕЛЬ

Перед запуском процесса файловой системы FUSE переключитесь на USER и его основную группу. mount.fuse3 должен быть запущен как root или с CAP_SETUID и CAP_SETGID, чтобы это работало.

drop_privileges

Выполнить настройку файлового дескриптора FUSE и монтирование файловой системы перед запуском процесса файловой системы FUSE. Для этого mount.fuse3 требует привилегии, т.е. должна запускаться как root или, по крайней мере, с CAP_SYS_ADMIN и CAP_SETPCAP. Эта опция запустит процесс файловой системы полностью непривилегированным, то есть без установленных флагов capabilities(7) и prctl(2), которые не позволяют повторно получить привилегии (например, через двоичные файлы setuid или fscaps). Это снижает риск в случае компрометации процесса файловой системы FUSE данными вредоносной файловой системы.

Опции монтирования для tmpfs

tmpfs — это файловая система, содержимое которой находится в виртуальной памяти. Поскольку файлы в таких файловых системах обычно находятся в ОЗУ, доступ к файлам осуществляется очень быстро.

Средство tmpfs позволяет создавать файловые системы, содержимое которых находится в виртуальной памяти. Поскольку файлы в таких файловых системах обычно находятся в ОЗУ, доступ к файлам осуществляется очень быстро.

Файловая система создаётся автоматически при монтировании файловой системы с типом tmpfs с помощью следующей команды:

Файловая система tmpfs имеет следующие свойства:

  • Файловая система может использовать пространство подкачки, когда этого требует физическая нагрузка на память.
  • Файловая система потребляет столько физической памяти и пространства подкачки, сколько требуется для хранения текущего содержимого файловой системы.
  • Во время операции повторного монтирования (mount -o remount) размер файловой системы может быть изменён (без потери существующего содержимого файловой системы).

Если файловая система tmpfs размонтирована, её содержимое теряется (удаляется).

Файловая система tmpfs поддерживает следующие опции монтирования:

size=БАЙТЫ

Укажите верхний предел размера файловой системы. Размер указывается в байтах и округляется до целых страниц.

Размер может иметь суффикс k, m или g для Ki, Mi, Gi (двоичные kilo (kibi), двоичные mega (mebi) и двоичные giga (gibi)).

Размер может также иметь суффикс %, чтобы ограничить этот экземпляр процентом физической памяти.

По умолчанию, когда не указан ни размер, ни nr_blocks, size=50%.

nr_blocks=БЛОКИ

То же, что и size, но блоками по PAGE_CACHE_SIZE.

Блоки могут быть указаны с суффиксами k, m или g как и size, но не с суффиксом %.

nr_inodes=inodes

Максимальное количество индексных дескрипторов для этого экземпляра. Значение по умолчанию — половина количества ваших физических страниц RAM или (на машине с highmem) количество страниц lowmem RAM, в зависимости от того, что меньше.

Inodes могут быть указаны с суффиксами k, m или g как и size, но не с суффиксом %.

mode=РЕЖИМ

Установит начальные разрешения для корневого каталога.

gid=gid (начиная с Linux 2.5.7)

Установит начальный идентификатор группы корневого каталога.

uid=uid (начиная с Linux 2.5.7)

Установит начальный идентификатор пользователя корневого каталога.

huge=huge_option (начиная с Linux 4.7.0)

Установит политику выделения памяти для огромной таблицы для всех файлов в этом экземпляре (если включён CONFIG_TRANSPARENT_HUGE_PAGECACHE).

Значение huge_option может быть одним из следующих:

never

Не выделять огромные страницы. Это значение по умолчанию.

always

Пытаться выделять огромные страницы каждый раз, когда требуется новая страница.

within_size

Выделять огромную страницу только в том случае, если она полностью находится в пределах i_size. Также уважать подсказки fadvise(2)/madvise(2).

advise

Выделять огромные страницы только по запросу с помощью fadvise(2)/madvise(2).

deny

Для использования в чрезвычайных ситуациях, чтобы отключить огромную опцию от всех монтирований.

force

Включить опцию huge для всех монтирований; полезно для тестирования.

mpol=mpol_option (начиная с Linux 2.6.15)

Задаёт политику выделения памяти NUMA для всех файлов в этом экземпляре (если включён параметр CONFIG_NUMA).

Значение mpol_option может быть одним из следующих:

default

Использовать политику распределения процессов (смотрите set_mempolicy(2)).

prefer:node

Предпочтительно выделять память из данного узла.

bind:nodelist

Выделять память только из узлов в списке узлов.

interleave

Выделять по очереди из каждого узла.

interleave:nodelist

Выделять из каждого узла по очереди.

local

Предпочтительно выделять память из локального узла.

Список узлов (nodelist) является разделённый запятыми список десятичных чисел и диапазонов, определяющих узлы NUMA. Диапазон — это пара десятичных чисел, разделённых дефисом, наименьшее и наибольшее номера узлов в диапазоне. Например, mpol=bind:0-3,5,7,9-15.

Файловая система tmpfs поддерживает расширенные атрибуты (смотрите xattr(7), но пользовательские расширенные атрибуты не разрешены.

Объем памяти, потребляемой всеми файловыми системами tmpfs, отображается в поле Shmem в /proc/meminfo и в поле shared, отображаемом программой free.

Опции монтирования для cifs и smb3

SMB (сокр. от англ. Server Message Block) — сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия. Первая версия протокола, также известная как Common Internet File System (CIFS) (Единая файловая система Интернета), была разработана компаниями IBM, Microsoft, Intel и 3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась в Windows Vista. В настоящее время SMB связан главным образом с операционными системами Microsoft Windows, где используется для реализации «Сети Microsoft Windows» (англ. Microsoft Windows Network) и «Совместного использования файлов и принтеров» (англ. File and Printer Sharing).

SMB — это протокол, основанный на технологии клиент-сервер, который предоставляет клиентским приложениям простой способ для чтения и записи файлов, а также запроса служб у серверных программ в различных типах сетевого окружения. Серверы предоставляют файловые системы и другие ресурсы (принтеры, почтовые сегменты, именованные каналы и т. д.) для общего доступа в сети. Клиентские компьютеры могут иметь у себя свои носители информации, но также имеют доступ к ресурсам, предоставленным сервером для общего пользования.

Клиенты соединяются с сервером, используя протоколы TCP/IP (а, точнее, NetBIOS через TCP/IP), NetBEUI или IPX/SPX. После того как соединение установлено, клиенты могут посылать команды серверу (эти команды называются SMB-команды или SMBs), который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования SMB эти действия совершаются через сеть.

Практические примеры и инструкции монтирования SMB:

  • Как смонтировать общую папку Windows/Samba в Linux
  • Настройка автоматического монтирования сетевой папки в Linux

smb — это сетевая файловая система, которая поддерживает протокол SMB, используемый Windows для рабочих групп, Windows NT и Lan Manager.

Опции указываются в виде списка пар ключ=значение, разделённых запятыми. Можно отправить параметры, отличные от перечисленных здесь, при условии, что модуль ядра файловой системы cifs (cifs.ko) поддерживает их. Нераспознанные опции монтирования cifs, переданные в код ядра cifs vfs, будут записаны в журнал ядра.

username=АРГУМЕНТ|user=АРГУМЕНТ

Указывает имя пользователя для подключения. Если это не указано, используется переменная среды USER.

Более ранние версии mount.cifs также позволяли указывать user%password или workgroup/user или workgroup/user%password, чтобы можно было указать пароль и рабочую группу как часть имени пользователя. Поддержка этих альтернативных форматов имени пользователя теперь устарела и больше не должна использоваться. Пользователи должны использовать дискретные опции password= и domain= для указания этих значений. Хотя некоторые версии модуля ядра cifs принимают user= в качестве аббревиатуры для этой опции, его использование может сбить стандартную программу монтирования с мыслью, что это монтирование без суперпользователя. Поэтому рекомендуется использовать полное имя username= параметра.

password=АРГУМЕНТ|pass=АРГУМЕНТ

Указывает пароль CIFS. Если этот параметр не указан, используется переменная среды PASSWD. Если пароль не указан прямо или косвенно через аргумент для монтирования, mount.cifs запросит пароль, если не указана опция guest.

Обратите внимание, что пароль, содержащий символ-разделитель (то есть запятую ','), не будет правильно проанализирован в командной строке. Однако тот же пароль, который определён в переменной среды PASSWD или в файле учётных данных (смотрите ниже) или введён в запросе пароля, будет считан правильно.

credentials=ИМЯ ФАЙЛА|cred=ИМЯ ФАЙЛА

Указывает файл, содержащий имя пользователя и/или пароль и, возможно, имя рабочей группы. Формат файла:

Это предпочтительнее чем иметь пароли в виде открытого текста в общем файле, таком как /etc/fstab. Обязательно защитите файл учётных данных должным образом.

uid=АРГУМЕНТ

устанавливает uid, который будет владеть всеми файлами или каталогами в смонтированной файловой системе, когда сервер не предоставляет информацию о владельце. Он может быть указан как имя пользователя или числовой uid. Если не указан, по умолчанию используется uid 0. Помощник mount.cifs должен иметь версию 1.10 или выше, чтобы поддерживать указание uid в нечисловой форме.

Смотрите раздел «ВЛАДЕНИЕ И РАЗРЕШЕНИЯ НА ФАЙЛЫ И КАТАЛОГ» ниже для получения дополнительной информации.

cruid=АРГУМЕНТ

устанавливает uid владельца кеша учётных данных. Это в первую очередь полезно с sec=krb5. По умолчанию используется реальный uid процесса, выполняющего монтирование. Установка этого параметра предписывает восходящему вызову искать кэш учётных данных, принадлежащий этому пользователю.

gid=АРГУМЕНТ

устанавливает gid, который будет владеть всеми файлами или каталогами в смонтированной файловой системе, когда сервер не предоставляет информацию о владельце. Он может быть указан как имя группы или числовой идентификатор. Если не указан, по умолчанию используется gid 0. Вспомогательный модуль mount.cifs должен иметь версию 1.10 или выше, чтобы поддерживать указание gid в нечисловой форме. Смотрите раздел «ВЛАДЕНИЕ И РАЗРЕШЕНИЯ НА ФАЙЛЫ И КАТАЛОГ» ниже для получения дополнительной информации.

forcegid

указывает клиенту игнорировать любой gid, предоставляемый сервером для файлов и каталогов, и всегда назначать владельцем значение параметра gid=. Смотрите раздел «ВЛАДЕНИЕ И РАЗРЕШЕНИЯ НА ФАЙЛЫ И КАТАЛОГ» ниже для получения дополнительной информации.

idsfromsid

Извлекает uid/gid из специального SID вместо его сопоставления. Смотрите раздел «ВЛАДЕНИЕ И РАЗРЕШЕНИЯ НА ФАЙЛЫ И КАТАЛОГ» ниже для получения дополнительной информации.

port=АРГУМЕНТ

устанавливает номер порта, на котором клиент будет пытаться связаться с сервером CIFS. Если это значение указано, найдёт существующее соединение с этим портом и использует его, если оно существует. Если таковой не существует, попробует создать новое соединение на этом порту. Если это соединение не удаётся, вернёт ошибку. Если это значение не указано, найдёт существующее соединение на порте 445 или 139. Если такое соединение не существует, попробует сначала подключиться через порт 445, а затем через порт 139, если это не удаётся, то есть оба порта не работают, то вернёт ошибку.

netbiosname=АРГУМЕНТ

При подключении к серверам через порт 139 указывает имя источника RFC1001, которое будет использоваться для представления клиентской машины netbios во время инициализации сеанса netbios.

servern=АРГУМЕНТ

Аналогично netbiosname, за исключением того, что он указывает имя netbios сервера вместо клиента. Хотя этот параметр редко требуется для подключения к новым серверам, этот параметр необходим для подключения к некоторым более старым серверам (например, OS/2 или Windows 98 и Windows ME), поскольку при подключении через порт 139 они, в отличие от большинства новых серверов, не поддерживают имя сервера по умолчанию. Имя сервера может содержать до 15 символов и обычно пишется в верхнем регистре.

file_mode=АРГУМЕНТ

Если сервер не поддерживает расширения CIFS Unix, это отменяет режим файла по умолчанию.

dir_mode=АРГУМЕНТ

Если сервер не поддерживает расширения CIFS Unix, это отменяет режим по умолчанию для каталогов.

ip=АРГУМЕНТ|addr=АРГУМЕНТ

Устанавливает IP-адрес назначения. Этот параметр устанавливается автоматически, если часть имени сервера запрошенного имени UNC может быть преобразована (разрешена), поэтому пользователю редко требуется указывать её.

domain=АРГУМЕНТ|dom=АРГУМЕНТ|workgroup=АРГУМЕНТ

Устанавливает домен (рабочую группу) пользователя. Если домены не указаны, будет использоваться пустой домен. Используйте domainauto, чтобы автоматически угадать домен сервера, к которому вы подключаетесь.

domainauto

Если используется проверка подлинности NTLM и не предоставляется домен через домен, угадать домен из запроса NTLM сервера. Раньше это поведение было по умолчанию для ядер старше 2.6.36.

guest

Не запрашивает пароль.

iocharset

Набор символов, используемый для преобразования имён локальных путей в Unicode и обратно. Юникод используется по умолчанию для имён сетевых путей, если сервер поддерживает его. Если iocharset не указан, будет использоваться значение nls_default, указанное во время сборки ядра локального клиента. Если сервер не поддерживает Unicode, этот параметр не используется.

ro

Монтировать только для чтения.

rw

Монтировать для чтения-записи.

setuids

Если расширения CIFS Unix согласованы с сервером, клиент попытается установить эффективный uid и gid локального процесса для вновь созданных файлов, каталогов и устройств (create, mkdir, mknod). Если расширения CIFS Unix не согласованы, для вновь созданных файлов и каталогов вместо использования uid и gid по умолчанию, указанных при монтировании, локально кэширует uid и gid нового файла, что означает, что uid для файла может измениться, когда индекс перезагружается (или пользователь заново монтирует общий ресурс).

nosetuids

Клиент не будет пытаться установить uid и gid для вновь созданных файлов, каталогов и устройств (create, mkdir, mknod), в результате чего сервер установит uid и gid по умолчанию (обычно это uid сервера пользователя, кто монтировал шару). По умолчанию сервер (а не клиент) устанавливает uid и gid. Если CIFS Unix Extensions не согласованы, тогда uid и gid для новых файлов будут выглядеть как uid (gid) установщика или параметр uid (gid), указанный при монтировании.

perm

Клиент выполняет проверку разрешений (vfs_permission проверка uid и gid файла на соответствие режиму и желаемой операции). Обратите внимание, что это в дополнение к обычной проверке ACL на целевой машине, выполняемой серверным программным обеспечением. Проверка разрешений клиента включена по умолчанию.

noperm

Клиент не проверяет разрешения. Это может предоставить доступ к файлам на этом монтировании другим пользователям в локальной клиентской системе. Обычно это требуется только в том случае, если сервер поддерживает расширения CIFS Unix, но UID/GID в клиентской и серверной системах не совпадают достаточно близко, чтобы предоставить доступ пользователю, выполняющему монтирование. Обратите внимание, что это не влияет на обычную проверку ACL на целевой машине, выполняемую серверным программным обеспечением (серверного ACL по имени пользователя, указанному во время монтирования).

dynperm

Указывает серверу поддерживать владение и разрешения в памяти, которые не могут быть сохранены на сервере. Эта информация может исчезнуть в любое время (всякий раз, когда индексный дескриптор удаляется из кеша), поэтому, хотя это может помочь некоторым приложениям работать, такое поведение несколько ненадежно. Смотрите раздел ниже о ВЛАДЕНИИ И РАЗРЕШЕНИЯХ НА ФАЙЛЫ И КАТАЛОГ для получения дополнительной информации.

cache=АРГУМЕНТ

Режим кеширования. Смотрите раздел ниже, посвящённый СОГЛАСОВАННОСТИ КЭША, для получения подробной информации. Допустимые значения:

  • none — не кэшировать данные файла вообще
  • strict — строго соблюдать протокол CIFS/SMB2
  • loose — разрешить свободную семантику кеширования

По умолчанию в ядрах до 3.7 был loose. В ядре 3.7 значение по умолчанию strict.

nostrictsync

Не просить сервер выполнить сброс с помощью fsync(). Некоторые серверы по умолчанию выполняют небуферизованную запись, и в этом случае очистка избыточна. В рабочих нагрузках, где клиент выполняет множество небольших комбинаций записи + fsync и где задержка в сети намного выше, чем задержка сервера, это даёт двукратное повышение производительности. Этот вариант также является хорошим кандидатом в сценариях, в которых производительность важнее согласованности.

handlecache

(по умолчанию) В SMB2 и выше клиенту часто приходится открывать корень общей папки (пустой путь) в различных местах во время монтирования, повторной проверки пути и системного вызова statfs(2). Эта опция сокращает избыточный двусторонний трафик (открытие и закрытие), просто сохраняя дескриптор каталога для корня после открытия.

nohandlecache

Отключить кеширование дескриптора корневого каталога общего ресурса.

handletimeout=АРГУМЕНТ

Время (в миллисекундах), в течение которого сервер должен зарезервировать дескриптор после аварийного переключения, ожидая повторного подключения клиента. При монтировании с опцией монтирования resilienthandles или persistenthandles или когда их использование запрашивается сервером (continuous availability shares — общие ресурсы непрерывной доступности), этот параметр переопределяет тайм-аут дескриптора сервера по умолчанию (который для большинства серверов составляет 120 секунд).

rwpidforward

Перенаправить pid процесса, открывшего файл, для любой операции чтения или записи в этом файле. Это предотвращает сбой при чтении и записи таких приложений, как wine(1), если мы используем обязательный стиль brlock.

mapchars

Переводит шесть из семи зарезервированных символов (не обратную косую черту, но включая двоеточие, вопросительный знак, вертикальную черту, звёздочку, символы больше и меньше) в диапазон переназначения (выше 0xF000), что также позволяет клиенту CIFS распознавать файлы, созданные с помощью такие символы службой Windows для Mac. Это также может быть полезно при монтировании к большинству версий Samba (что также запрещает создание и открытие файлов, имена которых содержат любой из этих семи символов). Это не действует, если сервер не поддерживает Unicode в сети. Обратите внимание, что файлы, созданные с помощью параметра монтирования mapchars, могут быть недоступны, если общий ресурс смонтирован без этого параметра.

Mount bind что это

Last updated on: 2019-02-05

Authored by: Rackspace Community

Bind mounts in Linux® enable you to mount an already-mounted file system to another location within the file system. Generally, bind mounts are used when restricting the access of specified users to designated parts of a website by replicating the website’s directory into a jailed user’s home directory.

Configure a bind mount

This section provides steps for how to grant a user access to a directory by using bind mounting to bind the directory to that user’s home directory.

Configure a bind mount by using the following command:

Warning: Bind mounts are not persistent when you restart your server unless you create an entry for the bind mount in your server’s File Systems Table (fstab).

Add a bind mount to the File Systems Table

Add an fstab entry for the bind mount by using the following command:

If the nobootwait option is not included in the fstab entry, you see the following message in the server console:

Adding nobootwait to the options section of the fstab configuration ensures that the system boots even if the bind mount directory has been removed from the system.

Share this information:

©2020 Rackspace US, Inc.

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Капельница от запоя — облегчение за 15–20 минут