Espace disque insuffisant '/' dans l'instance AWS

28

j'exécute l'instance Ubuntu 11.04 pour mon serveur Web sur le cloud AWS, maintenant j'obtiens il n'y a pas d'espace disque dans / partition de mon serveur. df -ah dis ça

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

Maintenant, j'ai essayé ces choses pour obtenir un espace supplémentaire sur / partition

  • Nettoyez tous les fichiers journaux pour Apache.
  • Suppression de tous les fichiers inutiles du serveur.
  • Nettoyage du répertoire personnel.

Mais je n'ai toujours pas assez d'espace. Ce type d'instance est m1.large avec 8 Go d'EBS. Maintenant, je reçois suffisamment d'espace disque dans / dev / xvdb .

Existe-t-il un moyen d'allouer de l'espace disque à / de / dev / xvdb ou à tout autre moyen. Veuillez me suggérer la solution possible pour cela.Est-il possible d'utiliser la même partition / dev / xvdb avec une autre instance.

Sumant
la source
1
Mise à jour 2017: Amazon permet de redimensionner vos disques (même le disque de démarrage) à la volée de nos jours! voir ma réponse SO ici: stackoverflow.com/a/42791031/7022062
Dmitry Shevkoplyas

Réponses:

26

La réponse est double.

Solution: utilisez / dev / xvdb (/ mnt) pour les données temporaires

Il s'agit du stockage éphémère de votre instance Amazon EC2 et ses caractéristiques sont très différentes de celles du stockage Amazon EBS persistant utilisé ailleurs. En particulier, ce stockage éphémère sera perdu lors des cycles d'arrêt / démarrage et peut généralement disparaître , de sorte que vous ne voulez certainement pas y mettre quoi que ce soit de valeur durable, c'est-à-dire y mettre uniquement des données temporaires que vous pouvez vous permettre de perdre ou de reconstruire facilement , comme un fichier d'échange ou des données strictement temporaires utilisées pendant les calculs. Bien sûr, vous pouvez y stocker d'énormes index par exemple, mais vous devez être prêt à les reconstruire après que le stockage a été effacé pour une raison quelconque (redémarrage de l'instance, panne matérielle, ...).

Solution: redimensionnez / dev / xvda1 (/) pour obtenir le stockage souhaité

C'est ce que l'on appelle le stockage de périphérique racine de votre instance EC2 basée sur Amazon EBS , qui facilite notamment la flexibilité et la durabilité d' Amazon EBS , c'est-à-dire que les données qui y sont stockées sont raisonnablement sûres et survivent aux défaillances d'instance; vous pouvez encore augmenter la flexibilité et la durabilité en prenant des instantanés réguliers de votre volume EBS, qui sont stockés sur Amazon S3 , avec la durabilité bien connue de 99,999999999%.

Cette fonction d'instantané vous permet de résoudre votre problème tour à tour, dans la mesure où vous pouvez remplacer votre stockage racine EBS 8 Go actuel (/ dev / xvda1) par un autre plus ou moins volumineux. Le processus est décrit dans l'excellent article d'Eric Hammond Resizing the Root Disk on a Running EBS Boot EC2 Instance :

Tant que vous êtes d'accord avec un petit temps d'arrêt sur l'instance EC2 (quelques minutes), il est possible de changer le volume EBS racine avec une copie plus grande, sans avoir besoin de démarrer une nouvelle instance.

Si vous préparez correctement les étapes qu'il décrit (je recommande fortement de les tester avec une instance EC2 jetable d'abord pour vous familiariser avec la procédure, ou de l'automatiser via un script personnalisé même), vous devriez pouvoir terminer le processus avec quelques minutes d'arrêt seulement en effet.

La plupart des étapes décrites peuvent également être effectuées via l' AWS Management Console , ce qui évite de traiter avec les outils API Amazon EC2 ; cela se résume à:

  • arrêter (pas terminer!) l'instance EC2
  • détacher le volume EBS de l'instance arrêtée
  • créer un instantané du volume EBS détaché
  • créer un nouveau volume EBS (plus grand) à partir de l'instantané créé
  • attachez le nouveau volume EBS à l'instance EC2 ( Important ! S'il s'agit de votre périphérique racine, assurez-vous qu'il le nomme exactement comme périphérique racine de l'instance comme il a été mentionné, par exemple (/ dev / sda1) ou (/ dev / xdva1) sinon, il sera attaché en tant que périphérique de bloc et non en tant que périphérique racine et vous ne pourrez pas démarrer l'instance car aucun périphérique racine ne sera répertorié pour l'instance.)
  • SSH dans l'instance en cours d'exécution et confirmez que tout est en ordre via df -ah
    • dans le cas où votre système n'a pas automatiquement redimensionné le système de fichiers, vous devrez le faire manuellement comme expliqué dans l'article d'Eric

Bonne chance!


Alternative

