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
Обратитесь к поставщику конкретной документации, чтобы заменить неисправный диск