Сначала смонтируйте / dev / md2
как что-то вроде / srv / DataNew
, запустите 1-й раунд копирования как root (на самом деле я бы предложил rsync , IMHO это лучше для такого рода задач):
rsync -a --delete /srv/Data/ /srv/DataNew
При желании вы можете повторно запустить cmd - второе выполнение должно быть быстрее (rsync может пропускать уже скопированные файлы и up2date) и даст приблизительное время, которое нужно использовать для оценки того, сколько времени вам нужно, чтобы остановить приложения, использующие раздел для фактического переключения раздела - см. ниже.
Затем временно остановите и отключите свои приложения, используя разделы / srv / Data (возможно, даже перезагрузите, чтобы гарантировать отсутствие переходных операций записи, которые могут привести к потере данных, убедитесь, что приложения не перезапускаются при загрузке) и повторно запустите тот же rsync cmd выше как root для обновления нового раздела с учетом любых изменений, которые могли произойти в старом разделе с момента предыдущего выполнения rsync .
Может потребоваться несколько повторных запусков, пока команда rsync не перестанет показывать обновления, что означает, что 2 раздела синхронизированы. Каждый такой повторный запуск займет примерно столько же времени, сколько и второе выполнение, упомянутое выше, если вы выбрали его
Затем отключите / srv / Data
и / srv / DataNew
] и измените файл / etc / fstab
, чтобы смонтировать / dev / md1
в / srv / DataOld
и / dev / md2
в / srv / Data
.
Затем смонтируйте / srv / Data
(и / srv / DataOld
, если вы хотите запустить еще одну проверку синхронизации) или, при желании, перезагрузите компьютер, если хотите, и система должна появиться с новой перегородкой на месте.
Если вы хотите, вы можете запустить еще одну проверку rsync, на этот раз с немного измененным cmd для новых точек монтирования (он не должен показывать никаких обновлений, если не было временных обращений):
rsync -a --delete /srv/DataOld/ /srv/Data
Теперь вы можете повторно включить и повторно -запустите свои приложения, которые не должны заметить никакой разницы (кроме лишнего дискового пространства).
Наконец, если он больше не нужен, вы можете размонтировать / srv / DataOld
и удалить его запись из / etc / fstab
- все готово.
Если вы не использовали rsync до этого, вы можете захотеть выполнить пробный запуск частей rsync, но с некоторыми временными / тестовыми каталогами и в качестве источника небольшого каталога, который обычно не меняется (чтобы не было неконтролируемых переходных процессов, которые следует избегать, если вы не остановите приложения) просто для того, чтобы привыкнуть к его работе, вы можете использовать новый раздел после монтирования, так как он пуст:
mkdir /srv/DataNew/rsync_test
rsync -a --delete /some_smaller_dir /srv/DataNew/rsync_test
имитировать временное удаление файла в / srv / Data / some_smaller_dir:
touch /srv/DataNew/rsync_test/deleted_file_equivalent
ls -la /srv/DataNew/rsync_test/deleted_file_equivalent
следующий rsync должен найти и удалить этот файл в новом каталоге (и, возможно, других переходных процессах?):
rsync -a --delete /srv/Data/some_smaller_dir /srv/DataNew/rsync_test
ls -la /srv/DataNew/rsync_test/deleted_file_equivalent
следующий rsync больше не должен находить удаленный_файл_эквивалент (повторите, если появятся другие неконтролируемые переходные процессы):
rsync -a --delete /srv/Data/some_smaller_dir /srv/DataNew/rsync_test
Наконец, удалите тестовые каталоги:
rm -rf /srv/DataNew/rsync_test
awk 'NR > 2 && (0+$6 > 90 || 0+$7 > 90)' <file
Это будет считывать данные построчно, и всякий раз, когда строка имеет число больше 90 в 6-м или 7-м поле, оно будет напечатано. Мы пропускаем первые две строки заголовка с NR > 2
и добавляем ноль к значениям в столбцах шесть и семь, чтобы принудительно преобразовать в число (знак %
в данных будет удален этим )до проверяя их против 90.
perl -lane 'print if $. <= 2 || grep { $_ > 90. } @F[5,6]' input-data.file
Строки разбиты на пробелы, а поля, хранящиеся в массиве @F
, индексируются с 0. строки заголовка (1,2 )печатаются безоговорочно, а остальные выбираются на основе фильтра, который ищет поля 6 и/или 7, составляющие не менее 90% использования.