From 56e833dee22b4702159bb19f415c399578d00b82 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 8 Jul 2024 09:08:36 +0200 Subject: [PATCH] add mount --- technology/linux/Mount.md | 133 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 technology/linux/Mount.md diff --git a/technology/linux/Mount.md b/technology/linux/Mount.md new file mode 100644 index 0000000..d475b69 --- /dev/null +++ b/technology/linux/Mount.md @@ -0,0 +1,133 @@ +--- +obj: concept +rev: 2024-07-08 +--- + +# Mount +Mounting is a fundamental concept in Linux and other Unix-like operating systems, enabling users to access and manage filesystems, storage devices, and partitions. Mounting is the process of making a filesystem accessible at a certain point in the directory tree. When you mount a storage device or a partition, you attach it to a specified directory, known as a mount point. This allows you to access the contents of the device or partition as if they were part of the overall filesystem. + +## `mount` Command +Usage: +```shell +mount [options] [source] [mount_point] + +# Bind Mounts +mount --bind /var/www /mnt/www + +# Loop Device +mount -o loop /path/to/file.iso /mnt/iso +``` + +The source of the filesystem can be specified in other ways too (depending on the filesystem): +- `LABEL=label`: Human readable filesystem identifier. +- `UUID=uuid`: Filesystem universally unique identifier. The format of the UUID is usually a series of hex digits separated by hyphens. +- `PARTLABEL=label`: Human readable partition identifier. This identifier is independent on filesystem and does not change by mkfs or mkswap operations. It’s supported for example for GUID Partition Tables (GPT). +- `PARTUUID=uuid`: Partition universally unique identifier. This identifier is independent on filesystem and does not change by mkfs or mkswap operations. It’s supported for example for GUID Partition Tables (GPT). + +### Options + +| Option | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-a, --all` | Mount all filesystems in `/etc/fstab`. | +| `-B, --bind` | Mount a directory somewhere else | +| `-m, --mkdir[=mode]` | Allow to make a target directory (mountpoint) if it does not exist yet. The default mode is `0755`. | +| `-o, --options opts` | Use the specified mount options. The opts argument is a comma-separated list. | +| `-r, --read-only` | Mount the filesystem read-only. A synonym is `-o ro`. | +| `--source device` | This option allows you to explicitly define that the argument is the mount source. | +| `--target directory` | This option allows you to explicitly define that the argument is the mount target. | +| `-t, --types fstype` | The argument following `-t` is used to indicate the filesystem type. The filesystem types which are currently supported depend on the running kernel. See `/proc/filesystems` and `/lib/modules/$(uname -r)/kernel/fs` for a complete list of the filesystems. | + +## `/etc/fstab` +The `/etc/fstab` file is used to define filesystems to be automatically mounted at boot time. Nowadays the entries in this file will be converted to [Systemd-Mounts](systemd/Systemd-Mounts.md). + +Each file contains a mount instruction like this: +`DEVICE MOUNT_POINT FILESYSTEM_TYPE OPTIONS DUMP PASS` + +Example: `/dev/sdb1 /mnt/usb ext4 defaults 0 2` + +- `DEVICE`: The device or partition to be mounted. +- `MOUNT_POINT`: The directory where the filesystem will be mounted. +- `FILESYSTEM_TYPE`: The type of filesystem. +- `OPTIONS`: Mount options (e.g., `defaults`, `ro`, `rw`). +- `DUMP`: Used by the `dump` utility to decide if a filesystem should be backed up. +- `PASS`: Used by `fsck` to determine the order in which filesystems are checked. + +## Mount Options +- `async`: All I/O to the filesystem should be done asynchronously. +- `atime`: Update inode access times on each access. +- `noatime`: Do not update inode access times on each access (useful for performance). +- `auto`: Can be mounted with the `mount -a` command. +- `noauto`: Can only be mounted explicitly. +- `defaults`: Use default options (`rw`, `suid`, `dev`, `exec`, `auto`, `nouser`, and `async`). +- `dev`: Interpret character or block special devices on the filesystem. +- `nodev`: Do not interpret character or block special devices on the filesystem. +- `diratime`: Update directory inode access times on each access. +- `nodiratime`: Do not update directory inode access times on each access. +- `dirsync`: All directory updates within the filesystem should be done synchronously. +- `exec`: Permit execution of binaries. +- `noexec`: Do not permit execution of any binaries. +- `group`: Allow an ordinary user to mount the filesystem if they are a member of the group owning the device. +- `iversion`: Increment the inode version field upon each change. +- `mand`: Allow mandatory locks on this filesystem. +- `nomand`: Do not allow mandatory locks on this filesystem. +- `relatime`: Update inode access times relative to modify or change time. +- `norelatime`: Do not use the `relatime` feature. +- `lazytime`: Only update times on the in-memory version of an inode. +- `nolazytime`: Do not use the `lazytime` feature. +- `ro`: Mount the filesystem read-only. +- `rw`: Mount the filesystem read-write. +- `suid`: Permit set-user-identifier or set-group-identifier bits to take effect. +- `nosuid`: Do not permit set-user-identifier or set-group-identifier bits to take effect. +- `silent`: Suppress some error messages. +- `loud`: Do not suppress error messages. +- `strictatime`: Strictly update inode access times on each access. + +### Filesystem-Specific Options +Each filesystem type may support its own set of mount options. Here are some examples for a few common filesystems: + +#### ext2, ext3, ext4 +- `acl`: Enable POSIX Access Control Lists. +- `noacl`: Disable POSIX Access Control Lists. +- `user_xattr`: Enable user extended attributes. +- `nouser_xattr`: Disable user extended attributes. +- `journal`: Enable journaling (ext3/ext4). +- `nojournal`: Disable journaling (ext3/ext4). + +#### btrfs +- `compress`: Enable compression. +- `compress-force`: Force compression. +- `nodatacow`: Disable copy-on-write for data blocks. +- `nodatasum`: Disable data checksumming. +- `subvol`: Mount a specific subvolume. + +#### xfs +- `logbufs`: Number of in-memory log buffers. +- `logbsize`: Size of each in-memory log buffer. +- `noquota`: Disable quota enforcement. +- `quota`: Enable quota enforcement. + +#### nfs +- `rsize`: Set the read buffer size. +- `wsize`: Set the write buffer size. +- `timeo`: Set the timeout value. +- `intr`: Allow interrupts on hard mounts. +- `nointr`: Do not allow interrupts on hard mounts. + +#### vfat +- `shortname`: Define behavior for handling of short filenames. +- `iocharset`: Character set to use for input and output. +- `utf8`: Encode and decode 8-bit characters as UTF-8. + +### Network Filesystems + +#### cifs (Common Internet File System) +- `username`: Username to connect to the CIFS share. +- `password`: Password to connect to the CIFS share. +- `domain`: Domain name for authentication. +- `uid`: Set the owner of the files. +- `gid`: Set the group of the files. + +#### nfs (Network File System) +- `vers`: Specify NFS version. +- `proto`: Specify transport protocol (`tcp` or `udp`). +- `mountport`: Specify port number for MOUNT service.