Вы можете использовать запись DEVICE
в mdadm.conf
, чтобы учитывать только определенные имена устройств и игнорировать все остальные. По умолчанию mdadm
принимает все блочные устройства, перечисленные в /proc/partitions
.
DEVICE /dev/emc*
К сожалению, это можно считать лишь паршивым обходным решением. Это все еще огромный беспорядок, так как во многих случаях может оказаться, что используется не то устройство.
Это также проблема, с которой вы сталкиваетесь при использовании петлевых устройств:
# losetup --find --show /dev/sdi2
/dev/loop4
Теперь /dev/loop4
и /dev/sdc3
идентичны, что также означает, что они имеют один и тот же UUID:
# blkid /dev/sdi2 /dev/loop4
/dev/sdi2: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
/dev/loop4: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
Итак, какое устройство следует использовать, когда вы mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe
?
# mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe /mnt/tmp
# df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop4 2.0G 490M 1.4G 26% /mnt/tmp
В данном случае он выбрал петлевое устройство, что могло быть, а может и не быть моим намерением.
Дублирование подобных устройств представляет собой огромную проблему, потому что вдруг UUID, которые должны быть уникальными, перестают быть уникальными, и, таким образом, в конечном итоге может использоваться не то устройство.
LVM также борется с этой проблемой, она подробно описана здесь:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/duplicate_pv_multipath
К сожалению, эта документация также не предоставляет надлежащего решения, а просто предлагает обходной путь фильтрации устройств.
Для правильного решения было бы лучше полностью избегать наличия двух разных блочных устройств, представляющих одни и те же данные. Обычно это включает размещение данных со смещением. Я не знаю, есть ли у многолучевости функция смещения по умолчанию.
С таблицами разделов, mdadm, LUKS, LVM вы обычно получаете смещение бесплатно, поскольку они имеют заголовок в начале своего родительского устройства, а дочерние блочные устройства, которые они предоставляют, смещены от него.
Таким образом, в /dev/sdx вы видите только таблицу разделов, в /dev/sdx1 вы видите только заголовок mdadm, в /dev/md1 вы видите только заголовок LUKS, в /dev/mapper/cryptomd1 вы видите только заголовок LVM. и /dev/VG/LV вы видите только файловую систему, потому что каждое из этих устройств смещено относительно своих родительских данных.
Если вы проделаете то же самое для многопутевой настройки, метаданные mdadm будут видны только на /dev/emcpowera
, но не на /dev/sdk
, и последний не сможет по ошибке собраться в RAID.
После того, как вы cd
в основной каталог, содержащий подпапки.
IFS=$'\n'
for i in $(find -type f -name "*tiff"); do
echo $i
convert $i $i.jpg
done
find -type f -name "*tiff" -exec rm {} \;
IFS
— внутренний разделитель полей
Единственная проблема, которую я вижу, заключается в том, что я не смог извлечь basename
файла
Не забудьте сначала попробовать в маленькой папке, прежде чем переходить к большой