Проблема при выключении сервера

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-17 15:46:09

Иногда при выключении сервера uname -a

Код: Выделить всё

FreeBSD eng102.gateway 9.3-RELEASE-p8 FreeBSD 9.3-RELEASE-p8 #0: Wed Feb 18 00:32:59 MSK 2015     root@eng102.gateway:/usr/obj/usr/src/sys/ROUTER5.0  i386
возникает паника ядра:

Код: Выделить всё

Aug 15 21:43:13 eng102 syslogd: exiting on signal 15
Aug 15 21:44:34 eng102 syslogd: kernel boot file is /boot/kernel/kernel
Aug 15 21:44:34 eng102 kernel: .
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `vnlru' to stop...done
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `syncer' to stop...
Aug 15 21:44:34 eng102 kernel: Syncing disks, vnodes remaining...11 11 5 5 4 1 0 0 done
Aug 15 21:44:34 eng102 kernel: All buffers synced.
Aug 15 21:44:34 eng102 kernel: swap_pager: I/O error - pagein failed; blkno 4,size 4096, error 5
Aug 15 21:44:34 eng102 kernel: panic: swap_pager_force_pagein: read from swap failed
Aug 15 21:44:34 eng102 kernel: cpuid = 0
Aug 15 21:44:34 eng102 kernel: KDB: stack backtrace:
Aug 15 21:44:34 eng102 kernel: #0 0xc07f165f at kdb_backtrace+0x4f
Aug 15 21:44:34 eng102 kernel: #1 0xc07b829f at panic+0x16f
Aug 15 21:44:34 eng102 kernel: #2 0xc0a2385b at swapoff_one+0x43b
Aug 15 21:44:34 eng102 kernel: #3 0xc0a23d2d at swapoff_all+0x14d
Aug 15 21:44:34 eng102 kernel: #4 0xc07b7d70 at kern_reboot+0x4f0
Aug 15 21:44:34 eng102 kernel: #5 0xc07b8378 at sys_reboot+0x88
Aug 15 21:44:34 eng102 kernel: #6 0xc0af0e53 at syscall+0x443
У меня в качестве своп файла используется файл /usr/swap/swap.file размером 2 Гб при 1 Гб ОЗУ. Если это важно, то жесткий диск сервера это клон с аналогичной машины. На сервере откуда был скопирован образ, все в порядке. Подскажите куда копать.

С этим можно было бы мириться, если бы не одно НО: при выключении сервера упсом начинается шутдаун, а поскольку происходит паника - начинается перезагрузка с последующим запуском ОС и внезапным отключением электричества (поскольку УПС честно отключается после установленной задержки). Ну и вытекающие проблемы целостности ФС отсюда... Помогайте, ребят, очень нужно.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-17 17:31:17

wien писал(а):Иногда при выключении сервера uname -a

Код: Выделить всё

FreeBSD eng102.gateway 9.3-RELEASE-p8 FreeBSD 9.3-RELEASE-p8 #0: Wed Feb 18 00:32:59 MSK 2015     root@eng102.gateway:/usr/obj/usr/src/sys/ROUTER5.0  i386
возникает паника ядра:

Код: Выделить всё

Aug 15 21:43:13 eng102 syslogd: exiting on signal 15
Aug 15 21:44:34 eng102 syslogd: kernel boot file is /boot/kernel/kernel
Aug 15 21:44:34 eng102 kernel: .
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `vnlru' to stop...done
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
Aug 15 21:44:34 eng102 kernel: Waiting (max 60 seconds) for system process `syncer' to stop...
Aug 15 21:44:34 eng102 kernel: Syncing disks, vnodes remaining...11 11 5 5 4 1 0 0 done
Aug 15 21:44:34 eng102 kernel: All buffers synced.
Aug 15 21:44:34 eng102 kernel: swap_pager: I/O error - pagein failed; blkno 4,size 4096, error 5
Aug 15 21:44:34 eng102 kernel: panic: swap_pager_force_pagein: read from swap failed
Aug 15 21:44:34 eng102 kernel: cpuid = 0
Aug 15 21:44:34 eng102 kernel: KDB: stack backtrace:
Aug 15 21:44:34 eng102 kernel: #0 0xc07f165f at kdb_backtrace+0x4f
Aug 15 21:44:34 eng102 kernel: #1 0xc07b829f at panic+0x16f
Aug 15 21:44:34 eng102 kernel: #2 0xc0a2385b at swapoff_one+0x43b
Aug 15 21:44:34 eng102 kernel: #3 0xc0a23d2d at swapoff_all+0x14d
Aug 15 21:44:34 eng102 kernel: #4 0xc07b7d70 at kern_reboot+0x4f0
Aug 15 21:44:34 eng102 kernel: #5 0xc07b8378 at sys_reboot+0x88
Aug 15 21:44:34 eng102 kernel: #6 0xc0af0e53 at syscall+0x443
У меня в качестве своп файла используется файл /usr/swap/swap.file размером 2 Гб при 1 Гб ОЗУ. Если это важно, то жесткий диск сервера это клон с аналогичной машины. На сервере откуда был скопирован образ, все в порядке. Подскажите куда копать.

