meningkatkan ukuran / tmp pada instance EC2

8

Saya menjalankan server Ubuntu pada EC2 ebs, dan aplikasi saya membutuhkan banyak ruang disk sementara, dialokasikan di / tmp. Namun, pada ec2, root drive yang juga berisi / tmp cukup kecil, sekitar 10GB. Semua ruang disk yang tersisa dipasang di bawah / mnt. Akibatnya, aplikasi saya mengembalikan kesalahan 'di luar ruang disk', karena / tmp tampaknya penuh.

Apa cara terbaik untuk mengatasi masalah ini? Satu hal yang dapat saya pikirkan adalah membuat / mnt / tmp dan membuat tautan simbolik

/tmp --> /mnt/tmp

Namun saya agak enggan untuk dipusingkan dengan sesuatu yang digunakan oleh begitu banyak program dan alat linux. Saya tidak yakin apakah setiap program akan menyelesaikan tautan simbolik dengan benar, dan tidak yakin bagaimana kinerjanya dengan kinerja.

Jeroen
sumber
2
Bind mounts berarti tidak harus terhubung.
Ignacio Vazquez-Abrams

Jawaban:

5

Dengan gambar yang didukung EBS, penyimpanan sementara masih tersedia, hanya saja tidak dipetakan sebagai perangkat blok secara default (seperti pada penyimpanan gambar instan)

Doc amazon ada di sini , dan ada posting blog yang bermanfaat, di sini

Singkatnya: Anda dapat menentukan pemetaan ini pada baris perintah ketika Anda meluncurkan gambar, dan kemudian mount sebagai volume normal aktif /dev/sd[x]. Atau Anda jika Anda memutar AMI Anda sendiri, maka Anda dapat memanggang pemetaan ke dalam AMI itu sehingga semua gambar yang diluncurkan darinya memiliki akses ke sana sejak awal.

Symlinking /tmpakan berfungsi, tetapi saya tidak akan merekomendasikannya dalam kasus ini, di mana Anda memiliki sejumlah besar penyimpanan sementara yang digunakan. Setelah pemetaan perangkat tersedia, Anda dapat memasang perangkat seperti /tmppada /etc/fstab.

Dengan instance kecil, Anda harus memiliki 150GB toko instance tersedia secara gratis. Itu berjalan tanpa mengatakan bahwa penyimpanan ini mati ketika instance reboot. Jika penggunaan Anda tidak sementara, maka Anda perlu membuat sendiri, volume EBS baru dan memasangnya dengan cara itu.

SmallClanger
sumber
1
Mengapa symlinking tidak disarankan? Sebagai contoh jika saya ingin meletakkan / var / tmp dan / var / log ke penyimpanan sementara saya, saya bisa memasang penyimpanan sebagai / mnt dan menghubungkan kedua direktori di sana.
j0nes
Poin yang bagus. Saya sedang memikirkan kasus khusus ini, berdasarkan pada asumsi bahwa OP sedang mempertimbangkan untuk menghubungkan kembali ke partisi utama. Saya akan mengklarifikasi jawaban saya.
SmallClanger
1

Anda dapat mengikat / tmp mount point ke / mnt / tmp:

sudo mount -B / tmp / mnt / tmp

sampai sekarang
sumber
2
Perintah itu menoleh ke belakang kepada saya. Saya pikir Anda bertukar dua nama direktori.
kasperd
0

Menghubungkan simbolik seperti yang disarankan dalam pertanyaan bukanlah solusi yang buruk. Tetapi ada beberapa perhatian ekstra yang harus diambil saat melakukannya. Hanya untuk mengkonsolidasikan langkah-langkah tepat yang terlibat dalam pemasangan volume adalah:

1) Buat volume baru di konsol AWS. Lampirkan ke contoh.

2) Format dan pasang di bawah say /mnt/vol1

3) Bersihkan /tmpsejauh mungkin.

4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp

Murphy
sumber
Memindahkan file ke direktori baru tidak akan mencapai hasil yang diinginkan untuk file apa pun yang saat ini terbuka. Saya akan reboot, karena program tidak dapat mengharapkan file /tmpuntuk selamat dari reboot.
kasperd