J'utilise lvcreate et mkfs pour créer de nouveaux systèmes de fichiers sur mon buntu Server 18.04 LTS systèmes. Une chose qui me dérange, c'est que le système n'ajoute pas automatiquement les nouveaux systèmes de fichiers que je crée au fichier /etc/fstab . Les seuls ajoutés sont ceux qui ont été créés lors de la création initiale du système lors de l'installation.
Existe-t-il un indicateur ( mkfs , ou un paquet séparé apt ) qui de nouveaux systèmes de fichiers pourraient être insérés automatiquement dans le fichier /etc/fstab plutôt que de demander à l'administrateur de modifier manuellement le fichier?
C'est normal, car aucun outil ni système d'exploitation ne peut savoir où vous voulez monter les partitions, les volumes logiques ou autres que vous venez de créer.
Ceux que vous créez lors de l'installation du système sont détectés par vos choix (lorsque vous sélectionnez votre root
, home
, etc.) et sont ajoutés à fstab car ils sont nécessaires au démarrage de votre système.
vous devez éditer manuellement le fstab.
MAIS, il existe d'autres moyens de monter automatiquement des partitions, des outils tels que les udisks.
https://help.ubuntu.com/community/AutomaticallyMountPartitions
Voici un exemple de script Korn Shell que j'ai créé pour voir s'il était possible d'automatiser la création du LV, du système de fichiers et du point de montage, puis d'ajouter l'entrée appropriée à/etc/fstab.
Je ne sais pas si cela fonctionne sur tous les systèmes et toutes les configurations, mais cela semble répondre à mes besoins jusqu'à présent. Il est loin d'être un produit fini (vérification d'erreur pas beaucoup), mais il me montre que l'automatisation des routines lvcreate/mkfs/mount en une seule commande devrait être possible.
#!/bin/ksh
typeset -i ERRVAL
while getopts V:L:m:s:t:h FSTR
do
case ${FSTR} in
V) {
VGNAME=${OPTARG}
};;
L) {
LVNAME=${OPTARG}
};;
m) {
MNTPT=${OPTARG}
};;
s) {
SIZE=${OPTARG}
};;
t) {
FSTYPE=${OPTARG}
};;
h) {
print "help screens go here"
exit 0
};;
esac
done
if test "${VGNAME}" = ""
then
print "ERROR: Volume group name must be specified. Valid volume groups:"
vgdisplay |grep -i "vg name" |awk '{print $3}'
exit 1
Elif test "$(vgdisplay |grep -i "vg name" |grep "${VGNAME}$")" = ""
then
print "ERROR: Unrecognized volume group name. Valid volume groups:"
vgdisplay |grep -i "vg name" |awk '{print $3}'
exit 1
fi
if test "${LVNAME}" = ""
then
print "ERROR: Logical volume name must be specified."
exit 1
Elif test "$(lvdisplay|grep -i "lv name"|awk '{print $3}'|grep "^${LVNAME}$")" !
= ""
then
print "ERROR: Logical volume already exists with that name."
exit 1
fi
if test "${FSTYPE}" = ""
then
print "Type of filesystem not specified, defaulting to ext4"
FSTYPE=ext4
fi
if test "${SIZE}" = ""
then
print "ERROR: Logical volume size must be supplied."
exit 1
else
TMPSIZE="$(echo "${SIZE}" |tr -d '[ a-fhijln-zA-FHIJLN-Z!@#$%~]')"
SIZE="${TMPSIZE}"
if test "$(echo "${SIZE}" |egrep "K|k|M|m|G|g")" = ""
then
print "ERROR: LV size must be listed in K, M, or G."
exit 1
fi
fi
if test "${MNTPT}" = ""
then
print "ERROR: Mount point not specified."
print ""
exit 1
Elif test -d ${MNTPT}
then
print "Mount point already exists: ${MNTPT}"
print "Use this directory (Y/N)? \c"
read YORN
if test "${YORN}" != "Y" -a "${YORN}" != "y"
then
exit 1
fi
Elif test ! -d ${MNTPT}
then
print "Mount point does not exist: ${MNTPT}"
print "Create this directory (Y/N)? \c"
read YORN
if test "${YORN}" = "Y" -o "${YORN}" = "y"
then
mkdir ${MNTPT}
else
exit 1
fi
fi
DEVNAME="/dev/${VGNAME}/${LVNAME}"
# CREATE THE LOGICAL VOLUME
print "Issuing command:"
print "lvcreate -L${SIZE} -n ${DEVNAME} ${VGNAME}"
lvcreate -L${SIZE} -n ${DEVNAME} ${VGNAME}
ERRVAL=$?
if test ${ERRVAL} -ne 0
then
print "ERROR: lvcreate command exited with non-zero status."
exit 0
fi
# CREATE THE FILESYSTEM
print "Issuing command:"
print "mkfs -t ${FSTYPE} ${DEVNAME}"
mkfs -t ${FSTYPE} ${DEVNAME}
ERRVAL=$?
if test ${ERRVAL} -ne 0
then
print "ERROR: mkfs command exited with non-zero status."
exit 0
fi
# MOUNT POINT SHOULD ALREADY EXIST SO MOUNT THE NEW FILESYSTEM
print "Issuing command:"
print "mount ${DEVNAME} ${MNTPT}"
mount ${DEVNAME} ${MNTPT}
ERRVAL=$?
if test ${ERRVAL} -ne 0
then
print "ERROR: mount command exited with non-zero status."
exit 0
fi
# ADD TO /etc/fstab
print "Obtain UUID value from blkid"
UUID=$(blkid |grep "${VGNAME}-${LVNAME}:"|cut -f2 -d'='|cut -f2 -d'"')
if test "${UUID}" = ""
then
print "ERROR: Unable to determine UUID to use for ${LVNAME}"
exit 1
fi
print "Saving /etc/fstab as /etc/fstab.$$"
/bin/cp -p /etc/fstab /etc/fstab.$$
print "Adding /etc/fstab entry"
echo "UUID=${UUID} ${MNTPT} ${FSTYPE} defaults 0 0" >> /etc/fstab
ERRVAL=$?
if test ${ERRVAL} -ne 0
then
print "ERROR: Could not save entry to /etc/fstab"
exit 1
fi
# END OF SCRIPT #