Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

8 советов для решения проблем с диском Linux и Unix

Can’t write to the hard disk — (не могу записать на жесткий диск) на Linux/Unix системах. Получали такое сообщение? Хотите проверить поврежден ли диск или нет? Хотите понять почему получили сообщение «диск переполнен»? Попробуйте эти 8мь советов, что бы решить проблему с диском.

1. Ошибка: Нет свободного места на устройстве

Когда диск полон на Unix-подобной системе вы получите сообщение об ошибке на экране. Вот например

 Fallocate -l 1G test4.img
 fallocate: test4.img: fallocate не удалось: Нет свободного места на устройстве

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

 
$ df

Или попробуйте читаемый формат

 
$ df -h

Решение проблемы, когда диск полон:

Сжатие журналов и других файлов используя GZIP или bzip2

 
gzip /users/tmp/*.log
bzip2 /users/tmp/large.file.name

Удалить ненужные файлы с помощью команды rm на Unix-подобной системе

 
rm -rf /users/tmp/*.bmp

Перемещение файлов на другой раздел системы или внешний жесткий диск, используя Rsync команду:

 rsync --remove-source-files -azv /users/tmp/*.mov /mnt/usbdisk/
rsync --remove-source-files -azv /users/tmp/*.mov server2:/path/to/dest/dir/

Узнайте самые большие каталоги или файлы которые используют дисковое пространство на Unix-подобных systesm:

du -a /users/tmp | sort -n -r | head -n 10
du -cks * | sort -rn | head

Обрезать конкретный файл. Это полезно для файла журнала:
truncate -s 0 /ftpusers/ftp.upload.log

### bash/sh etc ##
>/users/ftp.upload.log
## perl ##
perl -e'truncate "filename", LENGTH'

Найти и удалить большие файлы, которые открыты, но были удалены на Linux или Unix:

## Works on Linux/Unix/OSX/BSD etc ##
lsof -nP | grep '(deleted)'

## Only works on Linux ##
find /proc/*/fd -ls | grep  '(deleted)'

Очистите их

## works on Linux/Unix/BSD/OSX etc all ##
> "/path/to/the/deleted/file.name"
## works on Linux only ##
> "/proc/PID-HERE/fd/FD-HERE"

2. Файловая система находится в режиме только для чтения

Вы можете в конечном итоге получить такое сообщение об ошибке следующим образом, когда вы пытаетесь создать файл или сохранить файл:

cat > file
-bash: file: Read-only file system

Запустите команду монтирования, чтобы узнать, файловая система смонтирована в режиме только чтение:

$ mount 
$ mount | grep '/users'

Чтобы устранить эту проблему, просто перемонтировать файловую систему в режиме чтения-записи:

 mount -o remount,rw /users/tmp

3. Проблема с дескриптором

Иногда, DF команда сообщает, что есть достаточно свободного места, но система утверждает, файловая система заполнена. Вы должны проверить inode, которые идентифицируют файл и его атрибуты на файловых системах с помощью следующей команды:

df -i
df -i /users/

Если 100% ваших дескрипторов используются, попробуйте следующие варианты:

  • Найти ненужных файлов и удалять или перемещать на другой сервер.
  • Найти нежелательные большие файлы и удалить или переместить на другой сервер.

4. Жесткий диск умирает

Ошибки ввода / вывода в лог-файл (например, /var/log/messages) указывает, что что-то не так с жестким диском, и это может быть сбой. Вы можете проверить жесткий диск на наличие ошибок, используя команду smartctl. Синтаксис:

smartctl -a /dev/DEVICE
# check for /dev/sda on a Linux server
smartctl -a /dev/sda

Вы также можете использовать «Disk Utility», чтобы получить ту же информацию

5. Диску или серверу сильно жарко.

Высокие температуры могут привести к плохому функционированию. Так что вам нужно поддерживать нужной температуры сервера и диска. Высокие температуры могут привести к завершении работы сервера или повреждения системы и файлов на диске. Только современные жесткие диски имеют датчик температуры. Hddtemp поддерживает чтение SMART информации от SCSI-диски тоже. Hddtemp может работать как простой инструмент командной строки или как демон, чтобы получить информацию от всех серверов:

hddtemp /dev/DISK
hddtemp /dev/sg0

Вы можете использовать команду smartctl тоже:

smartctl -d ata -A /dev/sda | grep -i temperature/pre>
Как получить температуру процессора?
Вы можете использовать аппаратное средство мониторинга Linux, таких как lm_sensor, чтобы получить температуру процессора на основе Linux системы:
sensors

6.Работа с поврежденными файловыми системами

Файловая система на сервере, может повредится из-за жесткого перезагрузки или какой-либо другой ошибки, такие как плохие блоки. Вы можете восстановить поврежденные файловые системы следующей FSCK команды:

umount /users
fsck -y /dev/sda8

7.Работа с программным обеспечением RAID на Linux

Чтобы получить текущее состояние программного RAID в Linux введите следующую команду:

 ## get detail on /dev/md0 raid ##
mdadm --detail /dev/md0

## Find status ##
cat /proc/mdstat
watch cat /proc/mdstat

Вы должны заменить неисправный жесткий диск. В этом примере, я собираюсь заменить /dev/sdb (2-й жесткий диск RAID 6). Это работает, только если ваш сервер поддерживают горячую замену жесткого диска:

## remove disk from an array md0 ##
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md0 --remove /dev/sdb1

# Do the same steps again for rest of /dev/sdbX ##
# Power down if not hot-swappable hard disk: ##
shutdown -h now

## copy partition table from /dev/sda to newly replaced /dev/sdb ##
sfdisk -d /dev/sda | sfdisk /dev/sdb
fdisk -l

## Add it ##
mdadm --manage /dev/md0 --add /dev/sdb1
# do the same steps again for rest of /dev/sdbX ##

# Now md0 will sync again. See it on screen ## 
watch cat /proc/mdstat

8. Работа с аппаратным RAID

Вы можете использовать команду samrtctl или поставщика, чтобы узнать статус RAID и дисков в контроллере:

## SCSI disk 
smartctl -d scsi --all /dev/sgX

## Adaptec RAID array
/usr/StorMan/arcconf getconfig 1

## 3ware RAID Array
tw_cli /c0 show

Обратитесь к поставщику конкретной документации, чтобы заменить неисправный диск

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.