

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configura le istanze AL2
<a name="configure-ec2-instance"></a>

Dopo aver avviato e effettuato correttamente l'accesso all' AL2 istanza, è possibile apportare modifiche all'istanza. Sono disponibili numerosi modi con cui puoi configurare un'istanza in base alle specifiche esigenze di un'applicazione. Di seguito sono riportate alcune attività comuni per iniziare a utilizzare le istanze.

**Topics**
+ [Scenari di configurazione comuni](#instance-configuration-scenarios)
+ [Gestisci il software sulla tua istanza AL2](managing-software.md)
+ [Controllo dello stato del processore per la tua istanza Amazon EC2 AL2](processor_state_control.md)
+ [Scheduler I/O per AL2](io-scheduler.md)
+ [Cambia il nome host della tua istanza AL2](set-hostname.md)
+ [Configura il DNS dinamico sulla tua istanza AL2](dynamic-dns.md)
+ [Configura la tua interfaccia di rete usando ec2-net-utils per AL2](ec2-net-utils.md)

## Scenari di configurazione comuni
<a name="instance-configuration-scenarios"></a>

La distribuzione di base di Amazon Linux contiene pacchetti software e utilità necessari per le operazioni di base del server. Tuttavia, numerosi altri pacchetti software sono disponibili in svariati archivi software, mentre nel codice sorgente sono disponibili molti altri pacchetti pronti per lo sviluppo. Per ulteriori informazioni sull'installazione e sullo sviluppo di software da questa posizioni, consulta [Gestisci il software sulla tua istanza AL2](managing-software.md).

Le istanze Amazon Linux sono preconfigurate con un `ec2-user`, ma puoi decidere di aggiungere altri utenti che non dispongono dei privilegi avanzati. Per ulteriori informazioni sull'aggiunta e la rimozione di utenti, consulta [Manage users on your Linux instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) nella *Amazon EC2 User* Guide.

Se disponi di una rete con un nome di dominio registrato, puoi modificare il nome host di un'istanza in modo da identificarla come appartenente a tale dominio. Puoi inoltre modificare il prompt di sistema in modo da visualizzare un nome più significativo senza modificare le impostazioni del nome host. Per ulteriori informazioni, consulta [Cambia il nome host della tua istanza AL2](set-hostname.md). Puoi configurare un'istanza per l'uso di un provider di servizi DNS dinamico. Per ulteriori informazioni, consulta [Configura il DNS dinamico sulla tua istanza AL2](dynamic-dns.md).

Quando avvii un'istanza in Amazon EC2, hai la possibilità di trasferire all'istanza i dati utente che possono essere utilizzati per eseguire attività di configurazione di routine e anche per l'esecuzione di script all'avvio dell'istanza. Puoi trasferire due tipi di dati utente a Amazon EC2, ovvero le direttive cloud-init e gli script di shell. Per ulteriori informazioni, consulta [Esegui comandi sulla tua Linux istanza all'avvio](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) nella Guida per l'*utente di Amazon EC2*.

# Gestisci il software sulla tua istanza AL2
<a name="managing-software"></a>

La distribuzione di base di Amazon Linux contiene pacchetti software e utilità necessari per le operazioni di base del server.

