ไดรฟ์ EC2 ไม่ใช่ขนาดโวลุ่ม EBS


18

ฉันมีอินสแตนซ์ EC2 ซึ่งฉันสร้างไดรฟ์ข้อมูล 500GB EBS สำหรับ น่าเสียดายที่อินสแตนซ์ 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 / พาร์ทิชันทั้งสองแสดงขนาดที่ถูกต้อง

[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" หากคุณเข้าสู่ระบบในฐานะ root

ควรรันคำสั่งเหล่านี้ขณะที่ระบบกำลังทำงานและระบบไฟล์ถูกเมาท์

เป็นมาตรฐานสำหรับไดรฟ์ข้อมูล EBS ที่ไม่มีตารางพาร์ติชัน โดยทั่วไปปริมาณ EBS จะถูกจัดรูปแบบเป็นระบบไฟล์ทั้งหมดโดยไม่มีพาร์ติชัน


2
ทำให้ฉันรำคาญใจเมื่อมีคนโหวตให้คุณโดยไม่มีคำอธิบายใด ๆ อย่างไรก็ตามมันใช้งานได้อย่างสวยงาม ขอบคุณมาก ๆ!
คริสเตียน

1
/ ฉันยักไหล่และเดินหน้าต่อไปด้วยชีวิต :-) ดีใจที่ได้ช่วยเหลือ นี่คือบทความที่เกี่ยวข้องสองสามข้อที่ฉันเขียน: alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond

2
โปรดทราบว่าแพ็คเกจ cloud-init ที่รวมอยู่ใน Ubuntu AMIs จะเรียกใช้ resize2fs โดยอัตโนมัติเมื่อบูต ฉันประหลาดใจที่นี่ไม่ได้อยู่ใน Amazon Linux เพราะพวกเขาใช้ cloud-init ด้วย
Eric Hammond

4
ฉันมีปัญหาเดียวกันและเมื่อฉันเรียกใช้คำสั่งมันพูดว่า: ระบบไฟล์มีความยาว 2096896 บล็อก ไม่มีอะไรทำ! มันยังคงเป็น 8GB!
Neo

12

คำตอบที่นี่ดูเหมือนจะหายไปไม่กี่ขั้นตอนก่อนที่จะปรับขนาดอีกครั้งโดยเฉพาะสำหรับผู้ที่กำลังเปลี่ยนขนาดปริมาณ EBS ของพวกเขา หากคุณใช้สแน็ปช็อตเพื่อสร้าง EBS หรือด้วย AMIs บางตัวคุณจะต้องขยายดิสก์ (xvda) ให้ขยายพาร์ติชัน (xvda1) จากนั้นขยายระบบไฟล์ (/)

ถ้าฉันอ่านอย่างถูกต้องดิสก์ของคุณจะเป็นดังนี้:

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

มันต้องเป็นแบบนี้:

/dev/xvda
|______________________/dev/xvda1______________________|

หลังจากนั้นการรันresize2fsจะขยายไปสู่พื้นที่ใหม่ภายในการxvda1ใช้fdiskเราสามารถเพิ่มขนาดบล็อกได้โดยการลบและสร้างใหม่อีกครั้งและทำให้พาร์ติชันสามารถบูตได้ สิ่งที่ต้องการคือรีบูต ในกรณีส่วนใหญ่มันจะไม่ส่งผลกระทบต่อข้อมูลของคุณหากคุณใช้สตาร์ทอัพทรงกระบอกเดียวกัน แต่โปรดทราบว่าความผิดพลาดใด ๆ ในการสร้างพาร์ติชันจะทำให้ข้อมูลทั้งหมดสูญหายและ / หรือเซิร์ฟเวอร์จะไม่รีบูต ฉันขอแนะนำให้ทำเช่นนี้เป็นขั้นตอนแรกในอินสแตนซ์ที่สร้างขึ้นใหม่ ไม่เช่นนั้นจะทำการเก็บภาพ EC2 EBS Storage / etc ของคุณ

