【Linux基础】内存和硬盘管理

1. 内存和硬盘使用率查看

查看内存使用率

  • 常用命令:
    • free
    • top

查看硬盘使用率

  • 常用命令:
    • fdisk
      • fidsk -l:查看硬盘分区信息
    • df:类似fdisk,但会显示挂在目录
    • du:查看文件实际大小(ls查看的是inode信息,du查看数据块信息)

2. 文件系统

常见Linux文件系统:ext4, xfs, btrfs

ext4文件系统

相关概念:

  • 超级块:文件产生变动时候,超级块就会更新
  • 超级块副本
  • i节点(inode):使用ls -i查看inode编号
  • 数据块(datablock):用于记录数据(如果将inode比作火车头,那么数据块就是车厢)
  • 链接:
    • 硬链接:
      • 指向同一个inode
      • 无法跨文件系统
    • 软链接:
      • 指向不同的inode
      • 可以跨文件系统
  • 文件访问控制:
    • getfacl
    • setfacl
      • -m:赋予权限
      • -x:撤回权限
      • 示例:setfacl -m u:user1:rw tmpfile(对用户user1赋予tmpfile文件可读写的权限)

3. 硬盘的分区与挂载

常用命令:

  • fdisk
  • mkfs
  • parted
  • mount

常见配置文件

  • /etc/fstab

大致步骤:假设新添加了一块硬盘,设备名为/dev/sdb:

  1. 分区
    1. fdisk /dev/sdb(如果大于2TB,则需要使用parted,而不是fdisk)
    2. 在fdisk终端按“m”获取帮助
    3. 按“n”添加新分区(一路按回车键就是默认全盘分一个区)
    4. 按“w”保存分区信息(新分区被命名为sdb1)
  2. 格式化
    1. 如果分区大小小于2TB,可以使用mkfs;若大于,则使用parted;
    2. mkfs.ext4 /dev/sdb1,将新分区格式化为ext4
  3. 挂载
    1. mkdir -p /mnt/sdb1
    2. mount -t ext4 /dev/sdb1 /mnt/sdb1,挂载到/mnt/sdb1,中间“-t ext4”可不加,mount会自动识别文件系统。
    3. 注意:上一步的挂载只是暂存在内存中,需要编辑/etc/fstab文件,在最后新起一行添加“/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0”,使得挂载固化。

4. XFS文件系统的用户硬盘配额

XFS有个名为quota的设置,可以对用户硬盘配额进行简单的设置。大致操作步骤如下:

  1. 分区(不赘述了)
  2. 格式化(使用mkfs.xfs格式化分区)
  3. 挂载:
    1. mkdir -p /mnt/sdb1
    2. mount -o uquota,gquota /dev/sdb1 /mnt/sdb1
    3. xfs_quota -x -c 'report -ugib' /mnt/sdb1,查看“/mnt/sdb1”的磁盘配额,报告用户配额、用户组配额,inode和block。
    4. xfs_quota -x -c 'limit -u isoft=5 ihard=10 user1' /mnt/sdb1,对user1进行硬盘配额限制,使用5个inode时提示,最多使用10个inode。

5. 交换分区的查看与创建

使用free命令查看swap大小。

使用分区方式扩充swap

  1. 分区(不赘述了)
  2. mkswap /dev/sdb1,将/dev/sdb1格式化为swap
  3. swapon /dev/sdb1,启用新swap分区(使用swapoff关闭指定swap分区)

使用文件扩充swap

  1. dd if=/dev/zero bs=4M count=1024 of=/swapfile,制作一个4G大小的空文件
  2. mkswap /swapfile,格式化(有的发行版可能会在这一步报错,提示不安全)
  3. chmod 600 /swapfile,修改/swapfile的权限
  4. swapon /swapfile,启用新swap分区

固化新swap

  1. 编辑/etc/fstab文件
  2. 以文件方式扩充swap为例:在fstab文件底部添加/swapfile swap swap defaults 0 0

6. 软件RAID的使用

常见RAID方式:

  • RAID 0:至少需要两块硬盘,数据分别存在两块盘上,可以提高单盘吞吐率,缺点是不安全;
  • RAID 1:至少需要两块硬盘,数据以镜像方式保存,可以提高可靠性;
  • RAID 5:至少需要三块硬盘,前两块做数据盘,第三块做校验盘,相当于RAID 0和RAID 1的简单折中方案;
  • RAID 10:至少需要四块硬盘,假设ABCD四个盘,A、B做RAID 1,C、D也做RAID 1,然后AB和CD做RAID 0,兼顾速度和可靠。

软RAID操作方式

  1. 安装 mdadm 软件
  2. mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd[b,c]1,创建软RAID(如果提示不支持boot启动,输入“y”同意即可)
    1. -C:创建
    2. /dev/md0,创建后的设备文件
    3. -a yes,创建过程中的一些选项全部yes;
    4. -l1:RAID级别为1;
    5. -n2:活动硬盘为2个;
    6. /dev/sd[b,c]1:指定组成RAID的硬盘是sdb1和sdc1。
  3. mdadm -D /dev/md0,查看/dev/md0;
  4. mkfs.xfs /dev/md0,格式化……
  5. 停止RAID:mdadm --stop /dev/md0

7. 逻辑卷管理

逻辑卷与文件系统的关系

逻辑卷就相当于将所有硬盘虚拟成一块硬盘,有点像RAID。

为Linux创建逻辑卷

  1. 假设有三块硬盘,且已分区;
  2. pcvcreate /dev/sd[b,c,d]1,创建pv;
  3. 使用命令pvs查看
  4. vgcreate vg1 /dev/sdb1 /dev/sdc1,将sdb1和sdc1加入新建的卷组vg1;
  5. 使用vgs查看卷组;
  6. lvcreate -L 100M -n lv1 vg1,在卷组vg1上创建大小为100M的逻辑卷lv1;
    1. -L:设置逻辑卷的大小;
    2. -n:设置逻辑卷的名字;
    3. vg1:指定卷组。
  7. 使用命令lvs查看逻辑卷;
  8. 格式化与挂载:
    1. mkfs.xfs /dev/vg1/lv1
    2. mkdir /mnt/tmp1
    3. mount /dev/vg1/lv1 /mnt/tmp1(如果要保存,需要写入fstab文件)

动态扩容逻辑卷

  1. vgextend vg1 /dev/sdd1,将sdd1加入vg1;
  2. lvextend -L +10G /dev/vg1/lv1,为逻辑卷lv1扩充10G;
  3. xfs_growfs /dev/vg1/lv1,让xfs文件系统更新;(ext4使用resize2fs

8. 系统综合状态查看

使用sar命令查看系统综合命令

示例:sar -u 1 10:每1秒采样一次CPU的信息,总共采集10次。

  • -u:查看CPU
  • -r:查看内存
  • -b:查看IO
  • -d:查看硬盘
  • -q:查看进程

使用第三方命令查看网络流量(如iftop

  • 由于sar命令无法监测网络流量,所以可以安装iftop,借助iftop查看网络流量。

你可能感兴趣的:(【Linux基础】内存和硬盘管理)