如何在Linux中挂载设备?


75

我阅读了一些有关在Linux上安装设备的mount命令的资源,但是这些资源都不是很清楚(至少对我而言)。

总体而言,这是大多数指南指出的内容:

$ mount
(lists all currently mounted devices)

$ mount -t type device directory
(mounts that device)

for example (to mount a USB drive):
$ mount -t vfat /dev/sdb1 /media/disk

我不清楚的是:

  • 我如何知道在“设备”中使用$ mount -t type device directory什么?也就是说,我如何知道我应该在此命令中使用“ / dev / sdb1” $ mount -t vfat /dev/sdb1 /media/disk来安装我的USB驱动器?

  • 这里的“ -t”参数定义什么?类型?

我读$ man mount了几次手册页(),但可能仍然缺少一些内容。请澄清。


@rozcietrzewiacz我必须承认我的大脑无法正常工作。当@Let_Me_Be指向/dev/disk/by-id我时,我认为“ by-id”将被替换为某些东西,并应作为命令发布。没想到它实际上可以是目录。Windows-> Linux用户在初始阶段可能会发生这种情况!(或者只有我:))
its_me 2011年

@rozcietrzewiacz这不是很公平。
亚历克斯·张伯伦

4
放下-t typemount通常会弄清楚,如果不能解决,通常可以说明您做错了什么。
亚历克斯·张伯伦

3
@AlexChamberlain我可以看到我被抬了。我对@its_me表示歉意。我应该写过“如果您真的读过手册,就不会问这个-t选项”。问题的另一部分(如何确定/dev/条目代表哪个设备)是非常合理的。
rozcietrzewiacz 2012年

Answers:


81

您可以使用fdisk了解您所拥有的分区类型,例如:

fdisk -l

显示:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   204796619   102398278+   7  HPFS/NTFS
/dev/sda2       204797952   205821951      512000   83  Linux
/dev/sda3       205821952   976773119   385475584   8e  Linux LVM

这样,您就知道您拥有sda1,2和3分区。-t选项是文件系统类型;它可以是NTFS,FAT,EXT。在我的示例中,sda1是ntfs,因此它应该类似于:

mount -t ntfs /dev/sda1  /mnt/

USB设备通常是vfat,Linux通常是ext。


我在fedora VM(Windows 7主机)上。我只是插入了USB驱动器(Windows无法识别它,因为VM正在运行)并发出了命令$ fdisk -l。但是它仅列出Linux和Linux LVM文件系统(仅两个)。不VFAT,NTFS,HPFS或分机等
its_me

也许这不是安装问题,而是设备识别问题。看一下/ var / log / message文件,它应该显示USB设备是否有问题。
ghm1014 2011年

因此,通常这就是我在运行的linux系统上的查找方式:插入笔驱动器(示例),发出命令# fdisk -l并查找设备(/ dev / *)及其文件系统(vfat,ntfs,hpfs,ext等) 。对?
its_me 2011年

通常是的。如果您运行的是gnome,它将安装USB和外部硬盘驱动器,而无需手动安装。就像Windows一样,它显示一个弹出窗口。
ghm1014 2011年

最后一个疑问。这些是仅有的常见文件系统设备文件:/ dev / sd *或/ dev / hd *用于硬盘,/ dev / cdrom用于CD-ROM,而/ dev / fd *用于软盘。还要别的吗?
its_me 2011年

17

我对此真的很生锈,然后又开始回来..如果这不能回答您的问题,也许我读错了...

Alibi:这是Ubuntu 14版本。你的旅费可能会改变。

我用lsblk得到我的挂载点,这不同于mount 对我来说lsblk是很容易,阅读mount

在挂载设备之前,请确保已创建目录。

sudo mkdir /{your directory name here}
sudo mount /dev/{specific device id} /{your directory name here that is already created}

您应该一切顺利,但是请检查该新目录的安全权限,以确保它是您想要的。


7

这些天来,您可以使用详细的路径来安装特定的设备。

例如:

mount /dev/disk/by-id/ata-ST31500341AS_9VS2AM04-part1 /some/dir
mount /dev/disk/by-id/usb-HTC_Android_Phone_SH0BTRX01208-0\:0 /some/dir

在哪里可以找到更多有关此的信息?我还没有进入Linux上的这个“冗长的东西”,所以令人困惑。
its_me 2011年

1
@Aahan嗯,这些只是到的符号链接/dev/sd*。有/dev/disk/by-id(设备/分区ID), /dev/disk/by-uuid(设备/分区UUID -手动使用不是非常有用), /dev/disk/by-path(取决于器件的连接方式), /dev/disk/by-label(分区标签如果存在的话)
Let_Me_Be

我从哪里获得这些详细信息(分区ID,设备路径,标签等)?
its_me 2011年

1
@Aahan嗯,这就是设备报告的内容。ID将是设备名称或型号或序列号,或其组合。路径将是相同的,但是会报告磁盘的连接方式,因此它将是例如pci-0000:00:1f.2-scsi-3:0:0:0-part3(pci设备0000:00:1f.2,第三个端口,第三个分区),标签将是标签,uuid是计算机生成的唯一标签id(如果您想要一种不会改变的识别形式,则可以使用它)。
Let_Me_Be