С этим можно было бы мириться, если бы не одно НО: при выключении сервера упсом начинается шутдаун, а поскольку происходит паника - начинается перезагрузка с последующим запуском ОС и внезапным отключением электричества (поскольку УПС честно отключается после установленной задержки). Ну и вытекающие проблемы целостности ФС отсюда... Помогайте, ребят, очень нужно.
есть подозрение, что umount происходит раньше освобождения swap'а, отсюда krenel panic,
так как у Вас swap в виде файла на смонтированной FS, напишите скрипт:
/usr/local/etc/rc.d/swap_off в котором будет /sbin/swapoff /usr/swap/swap.file
разумеется не одна строчка, оформить стоп скрипт по правилам.

ну и man swapoff в руки.

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-18 11:17:33

Направление мысли понял, благодарю, guest. Другой вариант. В каталоге /etc/rc.d/ есть скрипт регламентирующий работу свапа при выключении - swap1. По умолчанию при выключении не задано никаких действий (stop_cmd=':'). Я немного изменил его:

Код: Выделить всё

#!/bin/sh
#
# $FreeBSD: releng/9.3/etc/rc.d/swap1 189694 2009-03-11 12:55:12Z guido $
#

# PROVIDE: localswap
# REQUIRE: disks
# KEYWORD: nojail shutdown

. /etc/rc.subr

name="swap1"
start_cmd='swapon -aq'
stop_cmd='/sbin/swapoff /dev/md0'

load_rc_config swap
run_rc_command "$1"
Будет корректно работать? Самому проверять на рабочем сервере не хочется/не желательно постоянно дергать.

И еще. Если по команде swapctl -lh выводится:

Код: Выделить всё

Device:            Bytes      Used:
/dev/md0            2.0G       140M
правильным будет запись в скрипте: stop_cmd='/sbin/swapoff /dev/md0' или следует писать как посоветовал guest stop_cmd='/sbin/swapoff /usr/swap/swap.file' ? ИМХО - первое верно.

Добавлено позже: есть сомнения по поводу правильности использования этого скрипта, поскольку # REQUIRE: disks в шапке указывает на обязательное размонтирование всех дисков до выполнения скрипта. Поправьте, если ошибаюсь.

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-18 11:31:45

wien писал(а):Направление мысли понял, благодарю, guest. Другой вариант. В каталоге /etc/rc.d/ есть скрипт регламентирующий работу свапа при выключении - swap1. По умолчанию при выключении не задано никаких действий (stop_cmd=':'). Я немного изменил его:

Код: Выделить всё

#!/bin/sh
#
# $FreeBSD: releng/9.3/etc/rc.d/swap1 189694 2009-03-11 12:55:12Z guido $
#

# PROVIDE: localswap
# REQUIRE: disks
# KEYWORD: nojail shutdown

. /etc/rc.subr

name="swap1"
start_cmd='swapon -aq'
stop_cmd='/sbin/swapoff /dev/md0'

load_rc_config swap
run_rc_command "$1"
Будет корректно работать? Самому проверять на рабочем сервере не хочется/не желательно постоянно дергать.

И еще. Если по команде swapctl -lh выводится:

Код: Выделить всё

