Назад | Перейти на главную страницу

Переразметка двух дисков без потери данных

Я стажусь в компании, производящей программное обеспечение, и наткнулся на кирпичную стену. Вот сделка:

Проблема: у нас есть несколько коробок, которые были неправильно разделены для дисков 2 x 500 ГБ. Фактические диски - это 2 диска по 1 ТБ. По сути, это машины, на которых используется только половина доступного дискового пространства. Мне поручено написать сценарий для переразметки этих дисков.

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

Что я ищу: мне нужно решение, которое делает это, но сохраняет все данные. Моим первым шагом было бы просто увеличить разделы до подходящего размера, но я не уверен, возможно ли это. Другое решение - скопировать все данные на Disk2, разделить Disk1, переместить данные обратно на Disk1 и, наконец, разделить Disk2. Проблема в том, что я новичок в Linux и не знаю, как это делать. У меня есть доступ к утилите fdisk и утилите parted.

Все они типа ext3.

РЕДАКТИРОВАТЬ: 11/3/11

Ладно. Таким образом, у меня есть примерно 1 ГБ неиспользуемого, нераспределенного пространства на обоих дисках. Я хочу сделать следующее:

Кто-нибудь видит какие-либо явные проблемы, есть ли указатели, предупреждения, предложения и т. Д.?

Спасибо всем. Опять же, это потребности быть написанным по сценарию. Спасибо.

РЕДАКТИРОВАТЬ 2 Вот собственно сценарий ...

#!/bin/bash

LOG=./repartition.log 

date > $LOG 2>&1

echo "Ok, let's get started." >> $LOG 2>&1

# Resize logical partitons
parted -s /dev/sda resize 4 45GB 2000GB >> $LOG 2>&1
parted -s /dev/sdb resize 4 90GB 2000GB >> $LOG 2>&1

# Create the temporary file systems on disk 2
mke2fs -j /dev/sdb8 >> $LOG 2>&1

# Copy sda6 sda7 sda8 to sdb8
cp -r -L -p /dev/sda6 /dev/sdb8/home/sda6 >> $LOG 2>&1
cp -r -L -p /dev/sda7 /dev/sdb8/home/sda7 >> $LOG 2>&1
cp -r -L -p /dev/sda8 /dev/sdb8/home/sda8 >> $LOG 2>&1

# Remove NBD partitions on disk 1
parted -s /dev/sda rm 8 >> $LOG 2>&1
parted -s /dev/sda rm 7 >> $LOG 2>&1
parted -s /dev/sda rm 6 >> $LOG 2>&1

# Create NBD partitons on disk 1
parted -s /dev/sda mkpart logical 70GB 713GB >> $LOG 2>&1
parted -s /dev/sda mkpart logical 713GB 1356GB >> $LOG 2>&1
parted -s /dev/sda mkpart logical 1356GB 2000GB >> $LOG 2>&1

# Create the file systems on disk 1
mke2fs -j /dev/sda6 >> $LOG 2>&1
mke2fs -j /dev/sda7 >> $LOG 2>&1
mke2fs -j /dev/sda8 >> $LOG 2>&1

# Copy sda6 sda7 sda8 back to sda
cp -r -L -p /dev/sdb8/home/sda6 /dev/sda6 >> $LOG 2>&1
cp -r -L -p /dev/sdb8/home/sda7 /dev/sda7 >> $LOG 2>&1
cp -r -L -p /dev/sdb8/home/sda8 /dev/sda8 >> $LOG 2>&1

# Copy sdb5 sdb6 sdb7 to sda6 sda7 sda8
cp -r -L -p /dev/sdb5 /dev/sda6/home/sdb5 >> $LOG 2>&1
cp -r -L -p /dev/sdb6 /dev/sda7/home/sdb6 >> $LOG 2>&1
cp -r -L -p /dev/sdb7 /dev/sda8/home/sdb7 >> $LOG 2>&1

# Remove NBD partitions on disk 2
parted -s /dev/sdb rm 8 >> $LOG 2>&1
parted -s /dev/sdb rm 7 >> $LOG 2>&1
parted -s /dev/sdb rm 6 >> $LOG 2>&1
parted -s /dev/sdb rm 5 >> $LOG 2>&1

# Create NBD partitons on disk 2
parted -s /dev/sdb mkpart logical 90GB 726GB >> $LOG 2>&1
parted -s /dev/sdb mkpart logical 726GB 1362GB >> $LOG 2>&1
parted -s /dev/sdb mkpart logical 1362GB 2000GB >> $LOG 2>&1

# Create the file systems on disk 2
mke2fs -j /dev/sdb5 >> $LOG 2>&1
mke2fs -j /dev/sdb6 >> $LOG 2>&1
mke2fs -j /dev/sdb7 >> $LOG 2>&1

# Copy sdb5 sdb6 sdb7 back to sdb
cp -r -L -p /dev/sda8/home/sdb7 /dev/sdb7 >> $LOG 2>&1
cp -r -L -p /dev/sda7/home/sdb6 /dev/sdb6 >> $LOG 2>&1
cp -r -L -p /dev/sda6/home/sdb5 /dev/sdb5 >> $LOG 2>&1


rm /etc/init.d/fix_partitions >> $LOG 2>&1
rm /etc/init.d/local/99fix_partitions >> $LOG 2>&1
mv /etc/init.d/local/gca_init.off /etc/init.d/local/99gca_init >> $LOG 2>&1

echo "All set.  Please reboot.  Have a nice day." >> $LOG 2>&1

date >> $LOG 2>&1
reboot >> $LOG 2>&1

Почему это должно быть написано по сценарию? Я бы перезагрузился с загрузочного диска, такого как RIP (возможно спасение), Linux в X, запустил gparted (графическую утилиту) и изменил размер разделов оттуда. Gparted имеет возможность изменять размер разделов без повреждений (по крайней мере, у меня не было проблем с NTFS; мне вообще не приходилось делать это с разделами Linux)

НО

ВЫ ДОЛЖНЫ ИМЕТЬ РЕЗЕРВНУЮ КОПИЮ ДАННЫХ

Это просто глупо, если это важные данные, чтобы не было резервных копий и играть с разделами. Или просто глупо, в зависимости от того, насколько важны данные.

IIS использует учетную запись, отличную от той, которая используется для сопоставления. Это либо учетная запись IUSR, либо IWAM на СЕРВЕРЕ A. Что, вероятно, рассматривается как ГОСТЬ для СЕРВЕРА B. Самый простой и наиболее точный способ с технической точки зрения и безопасности будет следующий:

  1. Настройте аудит для общего ресурса, подготовленного на СЕРВЕРЕ B, чтобы отслеживать, какой пользователь пытается получить доступ к общему ресурсу, и записывать в него файлы.
  2. Создайте / измените учетные записи пользователей и / или разрешения для общего ресурса, который находится на СЕРВЕРЕ B.