8 советов для решения проблем с диском Linux и Unix
Can’t write to the hard disk — (не могу записать на жесткий диск) на Linux/Unix системах. Получали такое сообщение? Хотите проверить поврежден ли диск или нет? Хотите понять почему получили сообщение «диск переполнен»? Попробуйте эти 8мь советов, что бы решить проблему с диском.
1. Ошибка: Нет свободного места на устройстве
Когда диск полон на Unix-подобной системе вы получите сообщение об ошибке на экране. Вот например
1 2 |
Fallocate -l 1G test4.img fallocate: test4.img: fallocate не удалось: <strong>Нет свободного места на устройстве</strong> |
Первым шагом является запуск команды DF, чтобы узнать информацию об общем пространстве и свободном пространстве в файловой системе, включая разделы:
1 |
$ df |
Или попробуйте читаемый формат
1 |
$ df -h |
Решение проблемы, когда диск полон:
Сжатие журналов и других файлов используя GZIP или bzip2
1 2 |
gzip /users/tmp/*.log bzip2 /users/tmp/large.file.name |
Удалить ненужные файлы с помощью команды rm на Unix-подобной системе
1 |
rm -rf /users/tmp/*.bmp |
Перемещение файлов на другой раздел системы или внешний жесткий диск, используя Rsync команду:
1 2 |
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:
1 2 |
du -a /users/tmp | sort -n -r | head -n 10 du -cks * | sort -rn | head |
Обрезать конкретный файл. Это полезно для файла журнала:
truncate -s 0 /ftpusers/ftp.upload.log
1 2 3 4 |
### bash/sh etc ## >/users/ftp.upload.log ## perl ## perl -e'truncate "filename", LENGTH' |
Найти и удалить большие файлы, которые открыты, но были удалены на Linux или Unix:
1 2 3 4 5 |
## Works on Linux/Unix/OSX/BSD etc ## lsof -nP | grep '(deleted)' ## Only works on Linux ## find /proc/*/fd -ls | grep '(deleted)' |
Очистите их
1 2 3 4 |
## 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. Файловая система находится в режиме только для чтения
Вы можете в конечном итоге получить такое сообщение об ошибке следующим образом, когда вы пытаетесь создать файл или сохранить файл:
1 2 |
cat > file -bash: file: Read-only file system |
Запустите команду монтирования, чтобы узнать, файловая система смонтирована в режиме только чтение:
1 2 |
$ mount $ mount | grep '/users' |
Чтобы устранить эту проблему, просто перемонтировать файловую систему в режиме чтения-записи:
1 |
mount -o remount,rw /users/tmp |
3. Проблема с дескриптором
Иногда, DF команда сообщает, что есть достаточно свободного места, но система утверждает, файловая система заполнена. Вы должны проверить inode, которые идентифицируют файл и его атрибуты на файловых системах с помощью следующей команды:
1 2 |
df -i df -i /users/ |
Если 100% ваших дескрипторов используются, попробуйте следующие варианты:
- Найти ненужных файлов и удалять или перемещать на другой сервер.
- Найти нежелательные большие файлы и удалить или переместить на другой сервер.
4. Жесткий диск умирает
Ошибки ввода / вывода в лог-файл (например, /var/log/messages) указывает, что что-то не так с жестким диском, и это может быть сбой. Вы можете проверить жесткий диск на наличие ошибок, используя команду smartctl. Синтаксис:
1 2 3 |
smartctl -a /dev/DEVICE # check for /dev/sda on a Linux server smartctl -a /dev/sda |
Вы также можете использовать «Disk Utility», чтобы получить ту же информацию
5. Диску или серверу сильно жарко.
Высокие температуры могут привести к плохому функционированию. Так что вам нужно поддерживать нужной температуры сервера и диска. Высокие температуры могут привести к завершении работы сервера или повреждения системы и файлов на диске. Только современные жесткие диски имеют датчик температуры. Hddtemp поддерживает чтение SMART информации от SCSI-диски тоже. Hddtemp может работать как простой инструмент командной строки или как демон, чтобы получить информацию от всех серверов:
1 2 |
hddtemp /dev/DISK hddtemp /dev/sg0 |
Вы можете использовать команду smartctl тоже:
1 2 3 |
smartctl -d ata -A /dev/sda | grep -i temperature/pre> Как получить температуру процессора? Вы можете использовать аппаратное средство мониторинга Linux, таких как lm_sensor, чтобы получить температуру процессора на основе Linux системы: |
1 |
sensors |
6.Работа с поврежденными файловыми системами
Файловая система на сервере, может повредится из-за жесткого перезагрузки или какой-либо другой ошибки, такие как плохие блоки. Вы можете восстановить поврежденные файловые системы следующей FSCK команды:
1 2 |
umount /users fsck -y /dev/sda8 |
7.Работа с программным обеспечением RAID на Linux
Чтобы получить текущее состояние программного RAID в Linux введите следующую команду:
1 2 3 4 5 6 |
## get detail on /dev/md0 raid ## mdadm --detail /dev/md0 ## Find status ## cat /proc/mdstat watch cat /proc/mdstat |
Вы должны заменить неисправный жесткий диск. В этом примере, я собираюсь заменить /dev/sdb (2-й жесткий диск RAID 6). Это работает, только если ваш сервер поддерживают горячую замену жесткого диска:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
## 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 и дисков в контроллере:
1 2 3 4 5 6 7 8 |
## SCSI disk smartctl -d scsi --all /dev/sgX ## Adaptec RAID array /usr/StorMan/arcconf getconfig 1 ## 3ware RAID Array tw_cli /c0 show |
Обратитесь к поставщику конкретной документации, чтобы заменить неисправный диск