Device:            Bytes      Used:
/dev/md0            2.0G       140M
правильным будет запись в скрипте: stop_cmd='/sbin/swapoff /dev/md0' или следует писать как посоветовал guest stop_cmd='/sbin/swapoff /usr/swap/swap.file' ? ИМХО - первое верно.

Добавлено позже: есть сомнения по поводу правильности использования этого скрипта, поскольку # REQUIRE: disks в шапке указывает на обязательное размонтирование всех дисков до выполнения скрипта. Поправьте, если ошибаюсь.
так у Вас еще swap и на md0?
Если так, то я угадал проблему, подобное быяснялось в списках рассылки и планировали изменения,
вероятно в 10'ке уже все исправлено.

Попробуйте на виртуалке, в чем проблемы.

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-20 8:09:02

Благодарю за оперативный ответ. Еще вопрос насчет своп. Как мне принудительно заполнить своп файл в моем случае? Т.е. например хочу в своп закинуть файл в 1 Гб. Как это сделать? Пробовал cat /path/to/file > /dev/md0 - чушь какая-то получается. Хочу чтобы что-то было именно в свопе, а не дожидаться несколько дней пока туда что-нибудь выкинет сервер автоматически, исключительно для эксперимента. Спасибо!

Аватара пользователя
Alvares
прапорщик
Сообщения: 485
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение Alvares » 2015-08-20 9:35:34

файл на пару гектар открыть mcedit?
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-25 18:19:08

Проблема похоже актуальна только для 9.3-RELEASE-p8, на 9.3-RELEASE-p5 такого не наблюдается, забивал своп на 25%, что составляет около 500 Mb -все выключается корректно. Придется попытать счастье в обновлении.

Благодарю всех отозвавшихся!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение Alex Keda » 2015-08-25 19:20:44

однако, 10.2 на дворе уже...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-26 7:34:23

Новый релиз - новые баги, наелся уже этих поднятий версий в надежде на спасение, я лучше на старом версию патча подниму, если есть обновления.

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-26 13:50:28

wien писал(а):Новый релиз - новые баги, наелся уже этих поднятий версий в надежде на спасение, я лучше на старом версию патча подниму, если есть обновления.
Вы ошибаетесь считая что проблема в патчах, 9.3-p5 мало чем отличается от 9.3-p8, достаточно
выполнить svn 9.3-R до 9.3-p5, затем до 9.3-p8 и запротоколировать изменения, чтобы увидеть
отсутствие влияния патчей на Вашу проблему.

https://bugs.freebsd.org/bugzilla/show_ ... ?id=168544

это изменения /etc/rc.d/addswap для swapfiles на смонтированной FS, проверен на 7.x/8.x до 9.2,
по утверждению WBlock, но в 9.3 изменения не вошли, а в head (10) на то время, изменился подход.

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-27 13:05:26

Вижу свое спасение, только отрезав, например, от /usr те же самые 2 Гб. Вопрос: как это сделать и не потерять данные?

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-27 15:39:05

wien писал(а):Вижу свое спасение, только отрезав, например, от /usr те же самые 2 Гб. Вопрос: как это сделать и не потерять данные?
что используете в качестве FS: UFS или ZFS?

если UFS покажите:

# gpart show

ps. Вы хотите вместо swap на md и файл -> использовать сырой раздел?

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-27 18:55:46

guest писал(а):
wien писал(а):Вижу свое спасение, только отрезав, например, от /usr те же самые 2 Гб. Вопрос: как это сделать и не потерять данные?
что используете в качестве FS: UFS или ZFS?
UFS
guest писал(а):если UFS покажите:

# gpart show

Код: Выделить всё

=>        0  156301488  ada0  BSD  (74G)
          0    3072000     1  freebsd-ufs  (1.5G)
    3072000       2048     2  freebsd-swap  (1.0M)
    3074048    1024000     4  freebsd-ufs  (500M)
    4098048    4194304     5  freebsd-ufs  (2.0G)
    8292352  146800640     6  freebsd-ufs  (70G)
  155092992    1208496        - free -  (590M)
guest писал(а):ps. Вы хотите вместо swap на md и файл -> использовать сырой раздел?
Да, я хочу уйти от использования swap в виде файла на /dev/md0, отрезать от /usr 2 Гб и сделать на этом разделе свап как у людей
Не совсем понял что значит сырой раздел.Объясните пожалуйста.

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-27 19:50:44

