문제
112GB의 디렉토리를 214GB의 여유 공간이있는 서버의 RAID에 복사하려고합니다 scp
. 그러나 일부 파일을 복사 한 후 디스크가 꽉 찼다는 메시지가 표시되고 확인 후 디스크가 실제로 꽉 찼음을 알 수 있습니다. 이것이 어떻게 가능한지 이해하지 못하며 이해하고 해결하고 싶습니다.
세부
CentOS 7을 사용하고 있습니다. 디렉토리를 복사하기 전에 RAID에 OS를 설치했습니다. 이것은 df -h
설치 직후 의 결과입니다 .
[user@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 897M 50G 2% /
devtmpfs 7,8G 0 7,8G 0% /dev
tmpfs 7,8G 0 7,8G 0% /dev/shm
tmpfs 7,8G 8,9M 7,8G 1% /run
tmpfs 7,8G 0 7,8G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/mapper/centos-home 214G 33M 214G 1% /home
tmpfs 1,6G 0 1,6G 0% /run/user/1000
우분투 17.04를 실행하는 노트북에서 scp를 통해 dir을 복사하려고합니다. 이것은 dir의 크기입니다.
rick@rick-Inspiron-5448:~$ sudo du -hs /home/rick/
112G /home/rick/
보시다시피 서버 RAID에는 214GB 미만의 여유 공간이 있으며 복사하려는 디렉토리의 크기는 112GB입니다.
사용하여 복사
$ scp -r /home/rick/ user@192.168.0.132:/home/user/backup
몇 시간 동안 정상적으로 작동 한 다음 다음과 같은 출력이 반복적으로 나타납니다.
scp: /home/user/backup/rick/<filename>: No space left on device
그런 다음 입력 df -h
하면 디스크가 실제로 꽉 찼는 지 확인할 수 있습니다!
[user@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 897M 50G 2% /
devtmpfs 7,8G 0 7,8G 0% /dev
tmpfs 7,8G 0 7,8G 0% /dev/shm
tmpfs 7,8G 8,8M 7,8G 1% /run
tmpfs 7,8G 0 7,8G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/mapper/centos-home 214G 214G 20K 100% /home
tmpfs 1,6G 0 1,6G 0% /run/user/1000
따라서이 ID에서 214GB의 여유 공간이있는 디스크에 112GB를 복사하려고 시도했지만 복사가 완료되기 전에 디스크가 채워졌습니다. 여기에 뭔가 빠졌음을 알지만 무엇을 볼 수 없습니다.
서버에 구성된 RAID에 대한 정보입니다.
내 상황을 명확히하기 위해 제공 할 수있는 다른 세부 사항이 있으면 알려주십시오.
최신 정보
@AFH 의견은 문제가 i 노드와 관련이 있다고 제안 했으므로
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 26214400 25686 26188714 1% /
devtmpfs 2024232 474 2023758 1% /dev
tmpfs 2026995 1 2026994 1% /dev/shm
tmpfs 2026995 579 2026416 1% /run
tmpfs 2026995 16 2026979 1% /sys/fs/cgroup
/dev/sda1 524288 328 523960 1% /boot
/dev/mapper/centos-home 127080 126903 177 100% /home
tmpfs 2026995 1 2026994 1% /run/user/1000
또한 출력 fdisk
$ sudo fdisk -l
Disk /dev/sda: 292.3 GB, 292326211584 bytes, 570949632 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b2997
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 570949631 284425216 8e Linux LVM
따라서 실제로 inode가 가득 찼습니다. 그것을 해결하는 방법에 대한 제안?
답변
백업 사본에 심볼릭 링크가 있습니까? 그렇다면 rsync를 사용하여 내용을 복사하십시오. -r 옵션이있는 Scp도 기호 링크를 따릅니다.
답변
따라서 실제로 inode가 가득 찼습니다. 그것을 해결하는 방법에 대한 제안?
파일 시스템을 다시 포맷하지 않으면 inode 수를 늘릴 수 없습니다.
현재 사용 가능한 공간이 약 120GB이므로 inode가 없기 때문에 사용할 수 없습니다.
시도 할 수있는 것은 :
- 다음을 사용하여 LVM 파티션 (DANGEROUS)의 파일 시스템 크기를 약 110GB 줄입니다
resize2fs
. - 파일 시스템에 정확히 맞게 LVM 파티션을 줄입니다 (위험).
- 여유 공간에 새 파티션을 만듭니다
- 이제 새로운 파티션을 마운트 할 수 있습니다.
예를 들어 110GB의 공간 (/ home / user / downloads 등)에 맞는 몇 개의 디렉토리가 있는지 확인하고 해당 디렉토리의 컨텐츠를 새 파티션으로 이동 한 다음 이전 디렉토리에 파티션을 마운트하십시오. . 이제 이동 된 파일의 크기와 동일한 여유 공간 (및 inode)을 사용할 수 있습니다.
전체 작업에는 신중한 계획이 필요하므로 전체 백업을 적극 권장합니다.
답변
얼마 후 나는 문제를 해결하는 방법을 알아 냈다. 문제는 scp
파일을 복사 할 때 wine
대상 폴더가 포함 된 폴더의 크기가 원본과 완전히 다르다는 것입니다.
그것이 wine
더 많은 i-node를 차지하는 사본 과 관련이 있는지 또는 와인이 폴더 내부에서 재귀 적으로 복사되고 있는지 확실하지 않지만 df -h
,로 체크 하면 wine
폴더는 소스에서 1.5GB, 서버에서 101GB입니다. 그것은 운명이었다 scp
.
서버에서 디스크를 지우고 rsync
대신 백업을 사용하여 scp
정상적으로 작동했습니다.
도와 주신 모든 분들께 감사합니다. 힘든 주말이었습니다.