ZFS - вещь.
Сегодня немного о проверке целостности и "очистке" (Scrub).
Для начала читаем Handbook, раздел,посвященный ZFS: http://www.freebsd.org/doc/ru/books/handbook/filesystems-zfs.html
Находим там пример:
1. Смотрим,что у нас вообще за система, что накручено по zfs:
Воистину RTFM.
Удачи.
Плюсуем в G+ и жду вопросов как всегда по почте a.yakimenko@gmail.com.
PS: Научите в блоге правильно выделять листинги и команды. Заранее благодарен.
Сегодня немного о проверке целостности и "очистке" (Scrub).
Для начала читаем Handbook, раздел,посвященный ZFS: http://www.freebsd.org/doc/ru/books/handbook/filesystems-zfs.html
Находим там пример:
И начинаем работу на сервере:19.2.2.4. Проверка данных
Как уже было сказано ранее, ZFS использует контрольные суммы для проверки целостности сохраненных данных. Подсчет и сохранение контрольных сумм включается автоматически во время создания файловых систем и может быть отключен при помощи команды:# zfs set checksum=off storage/homeОтключение подсчета контрольных сумм -- не очень хорошая идея; особенно ввиду того, что они занимают мало места, а также при их использовании нет существенных расходов ресурсов системы. Пока подсчет включен, возможно выполнять проверки целостности данных ZFS, используя контрольные суммы. Этот процесс известен как ''очистка (scrubbing)''. Чтобы проверить целостность данных пула storage, выполните следующую команду:# zpool scrub storageЭтот процесс может занять значительное время в зависимости от количества сохранённых данных. Очистка (scrubbing) порождает интенсивный ввод/вывод, поэтому только один экземпляр этой операции может выполняться в один момент времени. После завершения очистки (scrubbing) статус обновится, его можно просмотреть выполнив следующий запрос:# zpool status storage pool: storage state: ONLINE scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008 config: NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 raidz1 ONLINE 0 0 0 da0 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errorsВремя завершения отображается в простом виде в этом примере. Очистка помогает удостовериться в целостности данных на протяжении длительного времени.
1. Смотрим,что у нас вообще за система, что накручено по zfs:
22:18 root@backup1 /usr/home/yakuzzza# uname -aFreeBSD backup1.frunze.local 8.2-RELEASE-p2 FreeBSD 8.2-RELEASE-p2 #1: Mon Sep 5 23:57:25 EEST 2011
root@backup1.frunze.local:/usr/obj/usr/src/sys/HAMMER amd64
22:18 root@backup1 /usr/home/yakuzzza# zpool listNAME SIZE USED AVAIL CAP HEALTH ALTROOTstorage 7.25T 4.45T 2.80T 61% ONLINE -
2. Я, как будет видно из вывода команды zpool storage scrub запускал в воскресенье, но доработало оно все аж сегодня в 13:10 (простите бекапы за торможение выполнения, как будет показано дальше не зря я это делал и чуйка моя продолжает работать ;). Время выполнения 18 часов 11 минут на пуле RAIDZ из 4 дисков:
22:18 root@backup1 /usr/home/yakuzzza# zpool status pool: storage state: ONLINE scrub: scrub completed after 18h11m with 0 errors on Mon Mar 19 13:10:02 2012config:
NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 raidz1 ONLINE 0 0 0 aacd2 ONLINE 0 0 0 aacd3 ONLINE 0 0 0 85.5K repaired aacd4 ONLINE 0 0 0 aacd5 ONLINE 0 0 0
errors: No known data errors
Опля. Были проблемы. Ищем их. Находим по dmesg на проблемном диске aacd3. Попутно для поигрывания мышцами ищем что такое aacd - http://www.freebsd.org/doc/ru/books/handbook/disks-naming.html:
Диски RAID | aacd для Adaptec® AdvancedRAID, mlxd и mlyd для Mylex®, amrd для AMI MegaRAID®, idad для Compaq Smart RAID,twed для 3ware® RAID. |
Ну и глянем на это чудо:
22:29 root@backup1 /usr/home/yakuzzza# grep Adaptec /var/run/dmesg.bootaac0:mem 0xdc200000-0xdc3fffff irq 16 at device 0.0 on pci1 aac0: Adaptec 5805, aac driver 2.1.9-1
3. Так вот. Вернемся к нашему dmesg:
22:29 root@backup1 /usr/home/yakuzzza# dmesg | grep aacd3aacd3:on aac0 aacd3: 1904630MB (3900682240 sectors)aacd3: hard error cmd=read 3536013824-3536013951aacd3: hard error cmd=read 3761425023-3761425085aacd3: hard error cmd=read 3536013851-3536014021
Ну то есть нашли проблемы, которые scrub исправил. Дальше будем следить за этим диском.
Ну и еще момент. Идем по ссылке лучших практик по ZFS: http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
Находим кусок:
Run zpool scrub on a regular basis to identify data integrity problems. If you have consumer-quality drives, consider a weekly scrubbing schedule. If you have datacenter-quality drives, consider a monthly scrubbing schedule. You should also run a scrub prior to replacing devices or temporarily reducing a pool's redundancy to ensure that all devices are currently operational.Ну не SAS и не RAID Edition и не Enterprise SATA диски. Поэтому необходимо еще оставить работу для головы и наблюдательности: Когда запускать scrub по крону. Ведь активно переливаются бекапы и на выходных. Особенно делаются Full-бекапы систем. Это оставим на закуску в сегодняшнем выпуске.
Воистину RTFM.
Закуска.
Типа такого бекапа самой системы:
22:37 root@backup1 /usr/home/yakuzzza# grep dump /etc/crontab40 3 * * 6 root /root/scripts/dump.sh
22:37 root@backup1 /usr/home/yakuzzza# cat /root/scripts/dump.sh#!/bin/sh
data=`date '+20%y-%m-%d %H:%M'`backup="/storage/fs0/BACKUP_UNIX/BACKUP1/dump"root="/dev/ad10s1a"usr="/dev/ad10s1f"var="/dev/ad10s1d"
echo "$data NO Dumping SRC,ports,jails,obj,squid" >> $backup/$1-$2-$3-backup1.logchflags -R nodump /usr/srcchflags -R nodump /usr/portschflags -R nodump /usr/objchflags -R nodump /usr/local/squid
echo "$data Dumping $root - ROOT to $backup" >> $backup/backup1.logdump -0Lauf - $root > $backup/dump_ad10s1a_root.imgecho "$data Dumping $usr - USR to $backup" >> $backup/backup1.logdump -0Lauf - $usr > $backup/dump_ad10s1f_usr.imgecho "$data Dumping $var - VAR to $backup" >> $backup/backup1.logdump -0Lauf - $var > $backup/dump_ad10s1d_var.imgecho "$data End dumping BACKUP1 server."
Скрипту много лет, рисовали еще вместе с Николаем.
Плюсуем в G+ и жду вопросов как всегда по почте a.yakimenko@gmail.com.
PS: Научите в блоге правильно выделять листинги и команды. Заранее благодарен.