Étant donné la polyvalence et la facilité d'utilisation de ces volumes EBS, une option supplémentaire serait d'attacher plus de volumes EBS à votre instance et de déplacer des zones de préoccupation clairement séparables là-bas.

Par exemple, nous utilisons quelques applications Java assez lourdes, chacune consommant 1 à 2 Go de stockage par version; pour faciliter la mise à niveau des versions et pouvoir généralement déplacer ces applications vers différentes instances à ma discrétion, je les ai placées sur des volumes EBS dédiés chacune, les monter sur une instance et les lier à l'emplacement souhaité, par exemple généralement /var/lib/<app>/<version>et /usr/local/<app>/<version>.

Avec cette méthode, nous exécutons actuellement des instances EC2 avec le stockage de périphérique racine toujours à sa taille par défaut de 8 Go (comme le vôtre), mais parfois jusqu'à 8 volumes EBS avec des tailles différentes (1 à 15 Go) également.

Cependant, vous devez être conscient des problèmes potentiels de performances du réseau, dans la mesure où tous ces volumes EBS utilisent le même LAN pour leurs E / S, ce qui pourrait même générer des gains de performances respectifs, ou saturer votre réseau dans des cas extrêmes - comme d'habitude, cela dépend sur le cas d'utilisation et la charge de travail à portée de main.

Steffen Opel
la source
J'utilise / dev / xvdb pour garder ma base de données qui est maintenant de près de 16 Go. Un processus d'arrière-plan est en cours d'exécution pour le maintenir à jour. Alors, quel devrait être le meilleur stockage permanent pour cette base de données. Dois-je opter pour Amazon RDS ou Amazon DynamoDB. quelle est votre suggestion. j'exécute le serveur PHP sur cette instance.
Sumant
2
@Sumant: Ce n'est pas bon, alors vous avez fait exactement ce qui était dangereux, à savoir mettre les données à conserver sur un disque qui peut pratiquement disparaître à tout moment (ce n'est généralement pas le cas, mettez-en un qui devrait les traiter comme tel)? J'espère que je n'ai pas abeille tromper à cet égard - s'il vous plaît être très prudent lorsque vous atténuer ceci afin d'éviter la perte de données au cours du processus (vous faire des sauvegardes de base de données quelle que soit, pensez - vous?)!
Steffen Opel
@Sumant: Concernant votre question - Vous ne devriez pas du tout avoir besoin de changer l'architecture de votre application (ou DB d'ailleurs) pour résoudre le problème de stockage, redimensionnez simplement votre disque racine ou attachez plus de volumes EBS comme suggéré. Si, cependant, vous souhaitez également améliorer et découpler votre niveau de base de données, ce qui est une bonne chose en principe, compte tenu de la croissance future (mais avec des coûts respectifs dès le début), et en supposant que vous utilisez actuellement MySQL, alors Amazon RDS serait le choix parfait et pratique. Amazon DynamoDB nécessite une nouvelle architecture d'application complète et s'applique uniquement à des cas d'utilisation spécifiques.
Steffen Opel
1
@Sumant: Sachez cependant que la migration de votre base de données vers une instance RDS m1.small peut en fait présenter des performances plus lentes que votre MySQL actuel sur EC2, qui exécute m1.large avec des avantages de performances CPU et d'E / S respectifs - que cela s'applique, dépend cependant de votre charge de travail DB actuelle. Bien sûr, vous pouvez également utiliser des instances RDS plus importantes pour y remédier, mais votre coût augmentera en conséquence.
Steffen Opel
1

Oui, un moyen simple de le fstab puis de le monter pour dire / var / www / html / files2 /

puis mkdir / var / www / html / files2 / website puis ln -s -d / var / www / html / website / var / www / html / files2 / website

Daniel Chay
la source
utilisez UUID pour monter la partition en utilisant la commande blkids et fdisk dites '/ dev / vxds /' pour créer la partition. Utilisez midnight commander pour déplacer les fichiers avec F6 d'un dossier à l'autre, assurez-vous de choisir le bon dossier sous la position de montage oh et bien sûr, vous devrez `` monter -a '' après l'ajout à fstab
Daniel Chay
0

Aujourd'hui, j'ai rencontré le même problème, lorsque vous créez la nouvelle intance ec2 par défaut, l'EBS est de 8 Go. Vous pouvez modifier la taille de l'EBS attaché sans créer de nouvelle interface ou prendre un instantané ou détacher l'EBS. Voici les trois étapes que vous pouvez suivre:

  1. Redimensionner le volume EBS
  2. Redimensionner la partition
  3. Redimensionner la partition Pour la première étape, accédez à votre console AWS et cliquez sur EBS, modifiez la taille souhaitée et cliquez sur modifier.

Pour le reste des étapes, veuillez suivre cet article si vous avez une question, n'hésitez pas à demander.

Merci!

Narendra Sharma
la source