EBS 볼륨 크기가 아닌 EC2 드라이브


18

500GB EBS 볼륨을 생성 한 EC2 인스턴스가 있습니다. 불행히도 EC2 인스턴스는 8GB 만 사용할 수 있습니다.

하나의 드라이브 만 있습니다.

[root@ip-10-244-134-250 ~]# ls -la /dev/x*
brw-rw---- 1 root disk 202, 1 Aug  7 08:54 /dev/xvda1

그러나 그 드라이브는 8GB에 불과합니다.

[root@ip-10-244-134-250 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            8.0G  1.3G  6.7G  16% /
tmpfs                 3.7G     0  3.7G   0% /dev/shm

그러나 fdisk와 / proc / partitions는 모두 정확한 크기를 보여줍니다

[root@ip-10-244-134-250 ~]# fdisk -l

Disk /dev/xvda1: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda1 doesn't contain a valid partition table

[root@ip-10-244-134-250 ~]# cat /proc/partitions 
major minor  #blocks  name

 202        1  524288000 xvda1

어떤 도움이라도 대단히 감사하겠습니다.

답변:


34

루트 파일 시스템이 ext3 또는 ext4 인 경우 다음을 실행하십시오.

sudo resize2fs /dev/xvda1

루트 파일 시스템이 xfs (일반적이지 않음) 인 경우 다음을 실행하십시오.

sudo xfs_growfs /

루트로 로그인 한 경우 "sudo"를 생략 할 수 있습니다.

이 명령은 시스템이 실행 중이고 파일 시스템이 마운트되어있는 동안 실행해야합니다.

EBS 볼륨이 파티션 테이블을 포함하지 않는 것이 표준입니다. EBS 볼륨은 일반적으로 파티션이없는 전체 파일 시스템으로 포맷됩니다.


2
사람들이 설명없이 당신을 투표 할 때 나를 자극합니다. 어쨌든 이것은 아름답게 작동했습니다. 매우 감사합니다!
Christian

1
/ me는 어깨를 으 and하고 삶을 계속 움직인다. 내가 작성한 몇 가지 관련 기사는 다음과 같습니다. alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond

2
Ubuntu AMI에 포함 된 cloud-init 패키지는 부팅시 resize2fs를 자동으로 실행합니다. 클라우드 초기화도 사용하고 있기 때문에 Amazon Linux에없는 것이 놀랍습니다.
Eric Hammond

4
나는 같은 문제가 있으며 명령을 실행할 때 파일 시스템은 이미 2096896 블록 길이입니다. 할 것이 없다! 여전히 8GB입니다!
Neo

12

여기에 대한 답변은 EBS 볼륨 크기를 변경하는 사람들을 위해 특별히 크기를 조정하기 전에 몇 단계가 누락 된 것 같습니다. 스냅 샷을 사용하여 EBS 또는 특정 AMI를 생성 한 경우 디스크 (xvda)를 확장하고 파티션 (xvda1)을 확장 한 다음 파일 시스템 (/)을 확장해야합니다.

이 글을 올바르게 읽으면 디스크가 다음과 같이 보입니다.

/dev/xvda
|__/dev/xvda1__|______________ Free space______________|

다음과 같아야합니다.

/dev/xvda
|______________________/dev/xvda1______________________|

그 후 실행 resize2fs은 블록을 삭제하고 다시 생성하고 파티션을 부팅 가능하게하여 블록 크기를 늘릴 수있는를 xvda1사용하여 새로운 공간으로 확장됩니다 fdisk. 재부팅 만하면됩니다. 동일한 시작 실린더를 사용하는 경우 대부분의 경우 데이터에 영향을 미치지 않지만 파티션을 다시 만들 때 실수하면 모든 데이터가 손실되거나 서버가 재부팅되지 않습니다. 새로 만든 인스턴스의 첫 번째 단계로이 작업을 수행하는 것이 좋습니다. 그렇지 않으면 EC2 EBS 스토리지 등의 스냅 샷을 작성하십시오.

아래 블록에서 단계를 << # >>로 표시 했으므로 명령의 일부가 아닙니다. 루트 권한이 필요하므로 루트가 아닌 경우 "sudo sh"를 수행하십시오.

<<1>> Look at the filesystem, it is 6G
<<2>> Look at the disk and the partition, the disk is 21.5 GB but the partition is 6 GB (6291456 blocks)
<<3>> Start fdisk for that disk (xvda, so not the partition xvda1)
<<4>> Switch to sector display.
<<5>> Print the partition(s), and remember the start sector (2048 in the example).
<<6>> Delete the partition.
<<7>> Create a new partition.
<<8>> Make it primary.
<<9>> First partition.
<<10>> Enter the old start sector, do NOT make any typo here!!! (2048 in the example) 
<<11>> Hit enter to accept the default (this is the remainder of the disk)
<<12>> Print the changes and make sure the start sector is ok, if not restart at <<6>>
<<13>> Make the partition bootable. do NOT forget this!!!
<<14>> Enter your partition number (1 in the example)
<<15>> Write the partition info back, this will end the fdisk session.
<<16>> Reboot the server, and wait for it to come up (this may take longer than usual).
<<17>> Verify the filesystem size.
<<18>> If the filesystem is not around 20Gb as expected, you can use this command.


# df -h  <<1>>

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  2.0G  3.7G  35% / 
tmpfs            15G     0   15G   0% /dev/shm

# fdisk -l  <<2>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders
Units = cylinders of 1649 * 512 = 844288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           2        7632     6291456   83  Linux

# fdisk /dev/xvda  <<3>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u  <<4>>
Changing display/entry units to sectors

Command (m for help): p  <<5>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 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 identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    12584959     6291456   83  Linux

Command (m for help): d  <<6>>
Selected partition 1

Command (m for help): n  <<7>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<8>>
Partition number (1-4): 1  <<9>>
First sector (17-41943039, default 17): 2048  <<10>>
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <<11>>
Using default value 41943039

Command (m for help): p <<12>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 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 identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048    41943039    20970496   83  Linux

Command (m for help): a  <<13>>
Partition number (1-4): 1  <<14>>


Command (m for help): w  <<15>>
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: ...
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

# reboot  <<16>>

<wait>

# df -h  <<17>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  2.0G   17G  11% / 
tmpfs            15G     0   15G   0% /dev/shm

# resize2fs /dev/xvda1  <<18>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvda1 to 5242624 (4k) blocks.
The filesystem on /dev/xvda1 is now 5242624 blocks long.

root@vs120 [~]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  7.8G   11G  42% /
tmpfs           498M     0  498M   0% /dev/shm
/usr/tmpDSK     399M   11M  368M   3% /tmp
root@vs120 [~]#

1
파티션 확장은 볼륨이 파티션 된 경우에만 필요합니다. EC2에서는 매우 드 rare니다. EBS의 일반적인 모범 사례는 전체 원시 볼륨을 먼저 배치하지 않고 파일 시스템으로 포맷하는 것입니다. 이것은 부팅 볼륨에 특히 해당됩니다. 포지셔닝은 실제 디스크의 인공물이며 파일 시스템에 원하는 크기가 아닙니다. EC2에서는 적절한 크기의 EBS 볼륨을 생성하고 파일 시스템을 파티션없이 원시 볼륨에 드롭합니다.
Eric Hammond

1
레어에 대해 잘 모르겠습니다. Generic SSD EBS Storage로 시작한 CentOS EC2 인스턴스 모두에서 발생했습니다.
Neo

사용한 CentOS AMI는 누가 게시 했습니까?
Eric Hammond

@EricHammond centos.org
네오

4
루트 EBS 볼륨이 분할 된 AMI 작성을 중지하려면 centos.org에 청원하는 것이 좋습니다. 단일 파티션을 사용하고 있으며 크기 조정이 더 어려워지면 이점이 없습니다. 아마존은 AMI를 사용하지 않습니다. 우분투, 레드햇 등도 마찬가지입니다. 크기를 조정할 때 불필요한 불필요한 장벽없이 파일 시스템을 원시 EBS 볼륨에 간단히 배치하는 것이 가장 좋습니다.
Eric Hammond

2

EBS 볼륨의 파일 시스템 크기를 조정하십시오. 당신이 ext3(보통 기본값) 실행중인 경우 , 당신은 그냥 실행할 수 있습니다 e2resize /dev/xvda1.


먼저 볼륨이 오프라인 상태이고 마운트 해제되어 있어야합니다.
Farhan

1
하지 짝수와 막연하게 현대 리눅스 배포판. ext3 파일 시스템의 온라인 확장은 수년간 지원되었습니다.
울다

고맙습니다 womble, 나는 aws distro를 사용하고 있으며 e2resize는 없습니다. 그것은 어떤 po 레포도 아닙니다. 그냥 소스를 얻어서 직접 만들어야합니까?
Christian

1

사용자 지정 Ubuntu AMI에서 만든 인스턴스로 @Neo의 답변을 시도했습니다. 설명은 매우 도움이되었지만 단위를 블록으로 유지하고 4 단계를 건너 뛸 필요가있었습니다. 그런 다음 완벽하게 작동했습니다.

또한 단계 # 5에서 단계 # 10에서 사용할 시작 블록 / 실린더를 복사해야합니다.

@Neo의 대답은 파티션 된 가상 디스크 장치가있는 경우입니다. 다음과 같은 문제가 발생하면 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / xvda와 xvda1의 크기가 매우 다릅니다. xfda1이 5G이고 이것이 파일 시스템이 사용하는 전부입니다.

감사합니다, @Neo

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.