Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tuto:sauvegardes:externalisation_raid1 [25/10/2012 13:54] dani [COS 4 (SME7)] |
tuto:sauvegardes:externalisation_raid1 [13/09/2016 11:11] dani |
||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
< | < | ||
- | fdisk /dev/sdc | + | gdisk /dev/sdc |
- | [...](création d'une partition primaire /dev/sdc1 type fd) | + | [...](création d'une partition primaire /dev/sdc1 type fd00) |
</ | </ | ||
Maintenant, nous allons créer le volume RAID /dev/md0 | Maintenant, nous allons créer le volume RAID /dev/md0 | ||
< | < | ||
- | mdadm --create /dev/md0 --level=1 --force --raid-devices=1 /dev/sdc1 | + | mdadm --create / |
</ | </ | ||
Ligne 25: | Ligne 25: | ||
< | < | ||
- | mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1 | + | mdadm --create / |
</ | </ | ||
- | La suite est classique, on crée un pv sur /dev/md0, puis un vg, et enfin un lv (en laissant toujours un peu d' | + | La suite est classique, on crée un pv sur /dev/md0, puis un vg, et enfin un lv (en laissant toujours un peu d' |
===== Repérer les informations des disques d' | ===== Repérer les informations des disques d' | ||
Ligne 107: | Ligne 107: | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
+ | |||
# Read configuration | # Read configuration | ||
if [ -e / | if [ -e / | ||
Ligne 115: | Ligne 115: | ||
exit 1 | exit 1 | ||
fi | fi | ||
- | + | ||
- | + | ||
+ | |||
# Find if one of the removable disk is present | # Find if one of the removable disk is present | ||
# The first one will be used | # The first one will be used | ||
Ligne 127: | Ligne 127: | ||
fi | fi | ||
done | done | ||
+ | |||
# Check if a lock file exists | # Check if a lock file exists | ||
# And that the removable device exists | # And that the removable device exists | ||
Ligne 145: | Ligne 145: | ||
RAID_DEVICES=$(/ | RAID_DEVICES=$(/ | ||
logger "The array $RAID has $RAID_DEVICES active member(s)" | logger "The array $RAID has $RAID_DEVICES active member(s)" | ||
+ | |||
# Grow the RAID device to include one more drive (missing for now) | # Grow the RAID device to include one more drive (missing for now) | ||
logger " | logger " | ||
- | /sbin/mdadm --grow $RAID --raid-devices=$(($RAID_DEVICES+1)) | + | /sbin/mdadm --grow $RAID --raid-devices=$(($RAID_DEVICES+1)) |
+ | if [ -e "/ | ||
+ | # Check the max_sectors_kb before adding the new drive | ||
+ | OLDSIZE=$(cat / | ||
+ | |||
+ | # Freeze the FS | ||
+ | / | ||
+ | fi | ||
+ | |||
# Add the removable device to the raid array | # Add the removable device to the raid array | ||
logger " | logger " | ||
- | /sbin/mdadm --manage $RAID --add $REMOVABLE_DEVICE | + | /sbin/mdadm --manage $RAID --add --write-mostly |
- | SYNCING=1 | + | if [ -e "/ |
+ | # Now check the new max_sectors_kb | ||
+ | NEWSIZE=$(cat / | ||
+ | REMOUNT=" | ||
+ | # max_sectors_kb has changed ? | ||
+ | if [ " | ||
+ | # We need to update the max_sectors_kb of the device backing the filesystem | ||
+ | # to prevent bio too big errors | ||
+ | FSDEV=$(basename $(readlink / | ||
+ | FSDEVSIZE=$(cat / | ||
+ | if [ $FSDEVSIZE -gt $NEWSIZE ]; then | ||
+ | cat / | ||
+ | REMOUNT=" | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | # Unfreez the FS | ||
+ | / | ||
+ | |||
+ | # Remount the FS if needed (not sure if it's really needed) | ||
+ | if [ " | ||
+ | mount -o remount $TOPDIR | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | SYNCING=1 | ||
+ | |||
# Check if the sync is still running | # Check if the sync is still running | ||
while [ $SYNCING -ne 0 ]; do | while [ $SYNCING -ne 0 ]; do | ||
Ligne 161: | Ligne 195: | ||
SYNCING=$(/ | SYNCING=$(/ | ||
done | done | ||
+ | |||
logger "RAID array $RAID is now fully synced" | logger "RAID array $RAID is now fully synced" | ||
+ | |||
if [ " | if [ " | ||
# Stop backuppc and wait a few seconds to be sure the fs is clean | # Stop backuppc and wait a few seconds to be sure the fs is clean | ||
logger " | logger " | ||
- | /etc/init.d/backuppc stop | + | /sbin/service |
/bin/sync | /bin/sync | ||
/bin/sleep 10 | /bin/sleep 10 | ||
+ | |||
# Now we can umount the volume | # Now we can umount the volume | ||
logger " | logger " | ||
Ligne 177: | Ligne 211: | ||
sync; sync | sync; sync | ||
fi | fi | ||
+ | |||
# Mark the disk as faulty | # Mark the disk as faulty | ||
logger " | logger " | ||
/sbin/mdadm --manage $RAID --fail $REMOVABLE_DEVICE | /sbin/mdadm --manage $RAID --fail $REMOVABLE_DEVICE | ||
sleep 1 | sleep 1 | ||
+ | |||
# Remove it | # Remove it | ||
/sbin/mdadm --manage $RAID --remove $REMOVABLE_DEVICE | /sbin/mdadm --manage $RAID --remove $REMOVABLE_DEVICE | ||
+ | |||
# And shrink the raid array so it doesn' | # And shrink the raid array so it doesn' | ||
# Only use the force flag if $RAID_DEVICES is one | # Only use the force flag if $RAID_DEVICES is one | ||
Ligne 194: | Ligne 228: | ||
fi | fi | ||
/sbin/mdadm --grow $RAID $FORCE --raid-devices=$RAID_DEVICES | /sbin/mdadm --grow $RAID $FORCE --raid-devices=$RAID_DEVICES | ||
+ | |||
if [ " | if [ " | ||
# We can remount the volume | # We can remount the volume | ||
logger " | logger " | ||
mount $TOPDIR | mount $TOPDIR | ||
+ | |||
# and restart BackupPC | # and restart BackupPC | ||
logger "And BackupPC server can be restarted" | logger "And BackupPC server can be restarted" | ||
- | /etc/init.d/backuppc start | + | /sbin/service |
fi | fi | ||
+ | |||
# Send a mail | # Send a mail | ||
if [ ! -z " | if [ ! -z " | ||
Ligne 212: | Ligne 246: | ||
done | done | ||
fi | fi | ||
+ | |||
# Now loop until the link to $REMOVABLE_DEVICE is no longer here (ie. the drive is disconnected) | # Now loop until the link to $REMOVABLE_DEVICE is no longer here (ie. the drive is disconnected) | ||
# This is to prevent the sync to start over and over | # This is to prevent the sync to start over and over | ||
Ligne 219: | Ligne 253: | ||
/bin/sleep 10 | /bin/sleep 10 | ||
done | done | ||
+ | |||
# And remove the lock | # And remove the lock | ||
logger " | logger " | ||
/bin/rm -f $LOCK | /bin/rm -f $LOCK | ||
- | |||
</ | </ | ||
Ligne 266: | Ligne 299: | ||
Et on place également le fichier text qui contient le corps du mail à envoyer, dans / | Et on place également le fichier text qui contient le corps du mail à envoyer, dans / | ||
< | < | ||
- | Les sauvegardes ont été copié | + | Les sauvegardes ont été copiées |
L' | L' | ||
</ | </ |