1
当您指的是/ dev / disk / by-id时,我认为“ by-id”将被替换为某些东西,应作为命令发布。没想到它实际上可以是目录。感谢您对我的耐心。大声笑,我很可笑:)
its_me 2011年

3

mount(命令)通常会找出设备上文件系统的“类型”。我想弄清楚设备文件名很困难。您几乎必须知道磁盘驱动器的命名约定才能弄清楚。

在最新的Arch Linux机器上:

133 % ls /dev/sd??
/dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sdb1  /dev/sdb2

但这在成熟的(2.6.20.9)Slackware机器上不起作用:

1 % ls /dev/sd??
zsh: no matches found: /dev/sd??
2 % ls /dev/hd??
/dev/hda1  /dev/hda2

在不事先知道/dev/sd*/dev/hd*不是硬盘设备文件的情况下,您必须使用lspcilsusb或某种方式来确定设备文件名。USB设备通常会保留信息,/var/log/messages以帮助您确定udev分配给它们的设备文件。


1
fdisk -l像提到的其他答案一样使用?(另请参阅我对该答案的最新评论。)
its_me 2011年

1

在Ubuntu 14上,您还可以使用“磁盘”应用程序:

在此处输入图片说明

首先单击左侧面板上的磁盘,然后单击右侧面板上的分区。右面板的底部显示格式,当前安装状态等。您也可以使用此GUI创建/删除/格式化分区。


为什么两个4GB相同?而且OQ很难找到正确的设备。然后还要格式化吗?
rastafile

1

为什么我们有很多方法可以做到这一点,但是与往常一样,我们也考虑到了这一点,并且不知道设备中使用的文件系统可能会在哪些方面受到阻碍,但是我们可以使用“自动”选项提供一些帮助。

mount -t auto /dev/sdb1 /media/pendrv

并准备好安装我们的设备:在/ media / pendrv即可使用,然后只需使用:

umount /media/pendrv

...释放设备。


0

ThoerX论坛 使用fdisk -l检查设备

Partition the device as following :-
fdisk /dev/sda
d - Delete old partitions
n - New partition
select partition number
select start block
select end block
v - verify the new partition
w - write through

now fdisk - l should show /dev/sda1 with proper filesystem type (say ext4)
mount -t ext4 /dev/sda1 /myMountPoint

0

有人坐骑所说的“设备”是一个逻辑块设备,上面有一个文件系统。

“设备”也可以表示产品(SSD是驱动器,HDD是磁盘驱动器,DVD是磁盘,ODD是磁盘驱动器。

通常,哪一个完全无关紧要。但是,当涉及到挂载(或格式化或分区)时,它确实很重要,因为在逻辑上很重要。

如您所见,sda就在sda1、2、3的旁边,还有sdb,sdc,每个分区都有它们的分区。因此,您可能会出错。

当您mount /dev/sdb1 /media/disk/从SATA磁盘“ b”中选择分区1时。如果该sdb1是USB笔分区,则您的安装点名称不太准确。

您甚至可以安装一块RAM来制作一个ramdisk或一个文件(“循环设备”)。或像sysfs这样的全虚拟“设备”,它会填充/ sys目录(挂载点)。

挂载的概念以及命令挂载的概念依赖于具有三个主要元素的概念(VFS等):

  1. 分区/块设备:比较fdisk -llsblkcat /proc/partitions。这很棘手,但是80%只是不同的观点。
  2. 文件系统:格式化会将20GB的分区变成一个空目录,具有18GB的可用空间来填充文件。请参见man mkfsman mkfs.ext2(mkfs.FSTYPE)。
  3. Mountpoint:这只是一个“挂钩”,一个(空)目录,新分支附加到该目录(顶级)“ /”。通过绑定覆盖,您可以创建复杂的FS树。但是mkdir xyz,从技术上讲,任何临时性都可以。

所有这些安装都是由sysadmin在/ etc / fstab中集中配置的。随着当今大容量存储的热插拔,事情变得有些复杂。

对于USB笔,它是一个内核模块,可在一瞬间弹出/ dev / sdb及其分区。

热插拔的所有进一步自动化(尽管如此简单)必须由udev协调,有时还需要其他工具来完善。Udev可以处理所有设备,而不仅仅是存储。

我们陷入了自动弹出一个新图标(甚至只是一个具有适当名称的“设备”)和带有(虚拟)文件系统的内核系统地准备零件的麻烦之间。但是借助RAID和加密以及所有不同的存储“设备”,Linux必须添加一些层。

最后,您希望这些内容唾手可得。

通常,您只需要标识正确的... DEVICE;)。您可以ls /dev/sd*查看其中的内容:哪些字母,哪些数字可以标识您的设备...

然后输入

mkdir mydev
mount /dev/DEVICE mydev

(您可以省略该-t type部分)


这既易于阅读,又可以系统地进行。“安装”是一个非常重要的概念。所有这些答案都显示出“问题”,特别是对于初学者而言。“ mount”是UNIX命令。多维的。只有fork()更复杂。
rastafile

维基百科linux批评:有一次,Linux系统需要手动安装可移动媒体(例如软盘和CD-ROM),然后才能对其进行访问。随着udev的发展,现在几乎所有发行版中的安装介质都是自动的。
rastafile
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.