☰
Linux服务器硬件配置查看与磁盘管理指南
2026/10/26 7:57:27 网站建设 项目流程

1. 服务器基础配置查看指南

作为系统管理员,快速掌握服务器硬件配置是日常运维的基础技能。在Linux系统中,我们主要通过命令行工具获取这些信息,Windows系统则可以通过图形界面和命令行两种方式查看。

1.1 CPU信息核查

执行lscpu命令可以获取详细的CPU信息,这个命令会输出包括CPU架构、核心数、线程数、型号名称等关键数据。对于需要了解CPU缓存大小、支持指令集等更专业信息的场景特别有用。

$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 158 Model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz Stepping: 9 CPU MHz: 900.022 CPU max MHz: 3800.0000 CPU min MHz: 800.0000 BogoMIPS: 5616.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 6144K

注意:在虚拟化环境中,lscpu显示的信息可能是虚拟化的结果,不一定反映物理CPU的真实情况。此时需要结合虚拟化平台的管理工具获取宿主机的真实CPU信息。

1.2 内存容量检查

free -h命令以人类可读的格式显示系统内存使用情况,包括物理内存和交换分区的总量、已用量和可用量。-h参数让输出以GB/MB为单位,更直观。

$ free -h total used free shared buff/cache available Mem: 15G 4.2G 8.1G 456M 3.2G 10G Swap: 2.0G 1.1G 916M

对于需要更详细内存信息的场景,可以查看/proc/meminfo文件:

$ cat /proc/meminfo MemTotal: 16266092 kB MemFree: 8507528 kB MemAvailable: 10583156 kB Buffers: 211656 kB Cached: 2461544 kB SwapCached: 126876 kB Active: 4590504 kB Inactive: 1970504 kB Active(anon): 3027824 kB Inactive(anon): 794136 kB Active(file): 1562680 kB Inactive(file): 1176368 kB ...

1.3 磁盘空间分析

df -h命令显示所有已挂载文件系统的磁盘空间使用情况,是日常检查磁盘空间的首选工具。-h参数同样表示以人类可读格式显示。

$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 2.1M 1.6G 1% /run /dev/nvme0n1p2 457G 123G 311G 29% / tmpfs 7.8G 73M 7.7G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/nvme0n1p1 511M 7.9M 504M 2% /boot/efi tmpfs 1.6G 44K 1.6G 1% /run/user/1000

如果需要查看磁盘的物理信息,可以使用lsblk命令,它能显示磁盘的分区情况和挂载点:

$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 465.8G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot/efi ├─nvme0n1p2 259:2 0 464.3G 0 part / └─nvme0n1p3 259:3 0 976M 0 part [SWAP]

1.4 网络配置确认

ip addr或传统的ifconfig命令可以查看网络接口配置。现代Linux系统推荐使用ip命令:

$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1a:4b:38:22:9e brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0 valid_lft 86389sec preferred_lft 86389sec inet6 fe80::21a:4bff:fe38:229e/64 scope link noprefixroute valid_lft forever preferred_lft forever

要查看路由表信息,可以使用ip route或route -n命令:

$ ip route default via 192.168.1.1 dev enp3s0 proto dhcp metric 100 192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.100 metric 100

1.5 系统版本和内核信息

uname -a命令可以快速查看系统内核版本和架构信息:

$ uname -a Linux workstation 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

要查看Linux发行版的详细信息,不同发行版有不同的方法。对于基于Debian的系统如Ubuntu,可以查看/etc/os-release文件:

$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.3 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal

对于Red Hat系系统如CentOS,可以使用cat /etc/redhat-release或rpm -q centos-release命令。

2. 磁盘挂载与管理实践

磁盘挂载是服务器存储管理的基础操作,正确的挂载方式能确保数据安全和系统稳定性。本节将详细介绍从磁盘识别到永久挂载的全过程。

2.1 磁盘识别与分区

当新磁盘接入服务器后,首先需要确认系统是否识别到了该磁盘。使用lsblk命令可以查看所有块设备:

$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk nvme0n1 259:0 0 465.8G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot/efi ├─nvme0n1p2 259:2 0 464.3G 0 part / └─nvme0n1p3 259:3 0 976M 0 part [SWAP]

上例中,sda是新接入的1.8TB磁盘,尚未分区。接下来使用fdisk或更现代的parted工具进行分区:

$ sudo fdisk /dev/sda Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-3907029167, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, default 3907029167): Created a new partition 1 of type 'Linux' and of size 1.8 TiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.

重要提示:在对生产环境的磁盘进行操作前,务必确认目标磁盘设备名,错误的操作可能导致数据丢失。可以通过磁盘大小、型号等特征进行多次确认。

2.2 文件系统创建

分区完成后,需要在分区上创建文件系统。对于常规用途,ext4是不错的选择:

$ sudo mkfs.ext4 /dev/sda1 mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 488378624 4k blocks and 122101760 inodes Filesystem UUID: 7a3e5b6d-7e1a-4f3d-9c8b-1e2d3f4a5b6c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done

对于需要更高性能或特定特性的场景,可以考虑XFS文件系统:

$ sudo mkfs.xfs /dev/sda1 meta-data=/dev/sda1 isize=512 agcount=4, agsize=122094656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=488378624, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=262144, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0

2.3 临时挂载与测试

创建文件系统后,可以先进行临时挂载测试:

$ sudo mkdir /mnt/data $ sudo mount /dev/sda1 /mnt/data

挂载后可以使用df -h确认挂载是否成功:

$ df -h /mnt/data Filesystem Size Used Avail Use% Mounted on /dev/sda1 1.8T 77M 1.8T 1% /mnt/data

还可以通过实际文件操作测试挂载点的读写功能:

$ sudo touch /mnt/data/testfile $ sudo ls -l /mnt/data total 16 -rw-r--r-- 1 root root 0 Feb 10 15:30 testfile drwx------ 2 root root 16384 Feb 10 15:28 lost+found

2.4 配置永久挂载

临时挂载在系统重启后会失效,要确保磁盘在每次启动时自动挂载,需要编辑/etc/fstab文件。首先获取分区的UUID:

$ sudo blkid /dev/sda1 /dev/sda1: UUID="7a3e5b6d-7e1a-4f3d-9c8b-1e2d3f4a5b6c" TYPE="ext4" PARTUUID="a1b2c3d4-01"

然后在/etc/fstab中添加一行配置:

UUID=7a3e5b6d-7e1a-4f3d-9c8b-1e2d3f4a5b6c /mnt/data ext4 defaults 0 2

配置项各字段含义如下:

  1. UUID:分区唯一标识
  2. 挂载点:目录路径
  3. 文件系统类型
  4. 挂载选项:defaults表示默认选项(rw,suid,dev,exec,auto,nouser,async)
  5. dump备份标志:0表示不备份
  6. fsck检查顺序:0不检查,1根分区,2其他分区

添加配置后,可以使用mount -a测试配置是否正确,该命令会挂载fstab中所有未挂载的文件系统:

$ sudo mount -a

如果没有错误输出,则表示配置正确。也可以使用systemctl daemon-reload让系统重新加载fstab配置。

3. 高级存储配置技巧

掌握了基础挂载操作后,下面介绍一些提高存储管理效率和可靠性的高级技巧。

3.1 使用LVM管理磁盘

LVM(Logical Volume Manager)提供了更灵活的磁盘管理方式,支持动态调整大小、快照、条带化等高级功能。配置LVM的基本步骤如下:

  1. 创建物理卷(PV):
$ sudo pvcreate /dev/sda1 Physical volume "/dev/sda1" successfully created.
  1. 创建卷组(VG):
$ sudo vgcreate vg_data /dev/sda1 Volume group "vg_data" successfully created
  1. 创建逻辑卷(LV):
$ sudo lvcreate -L 1T -n lv_data vg_data Logical volume "lv_data" created.
  1. 在逻辑卷上创建文件系统并挂载:
$ sudo mkfs.ext4 /dev/vg_data/lv_data $ sudo mkdir /data $ sudo mount /dev/vg_data/lv_data /data

LVM的优势在于可以动态调整逻辑卷大小而无需重新分区。例如扩展逻辑卷:

$ sudo lvextend -L +500G /dev/vg_data/lv_data $ sudo resize2fs /dev/vg_data/lv_data

3.2 磁盘性能优化

根据使用场景调整挂载选项可以提升磁盘性能。一些常用的优化选项:

  • noatime:不更新文件访问时间,减少写操作
  • nodiratime:不更新目录访问时间
  • data=writeback:ext4文件系统的日志模式,提高性能但可能增加崩溃后数据丢失风险
  • barrier=0:禁用写入屏障,提高性能但降低安全性
  • nobh:不缓存buffer heads,适用于高并发场景

示例优化后的/etc/fstab条目:

UUID=7a3e5b6d-7e1a-4f3d-9c8b-1e2d3f4a5b6c /data ext4 noatime,nodiratime,data=writeback 0 2

对于数据库等对延迟敏感的应用,可以考虑使用deadline或noop调度器:

$ echo deadline > /sys/block/sda/queue/scheduler

3.3 磁盘健康监控

定期检查磁盘健康状况可以预防数据丢失。smartctl工具可以读取磁盘的SMART信息:

$ sudo smartctl -H /dev/sda smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-91-generic] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED

更详细的SMART信息:

$ sudo smartctl -A /dev/sda smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-91-generic] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 176 174 021 Pre-fail Always - 5825 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 45 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 ...

可以设置定期SMART测试:

$ sudo smartctl -t short /dev/sda # 短测试 $ sudo smartctl -t long /dev/sda # 长测试

3.4 多磁盘冗余配置

对于关键数据,建议使用RAID提供冗余。Linux内核支持软件RAID,常见配置方法:

创建RAID1(镜像):

$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.

查看RAID状态:

$ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 1953382464 blocks super 1.2 [2/2] [UU] [>....................] resync = 0.1% (3036224/1953382464) finish=179.6min speed=180728K/sec bitmap: 15/15 pages [60KB], 65536KB chunk unused devices: <none>

RAID设备创建后,可以像普通磁盘一样分区、创建文件系统并挂载。

4. 常见问题与故障排除

在实际操作中,可能会遇到各种磁盘和挂载相关的问题。本节总结了一些常见问题及其解决方法。

4.1 磁盘无法识别问题

问题现象:新接入的磁盘在lsblk中看不到。

排查步骤:

  1. 检查物理连接是否正常
  2. 查看内核日志是否有磁盘检测信息:
$ dmesg | grep -i sd [ 2.683047] sd 0:0:0:0: [sda] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB) [ 2.683052] sd 0:0:0:0: [sda] 4096-byte physical blocks [ 2.683149] sd 0:0:0:0: [sda] Write Protect is off [ 2.683152] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.683220] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.683460] sda: sda1 [ 2.683768] sd 0:0:0:0: [sda] Attached SCSI disk
  1. 检查SCSI总线是否识别到设备:
$ lsscsi [0:0:0:0] disk ATA WDC WD30EFRX-68E 0A82 /dev/sda
  1. 对于NVMe设备,检查PCI设备列表:
$ lspci | grep -i nvme 01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

解决方案:

  • 如果是物理连接问题,重新插拔磁盘
  • 对于虚拟机,检查是否已正确添加虚拟磁盘
  • 检查磁盘控制器驱动是否加载

4.2 挂载失败问题

问题现象:执行mount命令时提示各种错误,如"wrong fs type", "bad option", "bad superblock"等。

常见原因及解决:

  1. 文件系统损坏:
$ sudo fsck /dev/sda1 fsck from util-linux 2.34 e2fsck 1.45.5 (07-Jan-2020) /dev/sda1: clean, 11/122101760 files, 8893222/488378624 blocks
  1. 不正确的文件系统类型:确认/etc/fstab中指定的文件系统类型与实际一致

  2. 挂载点不存在:确保挂载点目录已创建

  3. 挂载选项冲突:特别是当磁盘之前以只读方式挂载过

  4. 磁盘UUID变更:如果磁盘被重新格式化,UUID会改变,需要更新/etc/fstab

4.3 磁盘空间异常问题

问题现象:df显示磁盘已满,但du统计实际文件大小却小很多。

可能原因:

  • 文件被删除但仍被进程占用
  • 小文件过多导致inode耗尽
  • 文件系统日志占用空间

解决方法:

  1. 检查被删除但仍被占用的文件:
$ sudo lsof | grep deleted nginx 1234 root 5w REG 8,1 1073741824 1234 /var/log/nginx/access.log (deleted)
  1. 检查inode使用情况:
$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 122101760 123456 121978304 1% /data
  1. 检查文件系统是否需要修复:
$ sudo tune2fs -l /dev/sda1 | grep -i 'mount count' Mount count: 12 Maximum mount count: -1

4.4 性能问题排查

问题现象:磁盘I/O性能下降,系统响应缓慢。

排查工具:

  1. iostat查看磁盘I/O统计:
$ iostat -x 1 Linux 5.4.0-91-generic (server) 02/10/2022 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.12 0.00 1.25 2.34 0.00 93.29 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 5.23 1.02 212.12 24.48 0.00 0.12 0.00 10.53 0.98 2.34 0.00 40.56 24.00 0.68 0.42

关键指标:

  • %util:设备利用率,接近100%表示饱和
  • await:平均I/O等待时间(ms)
  • svctm:平均服务时间(ms)
  1. iotop查看进程级I/O使用情况:
$ sudo iotop Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 123 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [jbd2/sda1-8] 4567 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
  1. dmesg检查内核是否有I/O错误记录:
$ dmesg | grep -i error | grep -i sd [ 1234.567890] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 1234.567891] sd 0:0:0:0: [sda] tag#0 Sense Key : Medium Error [current] [ 1234.567892] sd 0:0:0:0: [sda] tag#0 Add. Sense: Unrecovered read error - auto reallocate failed

优化建议:

  • 对于高负载数据库,考虑使用SSD或NVMe磁盘
  • 调整I/O调度器
  • 优化应用I/O模式,减少随机小I/O
  • 增加内存减少交换空间使用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询