Linux mount bind fstab

fstab (Русский)

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

Он состоит из набора определений файловых систем. Каждая файловая система занимает свою строку. Эти определения динамически преобразуются в юниты монтирования systemd во время загрузки системы. При этом производится автоматическое разрешение зависимостей: службы, которые зависят от конкретной файловой системы, запускаются только после ее монтирования, а удаленные файловые системы вроде NFS или Samba, в свою очередь, монтируются только после того, как будет установлено сетевое подключение. Таким образом, и локальные, и удаленные файловые системы, указанные в /etc/fstab , будут правильно смонтированы без дополнительной настройки. По умолчанию, при монтировании также производится запуск проверки файловой системы программой fsck. За подробной информацией обратитесь к man-странице systemd.mount(5) .

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

Contents

Пример файла

Простой пример /etc/fstab , в котором файловые системы заданы по именам файлов устройств:

Формат строки

Каждая строка в файле /etc/fstab содержит следующие поля, разделенные пробелами или символами табуляции:

filesystem Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. Смотрите подробнее в разделе #Определение файловой системы. dir Точка монтирования, куда монтируется корень файловой системы. type Тип файловой системы. Поддерживается множество типов: ext2 , ext3 , ext4 , btrfs , reiserfs , xfs , jfs , smbfs , iso9660 , vfat , ntfs , swap и auto . При выборе auto команда mount попытается определить реальный тип файловой системы самостоятельно. Это полезно для компакт-дисков (CD/DVD). options Параметры монтирования файловой системы. Подробнее смотрите на mount(8) § FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS . Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем. dump Используется утилитой dump для определения того, нужно ли создать резервную копию данных в файловой системе. Возможные значения: 0 или 1. Если указано число 1, dump создаст резервную копию. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле. pass Используется программой fsck для определения того, нужно ли проверять целостность файловой системы. Возможные значения: 0, 1 или 2. Значение 1 следует указывать только для корневой файловой системы (с точкой монтирования / ); для остальных ФС, которые вы хотите проверять, используйте значение 2, которое имеет менее высокий приоритет.Обратите внимание, что в случае btrfs следует всегда указывать 0, даже если эта файловая система используется в качестве корневой. Файловые системы, для которых в поле указано значение 0, не будут проверяться fsck.

Определение файловой системы

Конкретное место расположения файловой системы может быть определено различными способами. В файле /etc/fstab можно указать имя файла устройства, его метку или UUID (в том числе GPT-метку и GPT-UUID для дисков GPT). Определение по UUID является наиболее предпочтительным способом. Подробнее об этом вы можете узнать на странице Persistent block device naming.

Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод lsblk -f and blkid для этих примеров вы можете найти на странице Persistent block device naming.

По именам устройств

Запустите lsblk -f , чтобы отобразить список разделов. Укажите имена устройств с префиксом /dev/ .

По меткам

Запустите lsblk -f , чтобы отобразить список разделов. Укажите метки из столбца LABEL с префиксом LABEL= :

По UUID

Запустите lsblk -f , чтобы отобразить список разделов. Укажите идентификаторы из столбца UUID с префиксом UUID= :

По меткам GPT

Запустите blkid чтобы отобразить список разделов. Укажите значения PARTLABEL без кавычек:

По UUID GPT

Запустите blkid чтобы отобразить список разделов. Укажите значения PARTUUID без кавычек:

Советы и рекомендации

Автоматическое монтирование с systemd

Если у вас большой раздел /home , вы можете разрешить службам, которые не обращаются к /home , запускаться в то время, как /home проверяется программой fsck. Для этого добавьте следующие параметры монтирования в запись /etc/fstab для точки монтирования /home :

Читайте также:  Миграция с windows to linux

При этом процедура проверки и монтирования /home будет запущена только при первой попытке доступа, и ядро будет держать в ожидании все создаваемые потоки ввода-вывода в /home , пока раздел не будет смонтирован.

Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр x-systemd.device-timeout=# для указания времени ожидания удаленной файловой системы при перебоях в соединении.

Если у вас имеются зашифрованные файловые системы, вы можете также добавить параметр noauto в соответствующие записи в /etc/crypttab . Тогда systemd не будет пытаться открыть зашифрованное устройство во время загрузки системы, а сделает это при первой попытке доступа к файловой системе на этом устройстве, применив указанный файл ключа и затем автоматически смонтировав ФС. Это может дать выигрыш в несколько секунд при загрузке системы, например, если у вас зашифрованный RAID массив: systemd не придется ожидать готовности устройства. Пример записи:

Пробелы в значениях полей

