Tidak ada solusi lain yang akan berfungsi jika volume digunakan sebagai perangkat root (dapat di-boot).
Disk yang baru dibuat tidak memiliki partisi boot, sehingga GRUB harus diinstal dan beberapa flag diatur dengan benar sebelum instance dapat menggunakannya sebagai volume root.
Solusi saya (mulai hari ini, bekerja ) untuk menyusutkan volume root adalah:
Latar Belakang: Kami memiliki instance A, yang volume akarnya ingin kami susutkan. Sebutlah volume ini VA. Kami ingin mengecilkan VA dari 30GB menjadi katakanlah 10GB
- Buat instance ec2 baru, B, dengan OS yang sama dengan instance A. Sebagai penyimpanan, pilih volume yang jenisnya sama dengan VA, tetapi dengan ukuran 10GB. (atau apa pun ukuran target Anda). Jadi sekarang kita memiliki instance B yang menggunakan volume baru ini (sebut saja VB) sebagai volume root.
- Setelah instance baru (B) berjalan. Hentikan dan lepaskan volume root (VB).
CATATAN: Langkah-langkah berikut sebagian besar diambil dari solusi @bill:
Hentikan instance yang ingin Anda ubah ukurannya (A).
Buat snapshot volume VA dan kemudian buat volume "General Purpose SSD" dari snapshot itu. Volume ini kita akan menyebutnya VASNAP.
Putar instance baru dengan amazon Linux, kami akan memanggil instance ini C. Kami hanya akan menggunakan instance ini untuk menyalin konten VASNAP ke VB. Kita mungkin juga bisa menggunakan instance A untuk melakukan langkah-langkah ini, tetapi saya lebih suka melakukannya di mesin independen.
Lampirkan volume berikut ke instance C. / dev / xvdf untuk VB. / dev / xvdg untuk VASNAP.
Mulai ulang instance C.
Masuk ke instance C melalui SSH.
Buat direktori baru ini:
mkdir /source /target
- Memformat partisi utama VB dengan sistem file ext4:
mkfs.ext4 /dev/xvdf1
Jika Anda tidak mendapatkan kesalahan, lanjutkan ke Langkah 11. Jika tidak, jika Anda tidak punya /dev/xvdf1
, Anda perlu membuat partisi dengan melakukan i-vii berikut:
i) Jika /dev/xvdf1
tidak ada karena alasan apa pun, Anda harus membuatnya. Masukkan pertama:
sudo fdisk /dev/xvdf
.
ii) Hapus disk dengan memasukkan:
wipefs
iii) Buat partisi baru dengan memasukkan:
n
iv) Masuk p
untuk membuat partisi primer
v) Terus tekan enter untuk melanjutkan dengan pengaturan default.
vi) Ketika meminta perintah lagi, masukkan w
untuk menulis perubahan dan berhenti.
vii) Pastikan Anda memiliki /dev/xvdf1
partisi dengan melakukan:
lsblk
Anda harus melihat sesuatu seperti:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Sekarang lanjutkan ke Langkah 11.
- Pasang ke direktori ini:
mount -t ext4 /dev/xvdf1 /target
- Ini sangat penting, sistem file membutuhkan e2label untuk Linux untuk mengenalinya dan mem-boot-nya, gunakan "e2label / dev / xvda1" pada contoh aktif untuk melihat apa yang seharusnya, dalam hal ini labelnya adalah: "/"
e2label /dev/xvdf1 /
- Mount VASNAP di / sumber:
mount -t ext4 /dev/xvdg1 /source
- Salin konten:
rsync -vaxSHAX /source/ /target
Catatan: tidak ada "/" mengikuti "/ target". Juga, mungkin ada beberapa kesalahan tentang symlinks dan attrs, tetapi ukurannya masih berhasil
- Umount VB:
umount /target
Kembali di AWS Console: Dettach VB dari instance C, dan juga dettach VA dari A.
Lampirkan volume ukuran baru (VB) ke instance sebagai: "/ dev / xvda"
Contoh boot A, perangkat rootnya sekarang 10GB :)
Hapus kedua instance B dan C, dan juga semua volume selain VB, yang sekarang menjadi volume root instance A.