Queste informazioni si applicano a AL2. Per informazioni su AL2023, consulta [Gestire pacchetti e aggiornamenti del sistema operativo AL2023 nella](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Guida per l'utente di Amazon Linux 2023*.

È importante tenere aggiornati i software. Molti pacchetti in una distribuzione Linux vengono aggiornati di frequente per correggere bug, aggiungere caratteristiche e proteggere il sistema da exploit a livello di sicurezza. Per ulteriori informazioni, consulta [Aggiorna il software dell'istanza sulla tua istanza AL2](install-updates.md).

Per impostazione predefinita, AL2 le istanze vengono avviate con i seguenti repository abilitati:
+ `amzn2-core`
+ `amzn2extra-docker`

Sebbene in questi repository siano disponibili molti pacchetti aggiornati da AWS, è possibile che un pacchetto da installare sia contenuto in un altro repository. Per ulteriori informazioni, consulta [Aggiungi repository su un'istanza AL2](add-repositories.md). Per semplificare la ricerca e l'installazione di pacchetti negli archivi abilitati, consulta [Trova e installa pacchetti software su un' AL2 istanza](find-install-software.md).

Non tutti i software sono disponibili nei pacchetti software memorizzati negli archivi. Alcuni archivi devono essere compilati su un'istanza dal relativo codice sorgente. Per ulteriori informazioni, consulta [Preparati a compilare il software su un'istanza AL2](compile-software.md).

AL2 le istanze gestiscono il proprio software utilizzando il gestore di pacchetti yum. Il programma di gestione di pacchetti YUM consente di installare, rimuovere e aggiornare il software, nonché gestire tutte le dipendenze per ogni pacchetto.

**Topics**
+ [Aggiorna il software dell'istanza sulla tua istanza AL2](install-updates.md)
+ [Aggiungi repository su un'istanza AL2](add-repositories.md)
+ [Trova e installa pacchetti software su un' AL2 istanza](find-install-software.md)
+ [Preparati a compilare il software su un'istanza AL2](compile-software.md)

# Aggiorna il software dell'istanza sulla tua istanza AL2
<a name="install-updates"></a>

È importante tenere aggiornati i software. I pacchetti in una distribuzione Linux vengono aggiornati di frequente per correggere bug, aggiungere funzionalità e proteggere il sistema da exploit a livello di sicurezza. Quando stabilisci una connessione a un'istanza Amazon Linux dopo averla avviata per la prima volta, è possibile che venga visualizzato un messaggio in cui ti viene richiesto di aggiornare i pacchetti software per motivi di sicurezza. Questa sezione mostra come aggiornare l'intero sistema o solo un pacchetto.

Queste informazioni si applicano a AL2. Per informazioni su AL2023, consulta [Gestire pacchetti e aggiornamenti del sistema operativo AL2023 nella](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Guida per l'utente di Amazon Linux 2023*.

Per informazioni sulle modifiche e gli aggiornamenti di AL2, consulta le [note di AL2 rilascio](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Per informazioni sulle modifiche e gli aggiornamenti di AL2023, consulta le [note di AL2023 rilascio](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**Importante**  
Se hai avviato un'istanza EC2 che utilizza un'AMI Amazon Linux 2 in una sottorete IPv6 -only, devi connetterti all'istanza ed eseguirla. `sudo amazon-linux-https disable` Ciò consente all' AL2 istanza di connettersi al yum repository in S3 IPv6 tramite il servizio di patch http.

**Per aggiornare tutti i pacchetti su un'istanza AL2**

1. (Opzionale) Avviare una sessione con il comando **screen** nella finestra della shell. A volte si possono verificare interruzioni di rete che possono comportare l'interruzione della connessione SSH all'istanza. Se si verifica questa situazione durante un aggiornamento software particolarmente lungo, l'istanza rimane in uno stato non definito, anche se ripristinabile. La sessione avviata con il comando **screen** ti permette di continuare l'esecuzione dell'aggiornamento anche se la connessione viene interrotta. Potrai infatti ristabilire la connessione alla sessione in un secondo momento senza problemi.

   1. Eseguire il comando **screen** per avviare la sessione.

      ```
      [ec2-user ~]$ screen
      ```

   1. Se la connessione alla sessione viene interrotta, rieseguire l'accesso all'istanza e visualizzare l'elenco delle schermate disponibili.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Riconnettersi alla schermata utilizzando il comando **screen -r** e l'ID di processo del comando precedente.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Dopo aver utilizzato il comando **screen**, utilizzare il comando **exit** per chiudere la sessione.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Esegui il comando **yum update**. Puoi decidere di aggiungere il flag `--security` per applicare solo gli aggiornamenti di sicurezza.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Verifica i pacchetti elencati, digita **y** e premi Invio per accettare gli aggiornamenti. L'aggiornamento di tutti i pacchetti in un sistema può richiedere alcuni minuti. L'output **yum** riporta lo stato dell'aggiornamento durante la sua esecuzione.

1. (Facoltativo) [Riavviate l'istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) per assicurarvi di utilizzare i pacchetti e le librerie più recenti dell'aggiornamento; gli aggiornamenti del kernel non vengono caricati finché non si verifica un riavvio. Anche gli aggiornamenti applicati a qualsiasi libreria `glibc` devono essere seguiti da un riavvio. Per gli aggiornamenti dei pacchetti che controllano i servizi, può essere sufficiente riavviare i servizi per rendere disponibili gli aggiornamenti. Tuttavia, il riavvio del sistema garantisce il completamento di tutti i precedenti aggiornamenti di librerie e pacchetti.

**Per aggiornare un singolo pacchetto su un'istanza AL2**

Utilizzare questa procedura per aggiornare un singolo pacchetto e le relative dipendente, ma non l'intero sistema.

1. Esegui il comando **yum update** con il nome del pacchetto da aggiornare.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Verifica le informazioni sul pacchetto visualizzate, digita **y** e premi Invio per accettare uno o più aggiornamenti. A volte nell'elenco potrebbero venire elencati più pacchetti se sono presenti dipendenze di pacchetti che devono essere risolte. L'output **yum** riporta lo stato dell'aggiornamento durante la sua esecuzione.

1. (Facoltativo) [Riavviate l'istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) per assicurarvi di utilizzare i pacchetti e le librerie più recenti dell'aggiornamento; gli aggiornamenti del kernel non vengono caricati finché non si verifica un riavvio. Anche gli aggiornamenti applicati a qualsiasi libreria `glibc` devono essere seguiti da un riavvio. Per gli aggiornamenti dei pacchetti che controllano i servizi, può essere sufficiente riavviare i servizi per rendere disponibili gli aggiornamenti. Tuttavia, il riavvio del sistema garantisce il completamento di tutti i precedenti aggiornamenti di librerie e pacchetti.

# Aggiungi repository su un'istanza AL2
<a name="add-repositories"></a>

Queste informazioni si applicano a. AL2 Per informazioni in merito AL2023, consulta [Aggiornamenti deterministici tramite repository con versioni nella](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) Guida per AL2023 l'utente di *Amazon Linux 2023*.

Per impostazione predefinita, le AL2 istanze vengono avviate con i seguenti repository abilitati:
+ `amzn2-core`
+ `amzn2extra-docker`

Questi repository cotengono molti pacchetti che vengono aggiornati da Amazon Web Services; potrebbe essere presente un pacchetto che vuoi installare ma contenuto in un altro repository.

Per installare un pacchetto da un archivio diverso con **yum**, è necessario aggiungere le informazioni relative all'archivio nel file `/etc/yum.conf` o nel relativo file `repository.repo` all'interno della directory `/etc/yum.repos.d`. Puoi eseguire questa operazione manualmente, ma per la maggior parte degli archivi yum è disponibile il file `repository.repo` corrispondente nel relativo URL.

**Per determinare gli archivi yum già installati**  
Generare l'elenco degli archivi yum installati con il seguente comando:

```
[ec2-user ~]$ yum repolist all
```

Nell'output risultante sono elencati gli archivi installati assieme al relativo stato. Per gli archivi abilitati viene visualizzato il numero di pacchetti in essi contenuti.

**Per aggiungere un archivio yum a /etc/yum.repos.d**

1. Cerca la posizione del file `.repo`. Ciò può dipendere dall'archivio che desideri aggiungere. In questo esempio, il file `.repo` è disponibile in `https://www.example.com/repository.repo`.

1. Aggiungi il repository con il comando **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Dopo aver installato un archivio, devi abilitarlo come descritto nella procedura seguente.

**Per abilitare un archivio yum in /etc/yum.repos.d**  
Utilizzare il comando **yum-config-manager** con il contrassegno `--enable repository`. Il comando seguente abilita l'archivio EPEL (Extra Packages for Enterprise Linux) dal progetto Fedora. Per impostazione predefinita, questo archivio è presente in `/etc/yum.repos.d` nelle istanze di AMI Amazon Linux ma non è abilitato.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

[Per ulteriori informazioni e per scaricare la versione più recente di questo pacchetto, consultate https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Trova e installa pacchetti software su un' AL2 istanza
<a name="find-install-software"></a>

Puoi utilizzare uno strumento di gestione dei pacchetti per trovare e installare pacchetti software. In Amazon Linux 2, lo strumento di gestione dei pacchetti software predefinito èYUM. In AL2023, lo strumento di gestione dei pacchetti software predefinito èDNF. Per ulteriori informazioni, consulta [lo strumento di gestione dei pacchetti](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) nella *Guida per l'utente di Amazon Linux 2023*.

## Trova pacchetti software su un' AL2 istanza
<a name="find-software"></a>

Puoi utilizzare il comando **yum search** per cercare le descrizioni dei pacchetti disponibili negli archivi configurati. Ciò risulta particolarmente utile se non conosci il nome preciso del pacchetto che vuoi installare. Devi semplicemente aggiungere la ricerca per parola chiave alla fine del comando. Per ricerche di più parole, racchiudi la query di ricerca tra virgolette.

```
[ec2-user ~]$ yum search "find"
```

Di seguito è riportato un output di esempio.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Le query di ricerca di più parole racchiuse tra virgolette restituiscono solo i risultati che corrispondono esattamente alla query. Se il pacchetto previsto non viene visualizzato, semplifica la ricerca usando un'unica parola chiave e quindi riesamina i risultati. Come parole chiave puoi anche usare sinonimi per ampliare la ricerca.

Per ulteriori informazioni sui pacchetti per AL2, consulta quanto segue:
+ [AL2 Libreria Extras](al2-extras.md)
+ [Archivio dei pacchetti](ec2.md#package-repository)

## Installare pacchetti software su un' AL2 istanza
<a name="install-software"></a>

In AL2, lo strumento di gestione dei pacchetti yum cerca diversi pacchetti software in tutti gli archivi abilitati e gestisce eventuali dipendenze nel processo di installazione del software. Per informazioni sull'installazione di pacchetti software in AL2023, consulta [Gestione dei pacchetti e degli aggiornamenti del sistema operativo](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) nella *Guida per l'utente di Amazon Linux 2023*.

**Per installare un pacchetto da un repository**  
Usa il **yum install *package*** comando, sostituendolo *package* con il nome del software da installare. Ad esempio, per installare il browser Web basato sul testo **links**, immetti il comando seguente.

```
[ec2-user ~]$ sudo yum install links
```

**Per installare i file dei pacchetti RPM scaricati**  
Puoi utilizzare **yum install** anche per installare i file dei pacchetti RPM scaricati da Internet. A tale scopo, devi aggiungere il nome del percorso di un file RPM al comando di installazione invece del nome del pacchetto di un repository.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**Per elencare i pacchetti installati**  
Per visualizzare un elenco dei pacchetti installati nell'istanza, utilizzare il comando seguente.

```
[ec2-user ~]$ yum list installed
```

# Preparati a compilare il software su un'istanza AL2
<a name="compile-software"></a>

In Internet è disponibile il software open source non precompilato e pronto per il download da un repository di pacchetti. Potresti tuttavia trovare un pacchetto software che devi compilare personalmente dal relativo codice sorgente. Affinché il tuo sistema sia in grado di compilare software in AL2 Amazon Linux, devi installare diversi strumenti di sviluppo, come **make****gcc**, e**autoconf**.

Dal momento che la compilazione del software non è un'attività richiesta da ogni istanza di Amazon EC2, questi strumenti non vengono installati per impostazione predefinita, ma sono disponibili in un gruppo di pacchetti denominato "Development Tools" (Strumenti di sviluppo), che può essere facilmente aggiunto a un'istanza con il comando **yum groupinstall**.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

I pacchetti di codice sorgente del software sono spesso disponibili per il download (da siti Web come [https://github.com/](https://github.com/)e [http://sourceforge.net/](https://sourceforge.net/)) come file di archivio compresso, chiamato tarball. In genere i file tarball sono associati all'estensione `.tar.gz`. Puoi decomprimere questi archivi tramite il comando **tar**.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Dopo aver decompresso ed estratto il pacchetto di codice sorgente, devi cercare un file `README` o `INSTALL` nella directory del codice sorgente contenente ulteriori istruzioni relative alla compilazione e all'installazione del codice sorgente. 

**Per recuperare il codice sorgente per i pacchetti Amazon Linux**  
Amazon Web Services fornisce il codice sorgente per i pacchetti mantenuti. Puoi scaricare il codice sorgente per qualsiasi pacchetto installato tramite il comando **yumdownloader --source**.

Eseguite il **yumdownloader --source *package*** comando per scaricare il codice sorgente di. *package* Ad esempio, per scaricare il codice sorgente del pacchetto `htop`, immetti il seguente comando.

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

La posizione del file RPM sorgente è la directory da cui hai eseguito il comando.

# Controllo dello stato del processore per la tua istanza Amazon EC2 AL2
<a name="processor_state_control"></a>

Gli stati C-state controllano i livelli di sospensione in cui può entrare un core quando è inattivo. Gli stati C-state sono numerati a partire da C0 (lo stato più superficiale in cui il core è completamente attivo ed esegue le istruzioni) fino a C6 (lo stato inattivo più profondo in cui un core è spento).

Gli stati P-state controllano le prestazioni desiderate (in frequenza CPU) da un core. Gli stati P-state sono numerati a partire da P0 (l'impostazione sulle prestazioni più elevate in cui è permesso al core di utilizzare la tecnologia Intel Turbo Boost per aumentare la frequenza, se possibile) e vanno da P1 (lo stato P-state che richiede la frequenza di base massima) a P15 (la frequenza più bassa possibile).

Potresti modificare le impostazioni degli stati C-state o P-state per aumentare la consistenza delle prestazioni del processore, ridurre la latenza oppure ottimizzare l'istanza per un carico di lavoro specifico. Le impostazioni predefinite degli stati C-state e P-state forniscono le prestazioni massime, ottimali per la maggior parte dei carichi di lavoro. Tuttavia, se l'applicazione traesse vantaggio dalla latenza ridotta al costo di frequenze single-core o dual-core più elevate o da prestazioni coerenti a frequenze più basse anziché frequenze Turbo Boost intermittenti, consigliamo di prendere in considerazione le impostazioni degli stati C-state o P-state disponibili per queste istanze.

*Per informazioni sui tipi di istanze Amazon EC2 che consentono al sistema operativo di controllare gli stati C e P del processore, consulta [Controllo dello stato del processore per l'istanza Amazon EC2 nella Guida per l'utente di Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

Le sezioni seguenti descrivono le diverse configurazioni di stato del processore e come monitorare gli effetti della configurazione. Queste procedure sono state scritte e si applicano ad Amazon Linux; tuttavia, potrebbero funzionare anche per altre distribuzioni Linux con una versione del kernel Linux 3.9 o successiva.

**Nota**  
Gli esempi presenti in questa pagina utilizzano quanto segue:  
L'utilità **turbostat** per visualizzare la frequenza del processore e le informazioni sullo stato C. L'utilità **turbostat** è disponibile per impostazione predefinita su Amazon Linux.
Il comando **stress** per simulare un carico di lavoro. Per installare **stress**, per prima cosa abilitare il repository EPEL eseguendo **sudo amazon-linux-extras install epel**, poi eseguire **sudo yum install -y stress**.
Se l'output non visualizza le informazioni sullo stato C, includere l'opzione **--debug** nel comando (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [Prestazioni massime con la massima frequenza Turbo Boost](#turbo-perf)
+ [Prestazioni elevate e bassa latenza tramite limitazione degli stati C-state più profondi](#c-states)
+ [Prestazioni di base con la variabilità minore](#baseline-perf)

## Prestazioni massime con la massima frequenza Turbo Boost
<a name="turbo-perf"></a>

Questa è la configurazione di controllo degli stati del processore predefinita per AMI Amazon Linux ed è consigliata per la maggior parte dei carichi di lavoro. Questa configurazione offre le prestazioni più elevate con minore variabilità. Permettendo ai core non attivi di entrare in stati di sospensione più profondi fornisce la capacità aggiuntiva termica richiesta per processi single-core o dual-core per raggiungere il massimo potenziale Turbo Boost.

Il seguente esempio mostra un'istanza `c4.8xlarge` con due core attivamente in funzione che raggiungono la frequenza massima Turbo Boost del processore.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

In questo esempio, v CPUs 21 e 28 funzionano alla frequenza Turbo Boost massima perché gli altri core sono entrati in stato di `C6` sospensione per risparmiare energia e fornire spazio di alimentazione e calore ai core funzionanti. Le v CPUs 3 e 10 (ognuna delle quali condivide un core del processore con le v CPUs 21 e 28) sono nello `C1` stato in attesa di istruzioni.

Nell'esempio seguente, tutti i 18 core stanno lavorando attivamente, quindi non c'è spazio per il Turbo Boost massimo, ma funzionano tutti alla velocità «Turbo Boost all-core» di 3.2 GHz.

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Prestazioni elevate e bassa latenza tramite limitazione degli stati C-state più profondi
<a name="c-states"></a>

Gli stati C-state controllano i livelli di sospensione in cui potrebbe entrare un core quando è inattivo. Potresti voler controllare gli stati C-state per ottimizzare la latenza rispetto alle prestazioni del sistema. Inserire i core nello stato di sospensione richiedete del tempo. Sebbene un core sospeso consenta maggiore capacità aggiuntiva per un altro core per raggiungere una frequenza più elevata, è necessario del tempo affinché il core sospeso torni attivo e in funzione. Ad esempio, se un core assegnato per gestire le interruzioni di un pacchetto di rete è sospeso, potrebbe verificarsi un ritardo nel lavoro su tale interruzione. Puoi configurare il sistema in modo da non utilizzare gli stati C-states più profondi, riducendo non solo la latenza di reazione del processore, ma anche la capacità aggiuntiva disponibile per altri core per Turbo Boost.

Uno scenario comune per la disabilitazione degli stati di sospensione più profondi è un'applicazione di database Redis, la quale archivia il database nella memoria di sistema per il tempo di risposta alle query più rapido possibile.

**Per limitare gli stati di sonno più profondi, attiva AL2**

1. Aprire il file `/etc/default/grub` con un editor a scelta.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Modificare la riga `GRUB_CMDLINE_LINUX_DEFAULT` e aggiungere le opzioni `intel_idle.max_cstate=1` e `processor.max_cstate=1` per impostare `C1` come lo stato C più profondo per i core inattivi.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   L'opzione `intel_idle.max_cstate=1` configura il limite dello stato C per le istanze basate su Intel e l'opzione `processor.max_cstate=1` configura il limite dello stato C per le istanze basate su AMD. È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione.

1. Salvare il file e uscire dall'editor.

1.  Eseguire il comando riportato di seguito per ricreare la configurazione di avvio.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Riavviare l'istanza per abilitare la nuova opzione del kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**Limitazione degli stati di sospensione più profondi in Amazon Linux AMI**

1. Aprire il file `/boot/grub/grub.conf` con un editor a scelta.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Modificare la riga `kernel` della prima voce e aggiungere le opzioni `intel_idle.max_cstate=1` e `processor.max_cstate=1` per impostare `C1` come lo stato C più profondo per i core inattivi.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   L'opzione `intel_idle.max_cstate=1` configura il limite dello stato C per le istanze basate su Intel e l'opzione `processor.max_cstate=1` configura il limite dello stato C per le istanze basate su AMD. È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione.

1. Salvare il file e uscire dall'editor.

1. Riavviare l'istanza per abilitare la nuova opzione del kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

Il seguente esempio mostra un'istanza `c4.8xlarge` con due core attivamente in funzione alla frequenza del core "all core Turbo Boost".

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

In questo esempio, i core per le versioni CPUs 19 e 28 funzionano a 3.2 GHz e gli altri core sono `C1` nello stato C, in attesa di istruzioni. Sebbene i core in funzione non raggiungano la frequenza Turbo Boost massima, i core inattivi saranno molto più rapidi nella risposta a nuove richieste rispetto a quanto lo sarebbero nello stato C-state più profondo `C6`.

## Prestazioni di base con la variabilità minore
<a name="baseline-perf"></a>

Puoi ridurre la variabilità della frequenza del processore con gli stati P-state. Gli stati P-state controllano le prestazioni desiderate (in frequenza CPU) da un core. La maggior parte dei carichi di lavoro ottiene prestazioni migliori in P0, richiedendo Turbo Boost. Tuttavia, potresti voler ottimizzare il sistema per prestazioni coerenti anziché prestazioni intermittenti che possono verificarsi quando sono abilitate le frequenze Turbo Boost. 

I carichi di lavoro Intel Advanced Vector Extensions (AVX o AVX2) possono funzionare bene a frequenze più basse e le istruzioni AVX possono consumare più energia. L'esecuzione del processore a una frequenza più bassa, disabilitando Turbo Boost, può ridurre la quantità di potenza e mantenere la velocità più coerente. Per ulteriori informazioni sull'ottimizzazione della configurazione dell'istanza e sul carico di lavoro per AVX, consulta il [sito web Intel](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

I driver inattivi della CPU controllano lo stato P. Le nuove generazioni di CPU richiedono driver inattivi della CPU aggiornati che corrispondono al livello del kernel come segue:
+ Versioni del kernel Linux 6.1 e successive: supporta Intel Granite Rapids (ad esempio, R8i)
+ Versioni del kernel Linux 5.10 e successive: supporta AMD Milan (ad esempio, M6a)
+ Versioni del kernel Linux 5.6 e successive: supporta Intel Icelake (ad esempio, M6i)

Per verificare se il kernel del sistema in esecuzione riconosce la CPU, esegui il comando seguente.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Se l'output di questo comando indica una mancanza di supporto, consigliamo di aggiornare il kernel.

Questa sezione descrive come limitare gli stati di sospensione più profondi e come disabilitare Turbo Boost (richiedendo lo stato P-state `P1`) per fornire bassa latenza e la minima variabilità di velocità del processore per questi tipi di carichi di lavoro.

**Per limitare gli stati di sonno più profondi e disattivare Turbo Boost su AL2**

1. Aprire il file `/etc/default/grub` con un editor a scelta.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Modificare la riga `GRUB_CMDLINE_LINUX_DEFAULT` e aggiungere le opzioni `intel_idle.max_cstate=1` e `processor.max_cstate=1` per impostare `C1` come lo stato C più profondo per i core inattivi.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   L'opzione `intel_idle.max_cstate=1` configura il limite dello stato C per le istanze basate su Intel e l'opzione `processor.max_cstate=1` configura il limite dello stato C per le istanze basate su AMD. È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione.

1. Salvare il file e uscire dall'editor.

1.  Eseguire il comando riportato di seguito per ricreare la configurazione di avvio.

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Riavviare l'istanza per abilitare la nuova opzione del kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Quando occorre la bassa variabilità di velocità del processore fornita dallo stato P-state `P1`, esegui il comando seguente per disabilitare Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Una volta terminato il carico di lavoro, puoi riabilitare Turbo Boost con il comando seguente.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**Limitazione degli stati di sospensione più profondi e disabilitazione di Turbo Boost in Amazon Linux AMI**

1. Aprire il file `/boot/grub/grub.conf` con un editor a scelta.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Modificare la riga `kernel` della prima voce e aggiungere le opzioni `intel_idle.max_cstate=1` e `processor.max_cstate=1` per impostare `C1` come lo stato C più profondo per i core inattivi.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   L'opzione `intel_idle.max_cstate=1` configura il limite dello stato C per le istanze basate su Intel e l'opzione `processor.max_cstate=1` configura il limite dello stato C per le istanze basate su AMD. È consigliabile aggiungere entrambe le opzioni alla configurazione. Ciò consente di impostare il comportamento desiderato sia su Intel che su AMD tramite una singola configurazione.

1. Salvare il file e uscire dall'editor.

1. Riavviare l'istanza per abilitare la nuova opzione del kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Quando occorre la bassa variabilità di velocità del processore fornita dallo stato P-state `P1`, esegui il comando seguente per disabilitare Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Una volta terminato il carico di lavoro, puoi riabilitare Turbo Boost con il comando seguente.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

L'esempio seguente mostra un'`c4.8xlarge`istanza con due v che lavora CPUs attivamente alla frequenza di base di base, senza Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

I core per le versioni CPUs 21 e 28 funzionano attivamente alla velocità di base del processore di 2,9 e anche tutti i core inattivi funzionano alla velocità di base nello stato C GHz, pronti ad accettare le istruzioni. `C1`

# Scheduler I/O per AL2
<a name="io-scheduler"></a>

Le I/O scheduler is a part of the Linux operating system that sorts and merges I/O richieste e determina l'ordine in cui vengono elaborate.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/Ogli scheduler hanno un impatto minore sui dispositivi a stato solido e sugli ambienti virtualizzati. Questo perché per i dispositivi solid state, l'accesso sequenziale e casuale non differisce e, per gli ambienti virtualizzati, l'host fornisce il proprio livello di pianificazione.

In questo argomento viene descritto lo I/O scheduler di Amazon Linux. Per ulteriori informazioni sul pianificatore I/O utilizzato da altre distribuzioni Linux, fare riferimento alla relativa documentazione.

**Topics**
+ [Pianificatori supportati](#supported-schedulers)
+ [Pianificatore di default](#default-schedulers)
+ [Modifica del pianificatore](#change-scheduler)

## Pianificatori supportati
<a name="supported-schedulers"></a>

Amazon Linux supporta i seguenti I/O programmi di pianificazione:
+ `deadline`— Lo I/O scheduler *Deadline* ordina le I/O richieste e le gestisce nell'ordine più efficiente. Garantisce un orario di inizio per ogni I/O request. It also gives I/O richiesta rimasta in sospeso per troppo tempo e una priorità più alta.
+ `cfq`— Lo I/O scheduler *Completely Fair Queueing* (CFQ) tenta di I/O resources between processes. It sorts and inserts I/O allocare equamente le richieste nelle code per processo.
+ `noop`— Le I/O scheduler inserts all I/O richieste *No Operation* (noop) vengono inserite in una coda FIFO e poi le unisce in un'unica richiesta. Questo pianificatore non esegue l'ordinamento delle richieste.

## Pianificatore di default
<a name="default-schedulers"></a>

No Operation (noop) è lo I/O scheduler predefinito per Amazon Linux. Questo pianificatore viene utilizzato per i seguenti motivi:
+ Molti tipi di istanza utilizzano dispositivi virtualizzati in cui l'host sottostante esegue la pianificazione dell'istanza.
+ I dispositivi a stato solido vengono utilizzati in molti tipi di istanze in cui i vantaggi di uno I/O scheduler hanno un impatto minore.
+ È lo I/O scheduler meno invasivo e può essere personalizzato se necessario.

## Modifica del pianificatore
<a name="change-scheduler"></a>

La modifica dello I/O scheduler può aumentare o diminuire le prestazioni a seconda che lo scheduler comporti il completamento di un numero maggiore o minore di I/O richieste in un determinato periodo di tempo. Ciò dipende in gran parte dal carico di lavoro, dalla generazione del tipo di istanza utilizzata e dal tipo di dispositivo a cui si accede. Se modifichi lo scheduler di I/O utilizzato, ti consigliamo di utilizzare uno strumento, come **iotop**, per misurare I/O le prestazioni e determinare se la modifica è vantaggiosa per il tuo caso d'uso.

È possibile visualizzare lo I/O scheduler di un dispositivo utilizzando il seguente comando, che utilizza come esempio. `nvme0n1` Sostituisci `nvme0n1` nel seguente comando con il dispositivo elencato in `/sys/block` nell'istanza.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Per impostare lo I/O scheduler per il dispositivo, utilizzare il seguente comando. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Ad esempio, per impostare lo I/O scheduler per un *xvda* dispositivo dal `noop` al`cfq`, utilizzate il comando seguente. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Cambia il nome host della tua istanza AL2
<a name="set-hostname"></a>

Quando avvii un'istanza in un VPC privato, Amazon EC2 assegna un nome host del sistema operativo guest. Il tipo di nome host assegnato da Amazon EC2 dipende dalle impostazioni della sottorete. Per ulteriori informazioni sui nomi host EC2, consulta i tipi di hostname delle [istanze Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) nella Amazon *EC2* User Guide.

Un tipico nome DNS privato di Amazon EC2 per un'istanza EC2 configurata per utilizzare la denominazione basata su IP con un IPv4 indirizzo è simile al seguente:`ip-12-34-56-78.us-west-2.compute.internal`, dove il nome è composto dal dominio interno, dal servizio (in questo caso`compute`), dalla regione e da una forma dell'indirizzo privato. IPv4 Parte di questo nome host viene visualizzato nel prompt della shell quando esegui l'accesso all'istanza, ad esempio, `ip-12-34-56-78`). Ogni volta che si arresta e si riavvia l'istanza Amazon EC2 (a meno che non si utilizzi un indirizzo IP elastico), l' IPv4 indirizzo pubblico cambia, così come il nome DNS pubblico, il nome host del sistema e il prompt della shell.

**Importante**  
Queste informazioni si applicano ad Amazon Linux. Per informazioni su altre distribuzioni, consulta la documentazione specifica.

## Modifica del nome host del sistema
<a name="set-hostname-system"></a>

Se disponi di un nome DNS pubblico registrato per l'indirizzo IP dell'istanza, ad esempio `webserver.mydomain.com`, puoi impostare il nome host del sistema in modo che l'istanza identifichi se stessa come appartenente a tale dominio. Ciò modifica anche il prompt della shell in modo che visualizzi la prima parte di questo nome anziché il nome host fornito da AWS (ad esempio,). `ip-12-34-56-78` Se non dispone di un nome DNS pubblico registrato, puoi comunque modificare il nome host, ma il processo necessario è leggermente diverso.

Affinché l'aggiornamento del nome host persista, è necessario verificare che l'impostazione cloud-init di `preserve_hostname` sia impostata su `true`. Per modificare o aggiungere questa impostazione è possibile eseguire il seguente comando:

```
sudo vi /etc/cloud/cloud.cfg
```

Se l'impostazione `preserve_hostname` non è riportata, aggiungere la seguente riga di testo alla fine del file: 

```
preserve_hostname: true
```

**Per modificare il nome host del sistema in un nome DNS pubblico**

Segui questa procedura se disponi già di un nome DNS pubblico registrato.

1. 
   + Per AL2: utilizzate il **hostnamectl** comando per impostare il nome host in modo che rifletta il nome di dominio completo (ad esempio). **webserver.mydomain.com**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Per Amazon Linux AMI: nell'istanza, aprire il file di configurazione `/etc/sysconfig/network` nel proprio editor di testo preferito e modificare la voce `HOSTNAME` in base al nome di dominio completo, ad esempio **webserver.mydomain.com**.

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Riavviare l'istanza per rendere effettivo il nuovo nome host.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   In alternativa puoi riavviare usando la console Amazon EC2 (nella pagina **Instances (Istanze)**, seleziona l'istanza e scegli **Instance state (Stato istanza)**, **Reboot instance [Riavvia istanza]**).

1. Eseguire l'accesso all'istanza e verificare che il nome host sia aggiornato. Il prompt deve mostrare il nuovo nome host (fino al primo ".") e il comando **hostname** deve mostrare il nome di dominio completo.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Per modificare il nome host del sistema senza un nome DNS pubblico**

1. 
   + Per AL2: utilizzare il **hostnamectl** comando per impostare il nome host in modo che rifletta il nome host di sistema desiderato (ad esempio). **webserver**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Per Amazon Linux AMI: nell'istanza, aprire il file di configurazione `/etc/sysconfig/network` nel proprio editor di testo preferito e modificare la voce `HOSTNAME` in base al nome host del sistema desiderato, ad esempio **webserver**.

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Aprire il file `/etc/hosts` nel proprio editor di testo preferito e modificare la voce che inizia con **127.0.0.1** in modo che corrisponda all'esempio seguente (sostituire con il proprio nome host).

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Riavviare l'istanza per rendere effettivo il nuovo nome host.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   In alternativa puoi riavviare usando la console Amazon EC2 (nella pagina **Instances (Istanze)**, seleziona l'istanza e scegli **Instance state (Stato istanza)**, **Reboot instance [Riavvia istanza]**).

1. Eseguire l'accesso all'istanza e verificare che il nome host sia aggiornato. Il prompt deve mostrare il nuovo nome host (fino al primo ".") e il comando **hostname** deve mostrare il nome di dominio completo.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

Puoi anche implementare altre soluzioni programmatiche, ad esempio, specificare i dati utente per configurare l'istanza. Se l'istanza fa parte di un gruppo con scalabilità automatica, puoi utilizzare gli hook del ciclo di vita per definire i dati utente. Per maggiori informazioni, consulta [Esecuzione di comandi sull'istanza Linux durante l'avvio](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) e [Hook del ciclo di vita per l'avvio delle istanze](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) nella *Guida per l'utente di AWS CloudFormation *.

## Modifica del prompt della shell senza ripercussioni sul nome host
<a name="set-hostname-shell"></a>

Se non desiderate modificare il nome host della vostra istanza, ma desiderate che venga visualizzato un nome di sistema più utile (ad esempio**webserver**) rispetto al nome privato fornito da AWS (ad esempio,`ip-12-34-56-78`), potete modificare i file di configurazione del prompt della shell per visualizzare il nickname del sistema anziché il nome host.

**Per modificare il prompt della shell in un nome host alternativo**

1. Creare un file in `/etc/profile.d` in cui sia impostata la variabile di ambiente denominata `NICKNAME` sul valore che si desidera visualizzare nel prompt della shell. Ad esempio, per impostare il nome alternativo del sistema su **webserver**, esegui il comando seguente.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Aprire il file `/etc/bashrc` (Red Hat) o `/etc/bash.bashrc` (Debian/Ubuntu) con l'editor di testo preferito (ad esempio **vim** o **nano**). È necessario utilizzare **sudo** con il comando dell'editor in quanto `/etc/bashrc` e `/etc/bash.bashrc` sono di proprietà di `root`.

1. Modificare il file e la variabile del prompt della shell (`PS1`) in modo da visualizzare il nome alternativo anziché il nome host. Cercare la seguente riga che imposta il prompt della shell in `/etc/bashrc` o `/etc/bash.bashrc`. Di seguito vengono visualizzate alcune righe circostanti per fornirne il contesto. Cercare la riga che inizia con `[ "$PS1"`):

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Modificare `\h` (il simbolo per `hostname`) in tale riga impostando il valore della variabile `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Opzionale) Per impostare il titolo delle finestre della shell utilizzando il nuovo nome alternativo, completare la procedura seguente.

   1. Creare un file denominato `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Rendere eseguibile il file utilizzando il seguente comando.

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Aprire il file `/etc/sysconfig/bash-prompt-xterm` con il proprio editor di testo preferito (ad esempio **vim** o **nano**). È necessario utilizzare **sudo** con il comando dell'editor in quando `/etc/sysconfig/bash-prompt-xterm` è di proprietà di `root`.

   1. Aggiungere la seguente riga al file.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Uscire e rieseguire l'accesso per rendere effettivo il nuovo valore del nome alternativo.

## Modifica del nome host in altre distribuzioni Linux
<a name="set-hostname-other-linux"></a>

Le procedure in questa pagina sono pensate per essere utilizzate solo con Amazon Linux. Per ulteriori informazioni su altre distribuzioni Linux, consulta la documentazione specifica e i seguenti articoli:
+ [How do I assign a static hostname to a private Amazon EC2 instance running RHEL 7 or Centos 7? (Come si assegna un nome host statico a un'istanza di Amazon EC2 privata eseguita in RHEL 7 o Centos 7?)](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Configura il DNS dinamico sulla tua istanza AL2
<a name="dynamic-dns"></a>

Quando avvii un'istanza EC2, a tale istanza vengono assegnati un indirizzo IP pubblico e un nome del sistema dei nomi di dominio (DNS) pubblico che puoi utilizzare per raggiungere l'istanza da Internet. Dal momento che sono presenti numerosi host nel dominio di Amazon Web Services, questi nomi pubblici devono essere sufficientemente lunghi per garantirne l'univocità. Un tipico nome DNS pubblico di Amazon EC2 ha un aspetto simile al seguente:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, dove il nome è composto dal dominio Amazon Web Services, dal servizio (in questo caso,`compute`) Regione AWS, e da una forma dell'indirizzo IP pubblico.

All'interno della relativa area del dominio, i servizi DNS dinamici forniscono nomi host DNS personalizzati facili da ricordare e che possono risultare più rilevanti per lo specifico caso d'uso dell'host. Inoltre, alcuni di questi servizi sono gratuiti. Puoi utilizzare un provider di servizi DNS dinamico con Amazon EC2 e configurare l'istanza per l'aggiornamento dell'indirizzo IP associato al nome DNS pubblico a ogni avvio dell'istanza. Sono disponibili numerosi provider selezionabili. I dettagli specifici relativi alla selezione di un provider e al suo utilizzo per la registrazione di un nome non rientrano nell'ambito della presente guida.<a name="procedure-dynamic-dns"></a>

**Per utilizzare il DNS dinamico con Amazon EC2**

1. Eseguire la registrazione a un provider di servizi DNS dinamico e registrare un nome DNS pubblico mediante il relativo servizio. Questa procedura utilizza il servizio gratuito disponibile in [noip.com/free](https://www.noip.com/free) come esempio.

1. Configurare il client di aggiornamento del DNS dinamico Dopo aver registrato un provider di servizi DNS dinamico e un nome DNS pubblico con il servizio, associare il nome DNS all'indirizzo IP dell'istanza. Numerosi provider, compreso [noip.com](https://noip.com), consentono di eseguire manualmente questa operazione dalla pagina dell'account nel proprio sito Web, ma molti altri supportano anche client di aggiornamento software. Se un client di aggiornamento è in esecuzione su un'istanza EC2, il record del DNS dinamico viene aggiornato ogni volta che l'indirizzo IP cambia, come succede dopo un arresto e un riavvio. In questo esempio, viene installato il client noip2, che funziona con il servizio fornito da [noip.com](https://noip.com).

   1. Abilita l'archivio Extra Packages for Enterprise Linux (EPEL) per accedere al client. `noip2`
**Nota**  
AL2 per impostazione predefinita, le istanze hanno le chiavi GPG e le informazioni del repository per l'archivio EPEL installate. [Per ulteriori informazioni e per scaricare la versione più recente di questo pacchetto, consulta https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Installare il pacchetto `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Creare il file di configurazione. Immettere le informazioni relativi al login e alla password quando viene richiesto e quindi rispondere alle domande successive per configurare il client.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Attivare il servizio noip.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Avviare il servizio noip.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Questo comando avvia il client, che legge il file di configurazione (`/etc/no-ip2.conf`) precedentemente creato e aggiorna l'indirizzo IP per il nome DNS pubblico selezionato.

1. Verificare che il client di aggiornamento abbia impostato l'indirizzo IP corretto per il nome DNS dinamico selezionato. Attendere alcuni minuti per consentire l'aggiornamento dei record DNS e quindi provare a connettersi all'istanza utilizzando SSH con il nome DNS pubblico configurato in questa procedura.

# Configura la tua interfaccia di rete usando ec2-net-utils per AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs può contenere script aggiuntivi installati da AWS, noti come ec2-net-utils. Questi script automatizzano facoltativamente la configurazione delle interfacce di rete. Questi script sono disponibili solo per. AL2 

**Nota**  
Per Amazon Linux 2023, il `amazon-ec2-net-utils` pacchetto genera configurazioni specifiche dell'interfaccia nella directory. `/run/systemd/network` Per ulteriori informazioni, consulta la sezione [Servizio di rete](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) nella *Guida per l'utente di Amazon Linux 2023*.

Usa il seguente comando per installare il pacchetto AL2 se non è già installato, oppure aggiornalo se è installato e sono disponibili aggiornamenti aggiuntivi:

```
$ yum install ec2-net-utils
```

I seguenti componenti fanno parte di ec2-net-utils:

Regole udev (`/etc/udev/rules.d`)  
Identifica le interfacce di rete quando vengono collegate, scollegate o ricollegate a un'istanza in esecuzione e assicura che lo script hotplug venga eseguito (`53-ec2-network-interfaces.rules`). Esegue la mappatura dell'indirizzo MAC a un nome di dispositivo (`75-persistent-net-generator.rules`, che genera `70-persistent-net.rules`).

Script hotplug  
Genera un file di configurazione dell'interfaccia idoneo per l'utilizzo con DHCP (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). Genera inoltre un file di configurazione del routing (`/etc/sysconfig/network-scripts/route-eth`*N*).

Script DHCP  
Ogni volta che l'interfaccia di rete riceve un nuovo lease DHCP, questo script esegue una query sui metadati dell'istanza per cercare gli indirizzi IP elastici. Per ogni indirizzo IP elastico, aggiunge una regola al database delle policy di routing per garantire che il traffico in uscita da tale indirizzo utilizzi l'interfaccia di rete corretta. All'interfaccia di rete aggiunge inoltre ciascun indirizzo IP privato come indirizzo secondario.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Estende la funzionalità del comando standard **ifup**. Dopo che questo script ha riscritto i file di configurazione `ifcfg-eth`*N* e `route-eth`*N*, esegue **ifup**.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Estende la funzionalità del comando standard **ifdown**. Dopo che questo script ha rimosso le regole per l'interfaccia di rete dal database delle policy di routing, esegue **ifdown**.

**ec2ifscan** (`/usr/sbin/`)  
Verifica la presenza di interfacce di rete non configurate e le configura.  
Questo script non è disponibile nella versione iniziale di ec2-net-utils.

Per elencare i file di configurazione generati da ec2-net-utils, utilizzare il seguente comando:

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Per disabilitare l'automazione, puoi aggiungere `EC2SYNC=no` al file `ifcfg-eth`*N* corrispondente. Ad esempio, utilizza il seguente comando per disabilitare l'automazione per l'interfaccia eth1:

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Per disabilitare completamente l'automazione, puoi rimuovere il pacchetto utilizzando il seguente comando:

```
$ yum remove ec2-net-utils
```