Exécutez une instance de test d'un NAS en utilisant un système ZFS, comme indiqué dans la section Restauration d'un serveur Ubuntu en utilisant ZFS RAIDZ pour les données .
Cette semaine, un de mes disques est mort. Cela ne devrait pas être un problème, faut-il (les avantages du RAID étant la résilience ainsi que les performances)?
Sauf que mon pool ZFS a été corrompu, comme dans:
andy@ubuntu:~$ Sudo zpool status -v
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
Heureusement, il s'agit d'une instance de test et je peux donc tout recommencer facilement. Mais que se passe-t-il si ce pool contient des données importantes? Quelle serait la prochaine étape appropriée pour récupérer les données et restaurer mon NAS en état de marche? Ou bien ZFS essaie-t-il automatiquement toutes les approches de restauration possibles, de telle sorte que les données soient maintenant grillées?
Il semble que votre pool ne soit peut-être pas corrompu. Cependant, à la sortie, il semble que plusieurs périphériques soient en difficulté. Je suppose que plusieurs disques peuvent être dans un état douteux, d’où l’état défaillant sur sdb et sdc. Déterminez ce qui ne va pas avec eux et votre groupe peut vous prouver le contraire. Cela ne ressemble pas à un état fatal de la piscine.
Armé de la perspicacité de @slashdot, j'ai principalement résolu mon problème, mais je ne sais pas vraiment ce que j'ai fait. S'il vous plaît examiner la piste suivante et m'éclairer.
En particulier lesquelles des hypothèses suivantes sont vraies et que me manque-t-il?
zdb -u tank
ni zdb -dcsv tank
n’ont rien fait d’utile.zpool import -f tank
fonctionnait alors que le premier ne fonctionnait pas, car il s'était écoulé suffisamment de temps depuis le zpool export tank
pour que ZFS puisse se réparer lui-même.LOG
andy@ubuntu:~$ zpool status
andy@ubuntu:~$ Sudo zpool status
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
andy@ubuntu:~$ Sudo zdb -u tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ Sudo zpool scrub tank
cannot scrub 'tank': pool is currently unavailable
andy@ubuntu:~$ Sudo zdb -bcsv tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ Sudo zpool export tank
andy@ubuntu:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ Sudo zpool import -f tank
cannot import 'tank': one or more devices is currently unavailable
andy@ubuntu:~$ Sudo zpool status
no pools available
andy@ubuntu:~$ Sudo zpool status -x
no pools available
andy@ubuntu:~$ Sudo zpool import
pool: tank
id: 9117894036185671023
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://www.Sun.com/msg/ZFS-8000-5E
config:
tank UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
sdb FAULTED corrupted data
sdb UNAVAIL
sdc ONLINE
andy@ubuntu:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ Sudo zpool import -f tank
andy@ubuntu:~$ Sudo zpool status
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://www.Sun.com/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h13m with 0 errors on Mon Nov 21 09:22:11 2011
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
10820373921989571629 UNAVAIL 0 0 0 was /dev/sdb1
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
andy@ubuntu:~$
Je pense que les affiches précédentes ont mis en évidence le problème. La cause probable était due à la façon dont vous avez spécifié les disques.
Mon expérience est avec ZFS sur Ubuntu. Bien que j'utilise également ZFS sur freenas, je n'ai jamais eu à me plonger dans l'implémentation de bsd.
Bien sûr, pour Ubuntu, il est vivement recommandé de spécifier vos périphériques en fonction de leur identifiant plutôt que de leur descripteur: c'est-à-dire/dev/disk/by-id/scsi-SATA-long, qui identifie de manière unique le disque physique plutôt que/dev/sda.
L'utilisation du périphérique by-id supprime toute dépendance vis-à-vis du port SATA spécifique auquel le disque est connecté.
Gareth
Pouvez-vous juste mélanger des disques?
Une fois que j'ai mélangé les disques, zpool a déclaré que "les disques contiennent des données corrompues". Après avoir connecté les disques dans la séquence précédente, il a commencé à fonctionner.
Peut-être qu'une fois que vous avez importé le réservoir, zpool a reconnu la bonne séquence.