wien писал(а):
guest писал(а):
wien писал(а):Вижу свое спасение, только отрезав, например, от /usr те же самые 2 Гб. Вопрос: как это сделать и не потерять данные?
что используете в качестве FS: UFS или ZFS?
UFS
guest писал(а):если UFS покажите:

# gpart show

Код: Выделить всё

=>        0  156301488  ada0  BSD  (74G)
          0    3072000     1  freebsd-ufs  (1.5G)
    3072000       2048     2  freebsd-swap  (1.0M)
    3074048    1024000     4  freebsd-ufs  (500M)
    4098048    4194304     5  freebsd-ufs  (2.0G)
    8292352  146800640     6  freebsd-ufs  (70G)
  155092992    1208496        - free -  (590M)
guest писал(а):ps. Вы хотите вместо swap на md и файл -> использовать сырой раздел?
Да, я хочу уйти от использования swap в виде файла на /dev/md0, отрезать от /usr 2 Гб и сделать на этом разделе свап как у людей
Не совсем понял что значит сырой раздел.Объясните пожалуйста.
сырой -> raw device, например ada0s1b

ada0 BSD (74G) - ada0 разметка BSD (странная разметка...)
ada0s1a - "/" (корень) 1.5G
ada0s1b - swap , 1M
ada0s1d - ??? , 500M ( это что /tmp?)
ada0s1e - ???, 2G (это что /var?)
ada0s1f - /usr, 70G
free - 590M свободно.

например, можно объединить ada0s1b + ada0s1d + ada0s1e = 1M + 500M + 2G и все это будет swap

Еще лучше, взять свободный диск и в single user выполнить нормальную разметку:
- сделать dump всех FS на новый
- переразметить рабочий диск используя схему GPT
- залить обратно dump'ы через restore

найти у знакомых свободный диск на 20-30 мин (74G кроха по времени для dump/restore)

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Проблема при выключении сервера

Непрочитанное сообщение wien » 2015-08-27 21:12:12

Расклад по файловым системам, для наглядности df -h

Код: Выделить всё

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/ada0a    1.4G    728M    608M    54%    /
devfs         1.0k    1.0k      0B   100%    /dev
/dev/ada0d    483M    4.2M    441M     1%    /tmp
/dev/ada0e      2G    1.6G    249M    86%    /var
/dev/ada0f     67G     59G    3.0G    95%    /usr
linprocfs     4.0k    4.0k      0B   100%    /compat/linux/proc
devfs         1.0k    1.0k      0B   100%    /var/db/dhcpd/dev
devfs         1.0k    1.0k      0B   100%    /var/named/dev
Пожалуй вы правы, лучше этот винт заново переразметить, а данные "перекантовать" на другом жестком. Меньше геммороя и риск потерять данные очень мал.

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-27 23:09:11

wien писал(а):Расклад по файловым системам, для наглядности df -h

Код: Выделить всё

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/ada0a    1.4G    728M    608M    54%    /
devfs         1.0k    1.0k      0B   100%    /dev
/dev/ada0d    483M    4.2M    441M     1%    /tmp
/dev/ada0e      2G    1.6G    249M    86%    /var
/dev/ada0f     67G     59G    3.0G    95%    /usr
linprocfs     4.0k    4.0k      0B   100%    /compat/linux/proc
devfs         1.0k    1.0k      0B   100%    /var/db/dhcpd/dev
devfs         1.0k    1.0k      0B   100%    /var/named/dev
Пожалуй вы правы, лучше этот винт заново переразметить, а данные "перекантовать" на другом жестком. Меньше геммороя и риск потерять данные очень мал.
риска нет. (Кстати у Вас диск оформлен как Dangerous Dedicated: ada0[a,b,с,d,...] - классически без
слайсов)

предварительно оформляем свободный диск на другой машине (для экономии времени):
# gpart create -s GPT /dev/adaX
# gpart add -t freebsd-ufs adaX (целиком)
или 90GB
# gpart add -s 90G -t freebsd-ufs adaX
# newfs -U /dev/adaXp1

Берем disc1, лучше memstick:

