我有一台有 2 个硬盘的服务器。我想知道第二个驱动器上有什么。如何列出物理设备上的所有内容?
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 40G 0 disk
└─xvda1 202:1 0 40G 0 part /
xvde 202:64 0 40G 0 disk
└─xvde1 202:65 0 40G 0 part
我运行上面的代码。这是否意味着第二个驱动器是空的且未使用?
答案1
你的问题的答案是也许是的。
lsblk
将隐藏空设备——但是,在这种情况下,它仅讨论分区,而不讨论这些分区上的数据。lsblk
不是这里工作的最佳工具。
然而,这确实告诉我们分区尚未安装 -所以是的,目前尚未使用。
那么,分区(以及驱动器)上是否有任何数据?
df
我们可以通过命令或“disk free”找到这一点。
要查看分区的内容(因为只有一个分区,我们可以将其称为驱动器本身的内容),我们首先需要安装它。
让我们以 root 身份为其创建一个目录
# mkdir /mnt/xvde1
然后挂载这个分区
# mount /dev/xvde1 /mnt/xvde1
接下来,在我们查看实际信息之前......让我们看看如何很多(如果有)磁盘空间正在被使用。我们知道分区大约有 40GB 大,但这是分配的空间,而不是已使用的空间。 [感谢评论中的 @n.st 建议使用分区作为参数df
!]
# df -H /dev/xvde1
会告诉我们正在使用多少空间。这是我的文件系统的示例
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 43G 15G 29G 35% /
第二列(15GB)是已使用的数量。 这就是我们要找的!如果它 > 0,则该驱动器不为空!
您可以查看全部只需使用即可获取已安装文件系统的信息
$ df -H
-H
顺便说一句,我们用于“人类可读”。尝试不使用它-H
,您会发现所有内容都在 K 块中!
最后,我们可以查看全部其内容(至少是文件名)通过使用:
# ls -R /mnt/xvde1
祝你好运!
答案2
首先具体考虑问题中的示例:
不! 这并不意味着第二个驱动器是空的。
线条
xvde 202:64 0 40G 0 disk
└─xvde1 202:65 0 40G 0 part
意味着该磁盘上有一个 40GB 的分区目前未安装,并且可能包含也可能不包含文件系统。它没有提及其上的数据。它也没有说它是否可以安装。
一般来说:
要列出所有本地分区(已安装和未安装的分区),您可以使用
fdisk -l
它显示了分区表 - 类似于cat /proc/partitions
@Ramesh 的答案中提出的建议,但有一些可能有助于识别磁盘和分区的附加详细信息(即:分区类型 ID、启动标志、磁盘标识符)。
请参阅下面的示例输出。
为了识别分区内实际的数据,请file -s
按照@Ramesh的建议使用:
# file -s /dev/sdc1
/dev/sdc1: Linux rev 1.0 ext4 filesystem data, UUID=[...]
示例输出fdisk -l
(缩短):
Disk /dev/sdc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
[...]
Disk identifier: 0x0005550d
Device Boot Start End Blocks Id System
/dev/sdc1 2048 217643007 108820480 83 Linux
/dev/sdc2 217645054 234440703 8397825 5 Extended
/dev/sdc5 217645056 234440703 8397824 82 Linux swap / Solaris
Disk /dev/sdd: 160.0 GB, 160041885696 bytes
[...]
答案3
/proc/partitions
将列出系统识别的所有块设备和分区。然后,您可以尝试使用file -s <device>
来确定分区上存在哪种类型的文件系统(如果有)。
您可以寻找更多选择这里。
答案4
您需要挂载文件系统,然后列出文件(如果有)。
mount /dev/xvde1 /mnt || echo 'No filesystem found'
ls -lR /mnt | tee /tmp/xvde1_files.txt
umount /mnt