Так как пробельные символы используются в fstab для разделения полей, их нельзя напрямую использовать в значениях полей. Любые пробелы в полях (например, значения PARTLABEL , LABEL или точки монтирования) должны быть заменены специальными управляющими последовательностями, которые состоят из обратной косой черты ( \ ) и трех восьмеричных цифр (например, для пробела это \040 ):

Внешние устройства

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

Параметры atime

  • Если файловая система смонтирована с параметром atime , то, когда происходит обращение к файлу, в его поле atime записывается текущее время (иными словами, время доступа). Это может быть полезно, когда Linux используется на сервере; на персональном компьютере эта функция обычно не нужна. Недостаток этой функции в том, что даже при чтении файла из кэша (в оперативной памяти) все равно производится медленная операция записи на диск. Использование параметров монтирования noatime , nodiratime или relatime может улучшить производительность доступа к данным, а также уменьшить износ твердотельных (SSD) накопителей.
  • Параметр noatime полностью отключает запись времени доступа к файлу. Большинство программ не используют это поле. Но бывают и редкие исключения — например, Mutt полагается на его значение. Для mutt вы можете использовать параметр relatime .
  • Параметр nodiratime отключает обновление времени доступа только для каталогов; для остальных файлов время atime будет обновляться всегда.
  • Параметр relatime включает обновление поля только когда содержимое файла перезаписывается (в отличие от noatime , при котором поле atime вообще не обновляется, и может становиться раньше времени изменения mtime). Использование этого параметра наиболее предпочтительно, так как программы вроде Mutt будут работать корректно, и при этом вы все равно получите достаточное улучшение производительности: при операциях чтения (как правило, гораздо более частых, чем записи) не будет производиться запись времени на диск. По умолчанию файловые системы монтируются с этим параметром.

Запись в FAT32 с правами обычного пользователя

Чтобы иметь возможность записи в разделе FAT32, вам следует указать правильные параметры монтирования в вашем файле /etc/fstab .

Флаг user означает, что любой пользователь сможет монтировать и размонтировать раздел /dev/sdX . Параметр rw дает доступ на чтение-запись; umask убирает указанные права — например, umask=111 удаляет права на выполнение. Проблема в том, что права на «выполнение» также удаляются у каталогов, поэтому мы должны исправить это при помощи параметра dmask=000 (подробности смотрите на странице Umask).

Без этих параметров все файлы будут восприниматься исполняемыми. Вы можете использовать параметр showexec вместо umask и dmask, при которой исполняемыми будут файлы, имеющие расширения исполняемых файлов Windows (.com, .exe, .bat).

Например, если ваш раздел FAT32 на /dev/sda9 , и вы хотите смонтировать его в каталог /mnt/fat32 , то вам следует использовать запись следующего вида:

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

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

Источник

Linux mount bind fstab

Have you ever dealt with a system that wasn’t partitioned properly when it was built and now it has gone into production? You’ll probably be hard pressed to find the time and patience to rebuild the system any time soon. Luckily there is a way to step around many of the limitations of a poorly partitioned system using bind mounts.

Читайте также:  Audio hijack mac os

Bind mounts are quite simple. Instead of mounting a device (with a file system) on a particular path you are mounting one path into another path.

For example: Let’s say you have a small /var but a very large /opt partition and you need additional space for your growing log files.

First, shut down the services writing to log files, then…

mv /var/log /opt/var_log mkdir /var/log mount -o bind /opt/var_log /var/log

You will now see this reflected when running the mount command:

# mount | grep var /opt/var_log on /var/log type none (rw,bind)

At this point you are ready to restart the previously stopped services.

If you want this to persist across reboots, you’ll just need to update your /etc/fstab with the bind mount as well.

# /etc/fstab /opt/var_log /var/log none bind 0 0

And there you have it! Its not beautiful, but it will help you keep the lights on until you can get a long-term fix in place.

More details about bind mounts

From the man page on ‘mount’.

The bind mounts. Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is mount —bind olddir newdir or shortoption mount -B olddir newdir or fstab entry is: /olddir /newdir none bind After this call the same contents is accessible in two places. One can also remount a single file (on a single file). This call attaches only (part of) a single filesystem, not possible submounts. The entire file hierarchy including submounts is attached a sec- ond place using mount —rbind olddir newdir or shortoption mount -R olddir newdir Note that the filesystem mount options will remain the same as those on the original mount point, and cannot be changed by passing the -o option along with —bind/—rbind. The mount options can be changed by a separate remount command, for example: mount —bind olddir newdir mount -o remount,ro newdir

19 Responses to “How to use bind mounts in linux”

This would be better accomplished with symbolic links, i.e.:

mv /var/log /opt/var_log
ln -s /opt/var_log /var/log