- грузимся в single user mode, переходим liveCD режим (если грузимся с disc1, то там /tmp
смонтирован на кусок RAM - его и используем для монтирования, посему
больше предпочитаю memstick и загрузку с USB)

допустим боевой диск ada0, временный ada1
# mkdir /tmp/oldhdd
# mkdir /tmp/newhdd
# fsck_ffs -y /dev/ada1p1
# mount /dev/ada1p1 /tmp/newhdd

делаем бекап боевого в /tmp/newhdd

# dump -0af /tmp/newhdd/root.dump /dev/ada0a

при таком размере как 74G, делать отдельно /tmp и /var - нет смысла, посему /var можно перенести
tar'ом, /tmp - тоже (если нужно)

- создаем директории для монтирования боевых /tmp и /var
# mkdir /tmp/oldhdd/tmp
# mkdir /tmp/oldhdd/var
- прогоняем fsck
# fsck_ffs -y /dev/ada0d
# fsck_ffs -y /dev/ada0e
- монтируем
# mount /dev/ada0d /tmp/oldhdd/tmp
# mount /dev/ada0e /tmp/oldhdd/var
# cd /tmp/oldhdd
# tar -cvf /tmp/newhdd/tmp.tar tmp
# tar -cvf /tmp/newhdd/var.tar var

копии созданы: dump и два tar-архива

- отмонтируем боевые /tmp и /var
# umount /tmp/oldhdd/tmp
# umount /tmp/oldhdd/var

- размечаем боевой диск: bootable ada0 as GPT

# gpart create -s GPT ada0
# gpart add -b 34 -s 128 -t freebsd-boot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

- создаем корневую
# gpart add -s 71G -t freebsd-ufs ada0
- создаем swap на все оставшееся
# gpart add -t freebsd-swap ada0
- создаем FS (для root только SU и ни каких SUJ)
# newfs -U /dev/ada0p2

- монтируем новый рабочий корень
# fsck_ffs -y /dev/ada0p2
# rm -rf /tmp/oldhdd/* (удаляем tmp и var)
# mount /dev/ada0p2 /tmp/oldhdd

- восстанавливаем корень
# cd /tmp/oldhdd
# restore -rf /tmp/newhdd/root.dump
- восстанавливаем /tmp и /var
# cd /tmp/oldhdd
# tar -xvpf /tmp/newhdd/tmp.tar
# tar -xvpf /tmp/newhdd/var.tar

- правим /etc/fstab -> vi /tmp/oldhdd/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ada0p3 none swap sw 0 0
/dev/ada0p2 / ufs rw 1 1
...
- правим если нужно /etc/rc.conf -> vi /tmp/oldhdd/etc/rc.conf

все, перезагружаемся

ps. Верхнее обдумать и проверить, если страшно, сделать предварительно копию dd в файл.
Делать fsck_ffs в single user - всегда перед монтированием, береженого - бог бережет.
По прикидкам - 15-20 минут.

guest
проходил мимо

Проблема при выключении сервера

Непрочитанное сообщение guest » 2015-08-28 0:11:53

Что и следовало ожидать:

- упустил монтирование и копирование старого /usr - аналогично /tmp и /var

ну раз корень, /tmp, /var у нас маленькие, то можно еще быстрей и без dump/restore,
а сразу все tar'ом или pax'ом:

# fsck_ffs -y /dev/ada0a (/)
# fsck_ffs -y /dev/ada0d (/tmp)
# fsck_ffs -y /dev/ada0e (/var)
# fsck_ffs -y /dev/ada0f (/usr)

монтируем старый

# mkdir /tmp/oldhdd
# mount /dev/ada0a /tmp/oldhdd
# mount /dev/ada0d /tmp/oldhdd/tmp
# mount /dev/ada0e /tmp/oldhdd/var
# mount /dev/ada0f /tmp/oldhdd/usr

монтируем новый с одной пустой FS под корень

# mount /dev/ada0p2 /tmp/newhdd

копируем

# cd /tmp/oldhdd ; tar -cf - . | (cd /tmp/newhdd ; tar -xpf -)

для наглядности можно опцию "v" добавить (verbose)

# cd /tmp/oldhdd ; tar -cvf - . | (cd /tmp/newhdd ; tar -xvpf -)