Домашний сервер на платформе Intel NUC, часть вторая: Debian + внешний HDD ExFAT + Nextcloud

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

Эта статья поможет ответить на вопросы:
Как в Linux разбить GPT диск.
Как в Linux отформатировать раздел в ExFAT.
Как прописать внешний жесткий диск в fstab.
Как отключить отказ системы при отсутствующем внешнем жестком диске.
Как прописать загрузку в fstab с правами определенного пользователя.


Я за последний год усилил режим параноика и начал постепенно отказываться от сервисов вроде гуглоконтактов и прочих “Дисков”/”Драйвов”. Поэтому решено файлы хранить у себя же. Из всех бесплатных решений, которые бы подходили под большинство требований, самым подходящим оказался Nextcloud.

Так как он уже стоял на ноутбуке, то встала задача аккуратно его перенести. 120 гигабайт SSD памяти для “облака” явно недостаточно, поэтому было решено использовать все тот же внешний терабайтник, однако уже не хранив “диск на диске” (то есть vdi образ на нем же), а создав полноценный раздел.

Но неожиданно возник вопрос: какую файловую систему использовать для него, с учетом того, что винт должны читать все ОС: Linux, Windows, macos. На NTFS криво смотрят как Линукс, так и макось; FAT32 – криво смотрю уже я ввиду ее ограничений и банальной древности; Ext4 – тут поперхнулись Мелкомягкие.
Впрочем, есть же ExFAT, которую огрызки и окна поддерживают из коробки, а Linux – с одной строчкой в консоли.
Забэкапив данные на HDD (под Виндой), пошел в “Управление дисками” и разбил его на два раздела, которые отформатировал в ExFAT:
1. Nextcloud
2. Storage (файлопомойка для дома: торренты, сериальчики и прочее).

Подключаю его к неттопу, а Debian мне и говорит: Microsoft Basic Data.
Хм. А, драйвера же не поставил.
# sudo apt install exfat-fuse exfat-utils

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

Сначала через fdisk -l убеждаемся в том, с каким из устройств нам необходимо работать:

# fdisk -l
...
Disk /dev/sdb: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: ...

Device Start End Sectors Size Type
/dev/sdb1 2048 734005247 734003200 350G Microsoft basic data
/dev/sdb2 734005248 1953525134 1219519887 581,5G Microsoft basic data

Начинаем работать с диском, выполнив gdisk /dev/sdb (в случае с дисками MBR – fdisk).
Я предварительно удалил разделы из под Windows, то осталось их только создать.
Выполняем команду n, далее указываем Parition number (порядковое значение по умолчанию: 1, 2 и т.д.).
Первый сектор (First sector) также пропускаем (жмем Enter), Last sector – задаем размер создаваемой партиции. В моем случае +350G – 350 гигабайт под хранилище Nextcloud.
Hex code необходимо задать вручную в зависимости от будущей файловой системы. Так как мы передаем привет Microsoft, то указываем 0700, получаем сообщение о Changed type of partition to ‘Microsoft basic data’.

Со вторым разделом операции аналогичны, за исключением того, что Last sector я не указывал – в этом случае gdisk “выберет” все оставшееся место.

Далее вводим команду w (сохранение изменений на диск), и q (выход). Разделы подготовлены.
Осталось их отформатировать, выполнив команды
mkfs -t exfat /dev/sdb1
mkfs -t exfat /dev/sdb2

С подготовкой жесткого диска закончено. Выполнив контрольный mount /dev/sdb1 /mnt убедился в том, что диск примонтировался.
Чтобы диски монтировались при старте системы, прописываем все это дело в /etc/fstab.
И тут же задаюсь вопросом: так как HDD внешний, то Debian начнет сильно матерится, если его вытащить при загрузке. А если подсунуть ему другой внешний, то устройство /dev/sdb может оказаться НЕ ТЕМ.

Для этого идем в /dev/disk/by-uuid и простым перебором по ним определяем те, которые линкуются к нашим sdb1 и sdb2. Именно их и укажем в fstab, а добавив опцию nofail отключим отказ в случае, если внешний HDD отсутствует вовсе.
UUID=3BFE-8B22 /mnt/nextcloud exfat defaults,nofail 0 0
UUID=3F8B-893C /mnt/storage exfat defaults,nofail 0 0

Перезагружаюсь как с подключенным, так и отключенным жестким диском и вижу, что Линукс без проблем распознает ситуацию. Заливаю на диск дамп данных с Nextcloud и захожу через веб-интерфейс.
И вижу неожиданное сообщение о том, что дескать, по правилам безопасности нельзя использовать раздел, который виден всем пользователям. Необходимо установить доступ только для пользователя, под которым работает Nextcloud.

В глубине души я согласен, но у меня-то файловая система ExFAT, которая не очень-то умеет в пользователей.
Но! Для “облака” у нас отведен отдельный полноценный раздел, а это значит, что мы можем монтировать его с нужными опциями.
Меняем строку UUID=3BFE-8B22 в fstab на
UUID=3BFE-8B22 /mnt/nextcloud exfat quiet,nofail,locale=en_US.utf8,uid=500,gid=500,dmode=770,fmode=660,umask=077,comment=systemd.automount 0 0

Где uid:gid – unix-идентификаторы требуемого юзера, флаги dmode – разрешения по умолчанию каталогов, fmode – файлов.

И всё. Теперь /mnt/nextcloud монтируется с доступами для нужного юзера, скрипты в них “признали своего”, а я довольный пошел пить пиво.

Опубликовано:21.07.2019

Отправить ответ

avatar
  Подписаться  
Уведомление о