Bind mounts are more useful for when you can’t use symlinks, i.e. linking a directory inside a chroot or VM.

Keith Reply:
July 18th, 2012 at 7:26 am

That’s another approach, but it has it’s own set of problems as well. Keep in mind that a symlink is just a file. In my case I want /var/log to function exactly as it would if there was a filesystem mounted there.

Take backups as one example. It’s a common use case to explicitly define the directories that will be included in backups. So, if your backup system is expecting /var/log to be a directory containing logs, and it’s changed to a symlink, you will have effectively disabled backups of your logs. Instead, you’ll have only a backup of the symlink file itself.

What I’m trying to say is that if the problem would be solved by repartitioning or growing a filesystem, but you can’t afford the immediate downtime to reconfigure the system, bind mounts are a useful stopgap solution.

jj Reply:
March 22nd, 2014 at 3:50 pm

My backups usually do NOT cross mount points, so I can backup root without everything else. If “find” treats it as a mount point, it won’t be crossed by most backup programs or scripts. But I see your point if the mount-directory itself is specified to a backup program that can’t be told to follow symbolic links.

Yes!that was exactly that i was searching for. Thanks

If i want to mount across the server. can someone suggest me the command.

Bind mounts are useful as more than a stopgap measure. An example would be under Android, where this is used by the S2E application to extend older phones’ limited storage (think HTC desire with only 148MB available for apps/data/cache) by creating a second partition on the SD card and bind-mounting folders in there onto the corresponding folders of the internal memory.

Well, technically, it’s still a stopgap measure: it helps you along until you can justify plonking down another couple of hundred dollars on a new phone. 😉

Читайте также:  Установка windows 10 professional x64

I like this bind mount but why is it described as a stop-gap measure? It appears to be elegant. Suppose I have disk full on my disk1, and trying to relocate some directories to disk2. By using bind mount, I don’t need to worry about partition sizing but just with one disk2 partition housing the several directories from disk1, and bind mount to disk2’s directories accordingly. Did I miss something more crucial?

I had a production server hitting a NAS storage through a NFS mount. In order to reproduce the behavior in QA without buying a NAS, we just faked it with a bind mount. Test program doesn’t know the difference.

Maybe this is stupid question… but maybe bind mount can solve it.

I have:
-Linux Ubuntu Server running over Android (as a process)
-With RDP Android Application i can access Linux X desktop
-Both Android and Linux share the / (if i access Read&Write from Android or from Linux to / i go to same place, very bad security in case of damage)
-I can access as normal user and/or root to both Android and Linux

I want:
-Protect Android /, so Linux / is not Android / (chroot may help)
-Access Android / on Read&Write from insed cush chroot Linux

What steps must i follow?

Notes:
-Android is very poor, i can not run many Linux commands on it (they not exists)
-Linux is loop mounted by an Android executable (i tried to do it with terminal commands and i can not, Android mount command does not understand loop)
-Linux runs as an Android process
-I can run such Linux as an RDP server or as a full command line terminal, so i can run normal Linux commands inside it as user and when needed as root (full mount command, etc)
-From Linux command prompt i can see Android / as / (shared between Android and Linux, no chroot done)… i want to avoid this
-I want not to loose access to Android / from inside Linux, but not as Linux /, instead as /mnt/AndroidRoot/

Any help is wellcome

[…] As you can see from the last keyword on that line, its a ‘bind’ mount… try this http://backdrift.org/how-to-use-bind-mounts-in-linux […]

[…] If you want to create some sort of symlink to let your user access somewhere outside their chroot jail use mount –bind http://backdrift.org/how-to-use-bind-mounts-in-linux […]

The way I used the –bind – I have an ftp server with chrooted users. I wanted to allow 3 people to access the same files. The files are outside their jail – as mentioned above. What I did not want to do was just have all three people ftp in using the same login – so each user has their own login/password – but all have access to the same files (root owns the files, and all have the same group ownership, and these users are all in the same group – 774 permissions on the files). Now if down the road, I need to remove a user I can remove that user from the group, unmounts their binded directory – and viola – no more access to those files – and didn’t need to have the other users change their passwords.

Does mount do an auto bind? Just curious – On Fedora 21 – I just did 3 mounts, mounting the same device to three different mount points. the system allowed it just fine. I was surprised I didn’t get a device busy message on the second mount attempt.

And how does one do a rbind with rslave in the fstab?

If you don’t have enough discipline to resist these temptations, then you will not be able
to reach your goal of saving money for financial emergencies or making
a major purchase in the future. If you feel you’re
a VPN provider fails in this, run very fast without looking back.
All transactions are handled by PSP ‘ one of the most reputable and popular platforms
handling payments with the online currency.

Источник

Оцените статью