Rate this post

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

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

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

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

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

 n$ df

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

 n$ df -h

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

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

 ngzip /users/tmp/*.lognbzip2 /users/tmp/large.file.name

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

 nrm -rf /users/tmp/*.bmp

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

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

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

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

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

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

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

## Works on Linux/Unix/OSX/BSD etc ##nlsof -nP | grep '(deleted)'nn## Only works on Linux ##nfind /proc/*/fd -ls | grep  '(deleted)'

Очистите ихn

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

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

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

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

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

$ mount n$ mount | grep '/users'

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

 mount -o remount,rw /users/tmp

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

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

df -indf -i /users/

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

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

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

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

smartctl -a /dev/DEVICEn# check for /dev/sda on a Linux servernsmartctl -a /dev/sda

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

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

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

hddtemp /dev/DISKnhddtemp /dev/sg0

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

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

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

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

umount /usersnfsck -y /dev/sda8

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

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

 ## get detail on /dev/md0 raid ##nmdadm --detail /dev/md0nn## Find status ##ncat /proc/mdstatnwatch cat /proc/mdstat

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

## remove disk from an array md0 ##nmdadm --manage /dev/md0 --fail /dev/sdb1nmdadm --manage /dev/md0 --remove /dev/sdb1nn# Do the same steps again for rest of /dev/sdbX ##n# Power down if not hot-swappable hard disk: ##nshutdown -h nownn## copy partition table from /dev/sda to newly replaced /dev/sdb ##nsfdisk -d /dev/sda | sfdisk /dev/sdbnfdisk -lnn## Add it ##nmdadm --manage /dev/md0 --add /dev/sdb1n# do the same steps again for rest of /dev/sdbX ##nn# Now md0 will sync again. See it on screen ## nwatch cat /proc/mdstat

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

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

## SCSI disk nsmartctl -d scsi --all /dev/sgXnn## Adaptec RAID arrayn/usr/StorMan/arcconf getconfig 1nn## 3ware RAID Arrayntw_cli /c0 show

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