1

У меня работает домашний сервер Proxmox с двумя zpools. Я хочу заменить существующий пул с меньшими HDD на новый. Но когда я подключаю один из двух новых жестких дисков SATA, мой zpools не работает. В журналах сказано, что важный диск отсутствует. Когда я отправляю новый диск, все работает нормально.

Я узнал, что мой новый диск смонтирован на sda . Но один из старых дисков в существующем zpool также монтируется в sda когда новый не подключен. Что я могу сделать, чтобы избежать этого конфликта? Мне нужно сообщить linux, что sda зарезервирован для старого диска из zpool, и он должен использовать sdg для нового.

Я запутался, что такое поведение может даже случиться. В результате Linux не связывает точки монтирования с такими дисками, как буквы дисков в Windows. Я думаю, что было ошибкой использовать точку монтирования, и я должен использовать какой-то уникальный идентификатор (UUID?) в зпуле. Но как я могу это сделать? У меня есть существующие пулы zfs, где я использовал точки монтирования.

1 ответ1

2

Некоторые базовые знания по проблеме

После небольшого исследования и попыток я обнаружил, что zfs использовал точки монтирования. Поэтому моя теория была верна: точки монтирования не являются статичными, как буквы дисков в Windows. Вместо этого Linux назначает их в порядке обнаружения во время загрузки. Добавление или удаление дисков может смешивать точки монтирования.

Простой пример:

sda -> Drive #1
sdb -> Drive #2
sdc -> Drive #3

Теперь мы добавляем новый диск № 4. Это может быть вставлено так:

sda -> Drive #1
sdb -> Drive #4
sdc -> Drive #2
sde -> Drive #3

Если мы зависим от точки монтирования, у нас сейчас проблемы: наша система ожидает диск № 2 в sdb , но получил совершенно другой (диск № 4). Согласно архивной вики, это может произойти даже во время обычной загрузки без каких-либо изменений в hdds.

Что мы можем сделать?

Что ж, использование этих точек монтирования кажется плохой идеей. Вместо этого мы должны использовать постоянные именования блочных устройств , которые доступны с помощью udev. Он должен быть доступен в любом современном дистрибутиве Linux. В именах постоянных блоков не используются нейтральные имена, такие как sda или sdb . Вместо этого он создает какие-то имена, которые постоянно связаны с диском. Они сопоставимы с буквами дисков в Windows (да, имейте в виду, что буквы дисков связаны с разделами, где имена блоков идентифицируют диск, но оба они являются постоянными!).

by-id и by-uuid кажется, наиболее актуальны для решения этой проблемы, но есть и другие. Вы можете прочитать более подробное объяснение на связанной вики-странице от Arch. Это общая статья, которая может применяться и к другим дистрибутивам. Для этой проблемы важно знать, что uuids - это своего рода уникальный идентификатор. И мы можем использовать ids как лучшую читаемую альтернативу, потому что они используют специфическую для жесткого диска информацию, такую как производитель, модель и серийный номер.

ZFS

Как описано здесь, необходимо было экспортировать все пулы, а затем повторно импортировать их, но с ключом -d . Он сообщает zpool, где искать устройства:

zpool export <poolname>
zpool import -d /dev/disk/by-id <poolname>

Используя zpool status это можно проверить: перед экспортом / импортом вы должны увидеть точки монтирования, такие как /dev/sda для устройств. Это должно измениться на идентификаторы дисков после этой процедуры.

Обычные объемы (необязательно)

Для меня этого было недостаточно: у меня есть дополнительный жесткий диск, называемый буфер для таких вещей, как ISO-образы. Нет важных данных, только чтобы избавиться от моего SSD. Так что это был классический объем ext3. Это препятствует загрузке моего сервера, поскольку здесь происходит точно такая же проблема: точка монтирования изменила причину появления новых дисков, что привело к сбою монтирования.

Я решил это, просто удалив этот диск. В любом случае, это была моя идея, поскольку новые жесткие диски достаточно велики, и я мог бы сэкономить энергию, имея меньше дисков. Для этого мы должны удалить хранилище из proxmox, используя файл /etc/pve/storage.cfg . В моем случае соответствующая часть выглядит так:

dir: buffer
path /buffer
content iso

После удаления мы должны взглянуть на /etc/fstab . Этот файл монтирует наш /buffer том, где возникает основная причина:

/dev/sdf /buffer ext3 rw 0 0

Как видите, точка монтирования /dev/sdf присутствует здесь. Если вы не хотите отклонять диск, как я, просто используйте уникальную точку монтирования здесь! Например /dev /disk /by-id. Это пример имен постоянных блочных устройств. Они генерируются на основе зависимых от устройства данных. Например, by-id использует аппаратный серийный номер. Таким образом, мы даже можем создать два одинаковых диска. Читайте больше в первом параграфе для справочной информации.

В моем случае простое удаление этой строки не позволяет linux монтировать мой жесткий диск. Если у вас есть больше томов, необходимо повторить эти шаги для каждого из них, чтобы избежать перезагрузки после каких-либо проблем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .