AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1072821
Accepted
S. Nixon
S. Nixon
Asked: 2018-09-07 08:12:17 +0800 CST2018-09-07 08:12:17 +0800 CST 2018-09-07 08:12:17 +0800 CST

自动将文件系统添加到 /etc/fstab

  • 772

我使用lvcreate和mkfs在我的Ubuntu Server 18.04 LTS系统上创建新的文件系统。我感到困惑的一件事是,系统不会自动将我创建的任何新文件系统添加到/etc/fstab文件中。唯一添加的是在安装期间最初创建系统时创建的那些。

有什么方法(mkfs标志或单独的apt包)可以将新文件系统自动插入到/etc/fstab文件中,而不需要管理员手动编辑文件?

filesystem fstab
  • 2 2 个回答
  • 5901 Views

2 个回答

  • Voted
  1. Best Answer
    Ravexina
    2018-09-07T08:22:51+08:002018-09-07T08:22:51+08:00

    这很正常,因为工具或操作系统无法知道您要将刚刚创建的分区、逻辑卷等挂载到哪里。

    您在安装系统时创建的那些会由您的选择检测(当您选择root、home等时)并添加到 fstab 中,因为它们是引导系统所必需的。

    您必须手动编辑 fstab。

    但是,还有其他方法可以自动挂载分区,例如 udisks 之类的工具。

    https://help.ubuntu.com/community/AutomaticallyMountPartitions

    • 5
  2. S. Nixon
    2018-09-07T12:05:53+08:002018-09-07T12:05:53+08:00

    这是我制作的一个示例 Korn shell 脚本,用于查看是否可以将 LV、文件系统和挂载点的创建全部自动化,然后将适当的条目添加到 /etc/fstab。

    不确定它是否适用于所有系统和配置,但到目前为止它似乎可以满足我的需求。它远非完成品(没有太多的错误检查),但只是告诉我应该可以将 lvcreate/mkfs/mount 例程自动化到一个命令中。

    #!/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 #
    
    • 0

相关问题

  • “/var/lib/dpkg/updates”文件夹中存储了什么?

  • 如何使文件夹与外部 USB 硬盘保持同步?

  • 为什么 Ubuntu 不再将文件大小单位测量为字节、兆字节、千兆字节等?

  • 如何避免启动时出现“S to Skip”消息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve