Linux挂在新硬盘
相关命令行
lsblk
lsblk 是 Linux 系统中的一个命令行工具,用于列出所有块设备的信息。块设备通常指的是硬盘、SSD、USB驱动器、CD/DVD驱动器等存储设备。这个命令提供了一个树状结构,清晰地展示了这些设备的挂载点、文件系统类型、大小等信息。
以下是一些 lsblk 命令的基本用法和输出解释:
基本用法
- lsblk:不带任何参数运行 lsblk,将列出所有块设备及其相关信息。
- lsblk -f:添加 -f 参数,可以显示文件系统类型等信息。
- lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT:使用 -o 参数指定输出的列,这里指定了设备名(NAME)、大小(SIZE)、文件系统类型(FSTYPE)和挂载点(MOUNTPOINT)。
- lsblk -J:以 JSON 格式输出信息,这对于脚本处理非常有用。
- lsblk -t:以拓扑结构显示设备,展示设备之间的层级关系。
- lsblk -n:不显示标题行,只输出设备信息。
- lsblk -l:列出所有设备,但不递归显示子设备(即不显示分区)。
- lsblk -p:以路径形式显示设备名,而不是默认的“主要/次要”编号格式。
- lsblk -b:以字节为单位显示大小,而不是默认的以块(通常是512字节)为单位。
- lsblk -d:仅显示设备信息,不显示分区信息。
输出解释
当运行 lsblk 时,可能会看到类似下面的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 100M 0 part /boot/efi
├─sda2 8:2 0 953M 0 part /boot
└─sda3 8:3 0 464.8G 0 part /
- NAME:设备的名称。对于硬盘,这通常是 sda, sdb 等,分区则会是 sda1, sda2 等。
- MAJ:MIN:主要和次要设备号。这是内核用于识别设备的编号。
- RM:是否是可移除设备(removable)。0 表示不是,1 表示是。
- SIZE:设备的大小。
- RO:是否是只读设备。0 表示不是,1 表示是。
- TYPE:设备类型。disk 表示整个硬盘,part 表示分区。
- MOUNTPOINT:设备或分区的挂载点。如果设备未挂载,则这一列通常为空。
vgcreate
vgcreate 是 Linux 中用于创建卷组(Volume Group, 简称 VG)的命令,它属于逻辑卷管理(Logical Volume Manager, 简称 LVM)的一部分。LVM 提供了在逻辑层面对物理存储进行管理和扩展的能力,使得存储管理更加灵活和高效。
基本用法
vgcreate 命令的基本语法如下:
vgcreate [选项] 卷组名 物理卷路径 [物理卷路径...]
- 卷组名:希望创建的卷组的名称。这个名称在系统中应该是唯一的。
- 物理卷路径:一个或多个物理卷(Physical Volume, 简称 PV)的路径。物理卷通常是已经初始化为 PV 的磁盘分区或整个磁盘。
常用选项 - -s 或 --physicalextentsize:设置物理扩展区(Physical Extent, 简称 PE)的大小。PE 是 LVM 中最小的可分配存储单元。如果不指定,将使用系统默认的 PE 大小。
- -p 或 --maxphysicalvolumes:设置卷组中允许的最大物理卷数量。
- -e 或 --extentsize:这个选项实际上已经过时,因为它与 -s 或 --physicalextentsize 重复。
示例
假设有一个已经初始化为 PV 的磁盘分区 /dev/sda2,并且想创建一个名为 my_volume_group 的卷组,可以使用以下命令:
vgcreate my_volume_group /dev/sda2
如果想要指定 PE 的大小为 16MB(默认通常是 4MB),可以这样做:
vgcreate -s 16M my_volume_group /dev/sda2
注意事项
- 在创建卷组之前,确保物理卷已经被初始化。这可以通过 pvcreate 命令完成。
- 卷组名在系统中应该是唯一的。如果尝试创建一个已经存在的卷组,vgcreate 命令将失败。
- 创建卷组后,可以使用 lvcreate 命令在卷组内创建逻辑卷(Logical Volume, 简称 LV),然后格式化并挂载这些逻辑卷以使用存储空间。
lvcreate
lvcreate 是 Linux 中用于在逻辑卷管理(Logical Volume Manager, LVM)的卷组(Volume Group, VG)内创建逻辑卷(Logical Volume, LV)的命令。LVM 提供了一种灵活的存储管理机制,允许系统管理员在不重新分区或格式化的情况下动态地调整存储空间。
基本用法
lvcreate 命令的基本语法如下:
lvcreate [选项] -L <大小>[%VG|FREE|ThinPool|Thin] -n <逻辑卷名> <卷组名>
或者,如果想要使用所有的空闲空间:
lvcreate [选项] -l <百分数>%VG -n <逻辑卷名> <卷组名>
- -L 或 --size:指定逻辑卷的大小。可以使用具体的字节数(例如 10G 表示 10 GB),或者使用百分比(%VG 表示卷组总大小的百分比,%FREE 表示卷组中剩余空闲空间的百分比)。
- -n 或 --name:指定逻辑卷的名称。
<卷组名>:指定要在其中创建逻辑卷的卷组的名称。 - -l 或 --extents:指定逻辑卷应占用的物理扩展区(Physical Extent, PE)的数量。这个选项通常用于更精细地控制逻辑卷的大小,而不是直接使用 -L 选项。
常用选项
- -i 或 --stripes:指定条带数(Striping)。条带化可以提高读写性能,因为它允许数据在多个物理卷上并行存储。
- -I 或 --stripesize:指定条带大小。这是每个条带中的数据块的大小。
- -m 或 --mirrors:指定镜像的数量。镜像可以提高数据的冗余性,但会消耗额外的存储空间。
- -R 或 --readahead:设置读预取的大小。
- -C 或 --contiguous:尝试分配连续的物理扩展区给逻辑卷。这可以提高某些类型的工作负载的性能。
- -t 或 --thin:创建一个瘦逻辑卷(Thin Logical Volume)。瘦逻辑卷允许过量分配存储空间,并动态地管理实际的物理存储分配。
- -T 或 --thinpool:创建一个瘦池(Thin Pool)。瘦池是一个特殊的逻辑卷,用于存储瘦逻辑卷的数据块。
示例
- 创建一个名为 mylv 的逻辑卷,大小为 10 GB,在 myvg 卷组内:
lvcreate -L 10G -n mylv myvg
- 使用卷组 myvg 中所有剩余空闲空间的 50% 创建一个逻辑卷 mylv2:
lvcreate -l 50%FREE -n mylv2 myvg
- 创建一个条带化且镜像的逻辑卷 mystripedlv,大小为 5 GB,在 myvg 卷组内,有 2 个条带和 1 个镜像:
lvcreate -L 5G -n mystripedlv -i 2 -m 1 myvg
注意事项
- 在创建逻辑卷之前,确保卷组已经存在并且有足够的空闲空间。
- 逻辑卷的名称在卷组内应该是唯一的。
- 创建逻辑卷后,可以使用 mkfs 命令格式化逻辑卷,然后挂载它以使用存储空间。
vgs
在 Linux 系统中,vgs(Volume Groups 的缩写)是一个命令行工具,用于显示逻辑卷管理(LVM, Logical Volume Manager)中卷组(Volume Group)的摘要信息。LVM 是一种存储管理方案,它提供了对磁盘存储的灵活控制,允许管理员在不中断服务的情况下动态地调整磁盘空间。
基本用法
vgs 命令的基本语法很简单,通常不需要额外的参数即可运行:
vgs
这个命令将列出系统中所有卷组的名称、大小、空闲空间以及卷组中的逻辑卷数量等信息。
输出解释
当运行 vgs 命令时,可能会看到类似下面的输出:
VG #PV #LV #SN Attr VSize VFree
myvg 1 2 0 wz--n- 465.76g 10.76g
- VG:卷组的名称。
- #PV:卷组中物理卷(Physical Volume)的数量。
- #LV:卷组中逻辑卷(Logical Volume)的数量。
- #SN:快照(Snapshot)的数量。这个字段在现代 LVM 版本中可能不再显示,因为快照被视为一种特殊类型的逻辑卷。
- Attr:卷组的属性。这些属性提供了关于卷组配置的信息,如是否可调整大小(resizable)、是否已镜像(mirrored)等。
- VSize:卷组的总大小。
- VFree:卷组中剩余的空闲空间。
常用选项
虽然 vgs 命令本身不需要太多参数,但 LVM 提供了一些选项来定制输出。例如:
- -a 或 --all:显示所有卷组的详细信息,包括隐藏卷组。
- -o 或 --options:指定要显示的列。例如,vgs -o vg_name,vg_size,vg_free 将只显示卷组名称、大小和空闲空间。
- -n 或 --namepatterns:根据名称模式过滤卷组。例如,vgs -n myvg* 将只显示名称以 myvg 开头的卷组。
- -v 或 --verbose:显示更详细的信息。
- –noheadings:不显示标题行。
- –units:指定显示大小的单位(如 b、k、m、g、t、p 或 e 分别表示字节、千字节、兆字节、吉字节、太字节、拍字节或艾字节)。
示例
- 显示所有卷组的摘要信息:
vgs
- 显示卷组 myvg 的详细信息(如果有 -v 选项可用的话,尽管 vgs 本身通常不直接支持详细模式,但 vgdisplay 命令可以):
vgs -n myvg
# 或者使用更详细的命令:
vgdisplay myvg
?请注意,vgs 命令的输出可能会根据 LVM 的版本和系统的配置而有所不同。如果想要获取关于特定卷组的更详细信息,通常会使用 vgdisplay 命令。
lvs
mkfs.xfs
mkfs.xfs 是 Linux 系统中用于创建 XFS 文件系统的一个命令行工具。XFS 是一种高性能的文件系统,支持并行I/O、元数据日志记录(journaling)以及大容量的存储设备等特性,非常适合用于企业级存储解决方案。
基本用法
mkfs.xfs 命令的基本语法如下:
mkfs.xfs [选项] 设备
- 设备:这是想要格式化为 XFS 文件系统的存储设备,例如一个硬盘分区(如 /dev/sda1)或一个整个硬盘(如 /dev/sda,但通常不推荐这样做,因为这样会覆盖整个硬盘上的所有数据)。
常用选项
- -f 或 --force:强制格式化设备,即使设备上已经有文件系统。这通常是一个危险的操作,因为它会导致数据丢失。
- -i 或 --inode-size=SIZE:设置每个inode的大小。inode是文件系统中用于存储文件元数据的结构。
- -L 或 --label=LABEL:为文件系统设置卷标(volume label)。
- -b 或 --blocksize=SIZE:设置文件系统块的大小。XFS 允许设置块大小为 512 字节到 64 KB 之间的值,但通常是 4 KB(默认值)或 64 KB(用于大型数据库等特定应用)。
- -d 或 --data=agcount|agsize|agnumber|maxsize|size|sunit|swidth:设置数据区域(data area)的参数,如分配组(allocation group)的数量、大小等。
- -l 或 --log={internal|external[=DEVICE]|bsize=SIZE|sunit=VALUE|version=NUMBER}:设置日志区域的参数,包括内部日志(默认)或外部日志设备。
- -m 或 --maxpct=PCT:设置最大元数据空间百分比。这是文件系统保留用于存储元数据的空间的最大比例。
- -n 或 --noalign:禁用条带对齐。
- -p 或 --project=QUOTAID:设置项目的配额标识符。
- -r 或 --realtime=rtdev|bsize=SIZE|extsize=SIZE|inode64:设置实时(realtime)子卷的参数。
- -s 或 --sectorsize=SIZE:设置扇区大小。这通常与底层硬件的扇区大小相匹配。
- -t 或 --uuid=UUID:为文件系统设置 UUID(Universally Unique Identifier)。
- -v 或 --verbose:启用详细模式,输出更多信息。
- -V 或 --version:显示 mkfs.xfs 的版本信息。
示例
- 将 /dev/sda1 分区格式化为 XFS 文件系统,并设置卷标为 mydata:
mkfs.xfs -L mydata /dev/sda1
- 强制格式化 /dev/sdb 为 XFS 文件系统(警告:这将删除 /dev/sdb 上的所有数据):
mkfs.xfs -f /dev/sdb
- 创建一个具有 64 KB 块大小的 XFS 文件系统,并将其安装在 /dev/sdc1 分区上:
mkfs.xfs -b 64k /dev/sdc1
注意事项
- 在运行 mkfs.xfs 命令之前,请确保已经备份了想要格式化的设备上的所有数据。格式化操作会删除设备上的所有现有数据。
- 选择适当的块大小和分配组参数,以优化文件系统的性能。这取决于的具体应用场景和硬件配置。
- 如果不确定某个选项的用途或如何设置它,请查阅 mkfs.xfs 的手册页(使用 man mkfs.xfs 命令)或相关的文档和社区资源。
/etc/fstab
在Linux系统中,/etc/fstab文件是一个至关重要的系统配置文件。它用于定义系统启动时哪些文件系统应该被自动挂载,以及挂载的具体选项和参数。这个文件位于/etc目录下,通常由root用户拥有并编辑。
一、文件结构
/etc/fstab文件由若干行组成,每行代表一个文件系统的挂载配置。每行通常由六个字段组成,这些字段由空格或制表符分隔。这些字段的含义如下:
-
- 文件系统(Filesystem):指定了要挂载的分区或存储设备。可以使用设备名(如/dev/sda1)、UUID或标签(如LABEL=Arch_Linux)来表示。使用UUID或标签的好处在于它们与磁盘顺序无关,即使磁盘顺序发生变化也不会影响挂载。
-
- 挂载点(Mount Point):指定了文件系统要挂载到的目录位置。例如,根分区(/)、启动分区(/boot)、用户分区(/home)等。
-
- 文件系统类型(Type):指定了文件系统的类型,如ext4、xfs、ntfs、swap等。
-
- 挂载选项(Options):定义了挂载文件系统时的参数。常用的参数包括:
- auto:在启动时或使用mount -a命令时自动挂载。
- noauto:只有在用户手动执行挂载命令时才挂载。
- rw:以读写模式挂载。
- ro:以只读模式挂载。
- user:允许普通用户挂载此文件系统。
- noexec:不允许执行此文件系统上的二进制文件。
- nosuid:禁止suid操作和设定sgid位。
- noatime:不更新文件系统上的inode访问记录,可以提升性能。
-
- dump选项:用于指定是否使用dump工具备份文件系统。允许的数字是0和1:0表示忽略,不进行备份;1表示启用备份。
-
- fsck选项:定义了系统启动时文件系统检查的优先级。允许的数字是0、1和2:0表示不检查;1表示首先检查,通常用于根分区;2表示在其他文件系统之后检查。
二、示例
以下是一个典型的/etc/fstab文件的示例:
- fsck选项:定义了系统启动时文件系统检查的优先级。允许的数字是0、1和2:0表示不检查;1表示首先检查,通常用于根分区;2表示在其他文件系统之后检查。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed.
#
# <file system> <mount point> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nodev,nosuid,size=30% 0 0
/dev/sda1 / ext4 errors=remount-ro 1 1
/dev/sda2 /boot ext4 defaults 1 2
/dev/sda3 /home ext4 defaults 1 2
/dev/sda4 none swap sw 0 0
在这个示例中,/tmp目录被挂载为一个tmpfs文件系统,而/dev/sda1、/dev/sda2、/dev/sda3和/dev/sda4分别被挂载为根分区、启动分区、用户分区和交换分区。
三、编辑和测试
在编辑/etc/fstab文件之前,建议先备份该文件以防万一出现问题时可以恢复。编辑时可以使用vi、nano或任何其他文本编辑器,但必须使用root权限。例如:
sudo vi /etc/fstab
编辑完成后,可以使用mount -a命令测试配置是否正确。如果配置有误,系统会提示错误信息。此外,在重启系统后,/etc/fstab文件中定义的挂载配置将自动生效。
注意事项
- 在编辑/etc/fstab文件时,务必确保每一项配置都正确无误,否则可能会导致系统无法正常启动或挂载失败。
- 对于使用UUID或标签来表示设备的情况,可以使用blkid命令来查看设备的UUID或标签。
- 在添加新的挂载配置时,请确保挂载点目录已经存在,并且具有适当的权限设置。
mount
在Linux操作系统中,mount命令被广泛应用于挂载文件系统。无论是硬盘分区、CD-ROM、DVD、USB存储设备,还是远程文件系统(例如通过NFS或SMB/CIFS协议访问的文件系统),都可以利用mount命令将其连接到Linux系统的目录树中,从而方便用户访问这些设备或远程资源上的文件和目录。
基本语法
mount命令的基础语法结构如下:
mount [选项] 设备 挂载点
- 选项:这些是可选的参数,用于调整mount命令的行为。例如,-t选项允许用户明确指定要挂载的文件系统类型(如ext4、xfs、vfat等)。
- 设备:这代表要挂载的存储设备或远程文件系统。可以使用设备名(例如/dev/sda1)、UUID(通过blkid命令获取)或文件系统的标签来指定。
- 挂载点:这是系统中的一个目录,用于作为访问挂载文件系统的入口点。
示例
- 挂载硬盘分区:
sudo mount /dev/sda1 /mnt/mydata
这条命令将/dev/sda1分区挂载到/mnt/mydata目录。
- 明确指定文件系统类型:
sudo mount -t ext4 /dev/sdb1 /media/ext4drive
这里,我们明确指定了文件系统类型为ext4,并将/dev/sdb1分区挂载到/media/ext4drive目录。
- 使用UUID挂载:
首先,通过blkid命令查找设备的UUID:
sudo blkid
然后,使用找到的UUID进行挂载:
sudo mount -U UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/myuuiddrive
- 挂载ISO文件:
sudo mount -o loop /path/to/image.iso /mnt/iso
利用-o loop选项,可以将ISO文件作为循环设备挂载到/mnt/iso目录。
- 挂载远程NFS文件系统:
sudo mount -t nfs server:/exported/path /mnt/nfs
这条命令将NFS服务器上导出的路径挂载到本地的/mnt/nfs目录。
卸载文件系统
与mount命令相对应,umount(或umount -l进行延迟卸载)命令用于卸载已挂载的文件系统。使用方法如下:
sudo umount 挂载点或设备
或者,如果设备正在被使用,可以尝试使用-f选项强制卸载(但请注意,这可能会导致数据丢失):
sudo umount -f 挂载点或设备
在卸载之前,请确保没有进程正在使用该文件系统上的文件,否则卸载操作可能会失败。可以使用lsof或fuser命令来检查哪些进程正在使用特定的挂载点或设备。
df
df(disk free)命令是Linux和UNIX系统中用于显示文件系统磁盘空间使用情况的工具。以下是关于df命令的详细解释:
一、基本功能
df命令能够显示系统中所有已挂载文件系统的磁盘使用情况,包括总空间、已用空间、剩余空间及使用百分比。这些信息对于磁盘空间管理和监控至关重要。
二、常用选项及参数
- -h:以人类可读的格式显示信息,例如将字节转换为KB、MB或GB。
- -T:显示文件系统类型。
- –total:显示所有文件系统的总计。
- -i:显示inode信息而非磁盘使用量。每个文件系统都有一定数量的inode,用于存储文件和目录的元数据。
- -a 或 --all:显示所有的文件系统,包括虚拟文件系统。
- -B 或 --block-size:指定单位大小,如1k、1m等。
- -l 或 --local:只显示本地文件系统。
- -P 或 --portability:使用POSIX格式显示。
- -t 或 --type=TYPE:只显示指定类型的文件系统。
- -x 或 --exclude-type=TYPE:不显示指定类型的文件系统。
三、示例输出及解释
假设执行df -h命令,输出可能如下:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 10G 37G 22% /
tmpfs 2.0G 1.2M 2.0G 1% /dev/shm
- Filesystem:文件系统的名称,指的是设备或挂载点的名称。
- Size:文件系统的总大小。
- Used:已使用的磁盘空间。
- Avail:可用的磁盘空间。
- Use%:文件系统的使用率,以百分比表示。
- Mounted on:文件系统挂载的位置,表示这个文件系统被挂载在系统中的哪个目录下。
四、应用场景
df命令非常适合用于以下场景:
- 磁盘空间管理:系统管理员可以定期检查磁盘空间使用情况,确保关键应用有足够的磁盘空间运行。
- 磁盘空间监控:结合shell脚本和其他工具(如awk和mail),可以实现自动化磁盘空间监控和报警功能。当磁盘空间低于预设阈值时,系统可以自动发送警报邮件并记录事件。
注意事项
- 在使用df命令时,应确保有足够的权限来访问和显示文件系统的磁盘使用情况。
- 对于大型文件系统或包含大量文件的目录,df命令的执行速度可能会受到影响。
- 在某些情况下,df命令的输出可能会受到系统缓存和同步状态的影响。因此,在需要精确数据时,可以考虑在统计使用信息之前调用sync命令来刷新文件系统缓冲区。
挂在样例:
-
lsblk
-
vgcreate data /dev/vdb
-
lvcreate -l 100%VG -n lvdata data
-
vgs
-
lvs
-
mkfs.xfs /dev/data/lvdata
-
lsblk -f
-
vi /etc/fstab
-
mkdir /data
-
mount /data
-
df -h