Для многих термин «расшаривание» прочно ассоциируется именно с открытием доступа к дисковым накопителям, их разделам и хранящейся на них информации. Даже неискушенные пользователи могут похвастаться знанием слова Samba (и не боятся вбить это слово в поисковик, чтобы найти краткий туториал по быстрой настройке, попутно натыкаясь на новости об очередной обнаруженной уязвимости и массовых эпидемиях, вызванных коварной вирусней).
Еще по теме: Как расшарить видеокарту на Linux
Тому, кто привык находить нетривиальные решения, наверняка будет интересен вариант экспорта дискового устройства, по способу реализации приближенный к промышленным стандартам. В рамках возможностей Linux подобный экспорт делается при помощи программной системы DRBD, с 2009 года вошедшей в само ядро. Суть системы отражена в ее названии — распределенное реплицируемое блочное устройство. Она обеспечивает мгновенную синхронизацию между локальным и удаленным блочными устройствами.
Подготовительная работа заключается в установке пакета drbd-utils. Конфигурировать его можно пошагово с помощью drbdsetup, но проще отредактировать содержимое файла настроек /etc/drbd.conf на обеих машинах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
global { usage-count no; } common { resync-rate 100M; } resource r0 { protocol C; startup { wfc-timeout 15; degr-wfc-timeout 60; } net { cram-hmac-alg sha1; shared-secret "ПАРОЛЬ"; } on имя_хоста1 { device /dev/drbd0; disk /dev/sda5; address 192.168.0.1:7788; meta-disk internal; } on имя_хоста2 { device /dev/drbd0; disk /dev/sda7; address 192.168.0.2:7788; meta-disk internal; } } |
Опцией cram-hmac-alg задается алгоритм шифрования, поддерживаемый на обоих компьютерах. Они перечислены в файле /proc/crypto. Пароль shared-secret может содержать до 64 знаков.
Имена хостов определяются командой uname -n, запускаемой на каждой из машин отдельно. Опциям disk присваиваются названия дисковых накопителей или их разделов, относящихся к каждой машине. Следом указываются IP-адреса и задействованные порты. Их размер пропорционален размеру самого устройства.
Также на обеих машинах запускаем инициализацию хранилища:
1 |
$ sudo drbdadm create-md drbd0 |
И стартуем демон DRBD:
1 2 |
$ sudo systemctl enable drbd $ sudo systemctl start drbd |
Далее переходим на ту машину, которая будет работать с данными (одновременный доступ к хранилищу может получить только одна из них), и делаем ее мастером:
1 |
$ sudo drbdadm primary all |
Затем создаем и монтируем файловую систему хранилища:
1 2 |
$ sudo mkfs.ext4 /dev/drbd0 $ sudo mount /dev/drbd0 /mnt |
В итоге получился своего рода RAID-массив поверх сети с единовременным доступом к нему только одного из существующих хостов. Впрочем, получить доступ к данным, находясь на другой машине, также возможно. Для этого нужно всего лишь размонтировать файловую систему на текущем мастере, сделать мастером вторую машину и смонтировать хранилище на ней. Трех элементарных команд, одну из которых можно повесить на сочетание клавиш сразу, а две другие предварительно вставить в сценарий, будет достаточно.
Выводы
Линукс не идеален и временами может серьезно проигрывать другим системам по своим функциональным возможностям, в точности как в случае с системой Plan 9 и удаленным доступом к аппаратным ресурсам компьютера. В то же время, когда возникает потребность решить конкретную задачу, шансы найти подходящий набор инструментов для этого практически стопроцентные.
Рекомендую: Как получить список расшаренных папок