ฉันได้ทำเครื่องหมายขั้นตอนด้วย << # >> ในบล็อกด้านล่างดังนั้นจึงไม่ใช่ส่วนหนึ่งของคำสั่ง คุณต้องได้รับอนุญาตรูทดังนั้นทำ "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 แนวปฏิบัติทั่วไปที่ดีที่สุดกับ EBS คือการจัดรูปแบบปริมาณดิบทั้งหมดด้วยระบบไฟล์โดยไม่กำหนดตำแหน่งก่อน นี่เป็นจริงโดยเฉพาะอย่างยิ่งสำหรับปริมาณการบูต การจัดตำแหน่งเป็นสิ่งประดิษฐ์ของฟิสิคัลดิสก์ซึ่งเป็นขนาดที่คุณต้องการสำหรับระบบไฟล์ของคุณ บน EC2 คุณเพียงแค่สร้างปริมาณ EBS ของขนาดที่เหมาะสมและวางระบบไฟล์ในปริมาณดิบโดยไม่ต้องพาร์ทิชัน
Eric Hammond

1
ฉันไม่รู้ว่าหายากมันเกิดขึ้นกับฉันในทั้งสองกรณี CentOS EC2 ที่ฉันเปิดตัวด้วย Generic SSD EBS Storage
Neo

ใครเป็นผู้เผยแพร่ CentOS AMIs ที่คุณใช้?
Eric Hammond

@EricHammond centos.org
Neo

4
ฉันขอแนะนำให้ยื่นคำร้อง centos.org เพื่อหยุดการสร้าง AMI ด้วยปริมาณ EBS รูทที่แบ่งพาร์ติชัน ไม่มีประโยชน์หากคุณใช้พาร์ทิชันเดียวและทำให้การปรับขนาดยากขึ้น อเมซอนไม่ได้ทำสิ่งนี้กับ AMIs ของพวกเขา หรือทำ Ubuntu, Red Hat และอื่น ๆ เป็นวิธีปฏิบัติที่ดีที่สุดในการวางระบบไฟล์บน EBS ดิบโดยไม่ต้องมีปัญหาและอุปสรรคที่ไม่จำเป็นต้องปรับขนาด
Eric Hammond

2

ปรับขนาดระบบไฟล์บนโวลุ่ม EBS หากคุณกำลังใช้ext3(ซึ่งมักจะเริ่มต้น) e2resize /dev/xvda1คุณสามารถเรียกใช้เพียง


ปริมาณแรกจะต้องออฟไลน์และยกเลิกการติดตั้ง
Farhan

1
ไม่ได้มีการกระจาย Linux ที่ทันสมัยแม้แต่คลุมเครือ การขยายระบบไฟล์ ext3 ออนไลน์ได้รับการสนับสนุนเป็นเวลาหลายปี
womble

ขอบคุณ womble ฉันใช้ aws distro และ e2resize ไม่ได้อยู่ที่นั่น มันไม่ได้อยู่ใน repo yum ใด ๆ เช่นกัน ฉันควรจะได้รับแหล่งที่มาและสร้างมันด้วยตัวเอง?
คริสเตียน

1

ฉันลองคำตอบจาก @Neo ด้วยอินสแตนซ์ที่สร้างขึ้นจาก Ubuntu AMI ที่กำหนดเอง คำอธิบายมีประโยชน์มาก แต่ฉันต้องการให้หน่วยเป็นบล็อกและเพียงข้ามขั้นตอนที่ # 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 มีขนาดแตกต่างกันมาก คุณสามารถปรับขนาด 2fs และมันจะไม่สร้างความแตกต่างใด ๆ ในกรณีของฉัน xvda1 คือ 5G และนั่นคือระบบไฟล์ทั้งหมดที่จะใช้

ขอบคุณ @Neo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.