3 votes

J'ai besoin d'automatiser la tâche de formatage et de montage d'un SSD au démarrage d'Ubuntu 20.04 LTS.

J'utilise un SSD local dans Google Cloud Platform, et la caractéristique du SSD local fourni par Google est que l'utilisateur doit le reformater et le monter à chaque fois que l'utilisateur redémarre le système d'exploitation : https://cloud.google.com/compute/docs/disks/add-local-ssd#formatmultiple

Je voulais automatiser cette opération car c'est ennuyeux de devoir le faire manuellement à chaque fois que le système redémarre. J'ai donc créé un script dans /etc/init.d/automountssd.sh

#!bin/bash
sudo mdadm --create /dev/md0 --level=0 --raid-devices=4 /dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
sudo mkfs.ext4 -F /dev/md0
sudo mount /dev/md0 /root/Downloads/

Attribuez ensuite des autorisations : chmod 775 /etc/init.d/automountssd.sh

Et je l'ai enregistré comme autorun : update-rc.d automountssd.sh defaults

Et après le redémarrage, rien ne s'est passé. :(

Résolu : J'ai suivi la réponse d'alfajorcito et cela fonctionne parfaitement sur la plateforme GCP.

J'ai d'abord suivi ses conseils et changé #!bin/bash en #!/bin/bash. Et je l'ai enregistré comme service en faisant ce qui suit : nano /etc/systemd/system/automountssd.service

[Unit]
Description=automount for GCP local ssd

[Service]
Type=oneshot
ExecStart=/etc/init.d/automountssd.sh
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

Lancez le service automatiquement au démarrage, et exécutez le service : sudo systemctl enable automountssd && sudo systemctl start automountssd

Maintenant, chaque fois que le système d'exploitation est démarré, le SSD sera automatiquement formaté, configuré en Raid et monté :)

3voto

alfajorcito Points 46

Il manque une barre oblique à votre shebang (c'est-à-dire qu'il devrait être #!/bin/bash et non pas #!bin/bash) - mais à part cela, quelque chose d'autre ne fonctionne pas (je ne suis pas sûr de ce que c'est exactement) - j'ai essayé de reproduire cela avec un simple Shell Shell contenant une seule commande echo, mais cela ne fonctionne toujours pas...

Cependant, j'ai réussi à faire en sorte que le script soit automatiquement exécuté après le redémarrage en utilisant les unités systemd, alors peut-être pourriez-vous essayer de faire quelque chose de similaire ? Je n'ai pas de compte GCP, je ne peux donc pas garantir que cela résoudrait votre problème de SSD local, mais ce qui suit a fonctionné sur Ubuntu 20 sur OCI :

# Linux version check
ubuntu@e2-micro-2:~$ uname -a
Linux e2-micro-2 5.11.0-1028-oracle #31~20.04.1-Ubuntu SMP Wed Jan 26 14:17:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

# script contents
ubuntu@e2-micro-2:~$ cat /etc/init.d/check-if-this-works.sh
#!/bin/bash
echo 'check' >> /tmp/checkme

# script permissions
ubuntu@e2-micro-2:~$ ls -l /etc/init.d/check-if-this-works.sh
-rwxrwxr-x 1 ubuntu ubuntu 41 Feb 19 08:26 /etc/init.d/check-if-this-works.sh

# systemd unit contents
ubuntu@e2-micro-2:~$ cat  /etc/systemd/system/checkme.service
[Unit]
Description=Check me

[Service]
Type=oneshot
ExecStart=/etc/init.d/check-if-this-works.sh
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

# confirm that output file is missing before reboot
ubuntu@e2-micro-2:~$ ls -l /tmp/checkme
ls: cannot access '/tmp/checkme': No such file or directory

# reload systemd daemon and enable service
ubuntu@e2-micro-2:~$ sudo systemctl daemon-reload
ubuntu@e2-micro-2:~$ sudo systemctl enable checkme

# reboot and check if script was successfully executed on startup
ubuntu@e2-micro-2:~$ sudo reboot
(ssh back to server)
ubuntu@e2-micro-2:~$ cat /tmp/checkme
check

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X