精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

磁盤管理說明

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-11-25 10:39 ? 次閱讀

磁盤管理

Linux哲學思想:Linux中一切皆文件

所以對于硬件設備來說,在Linux中也是以文件的形式存在,設備文件

[root@kylin-xu ~]# ll /dev/sda*
brw-rw---- 1 root disk 8, 0 Nov 20 04:11 /dev/sda
brw-rw---- 1 root disk 8, 1 Nov 20 04:11 /dev/sda1
brw-rw---- 1 root disk 8, 2 Nov 20 04:11 /dev/sda2
 主設備號  次設備號
[root@kylin-xu ~]# ll /dev/zero 
crw-rw-rw- 1 root root 1, 5 Nov 20 04:11 /dev/zero

主設備號:標識設備類型 major number

次設備號:標識同一類型下的不同設備 minor number

【1】、磁盤外部結構

磁盤分類:

固態硬盤: 內部是主板和U盤類似

機械硬盤: 盤片 主軸 傳動手臂 做機械運動 類似 DVD

Nvme硬盤

PCI-E接口

大小分類:

3.5英寸 : 臺式機

2.5英寸: 服務器 筆記本

接口類型:

IDE接口 # 淘汰

SCSI接口 # 淘汰

SATA接口 # 臺式機 筆記本

SAS接口 #企業服務器標配

固態磁盤價格高,存儲少。有壽命。

機械磁盤價格低,存儲大。老不死。

固態速度比機械磁盤速度快

磁盤存儲大小和轉速:

企業標配SAS接口: 300G 600G 900G 轉速 每分鐘轉多少圈 5400轉 7200轉 10K 15K

轉速越快性能越好

存儲越大轉速越慢 1T 轉速最高10K 2T 4T 8T 20T

注意:速度不是由單純的接口類型決定,支持Nvme協議硬盤速度是最快的

【2】、磁盤陣列Raid

作用:
獲得更大的容量 # 將多塊磁盤邏輯的組合成一塊磁盤
獲得更高的性能     # 寫入服務器 寫兩塊磁盤比寫一塊磁盤速度快
獲得更好的安全性    # 可以同時將數據寫入兩塊盤 一塊盤做備份

面試+筆試題

RAID級別 硬盤數量 可用容量 安全性 性能 使用場景
0 至少一塊 磁盤數量總和 不安全 讀寫最快 要求速度不要安全,例如數據庫從庫
1 只能2塊 磁盤數量的一半 可以壞一塊 寫慢,讀湊合 要求安全,速度一般的場景,例如系統盤
5 至少3塊 n-1塊 壞1塊 0和1的折中 業務流量較穩定的場景
10 至少4塊,2的倍數即可 一半 壞1半 讀寫速度快 高并發場景

【3】、磁盤分區

windows磁盤默認的是MBR格式

MBR格式最多支持4個主分區 C D E F

MBR格式支持3個主分支+1個擴展分區

Linux磁盤表示方法

sda   # 表示第一塊磁盤
    sda1 # 表示第一塊磁盤的第一個分區
    sda2 # 表示第一塊磁盤的第二個分區
sdb   # 表示第二塊磁盤
    sdb1 # 表示第2塊磁盤的第1個分區
    sdb5 # 表示第2塊磁盤的第1個邏輯分區

1、Linux中磁盤分區方式

1.系統分區
第一種分區: 標準分區   300G磁盤
/boot   200M    # 存放系統內核的位置 引導程序所在的位置
/剩余空間 # 存放系統

第二種分區: swap分區
/boot  200M
swap   2G       # 當內存空間不夠用時,臨時使用磁盤空間充當內存來使用 速度慢 解決OOM問題 內存溢出。
    # linux內存如果達到最大限制,則自動殺死占用最高內存的進程來讓系統正常運行
# swap 對用戶的服務器需要增加物理內存
        # 比較著急,或者公司內部測試服務器 自己使用的。
/     剩余空間

第三種分區: 比較少
/boot  200M
swap   2G
/      50G    # 系統
/data  1.8T   # 數據分區

2、磁盤分區類型

MBR:4 primary parted or 3 primary parted + 1 extended parted + many logical parted

GPT: 128 primary parted

3、磁盤分區步驟

1.MBR格式  小于2T磁盤使用fdisk分區
2.GPT分區  大于2T磁盤使用parted分區

第一步:插入一塊20G SCSI類型硬盤
第二部:重啟 或者 通過命令行重新掃描SCSI總線來添加硬盤
echo '- - -' > /sys/class/scsi_host/host0/scan 
echo '- - -' > /sys/class/scsi_host/host1/scan 
echo '- - -' > /sys/class/scsi_host/host2/scan 
# 由于我們并不知道哪一個總線是,就都掃一遍就行

# 再Ubuntu系統中/sys/class/scsi_hosts/有許多總線,我們有兩種方式
root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done
# 找出SPI總線對應的 host,只掃描該 host
root@xu-ubuntu:~# grep mptspi /sys/class/scsi_host/host*/proc_name
/sys/class/scsi_host/host31/proc_name:mptspi
root@xu-ubuntu:~# echo '- - -' > /sys/class/scsi_host/host31/scan
第三部:磁盤分區  # fdisk創建分區
[root@kylin-xu ~]# fdisk  /dev/sdb
Command (m for help): m  # 查看菜單

Help:
   d   delete a partition  # 刪除一個分區  
   l   list known partition types # 顯示分區類型
   n   add a new partition  # 創建新的分區
   p   print the partition table  # 輸出分好的分區表
   m   print this menu      # 打印菜單
   w   write table to disk and exit #保存并且推出
   q   quit without saving changes# 退出不保存
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  # 指定類型,默認是primary
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +5G

Created a new partition 1 of type 'Linux' and of size 5 GiB.
Command (m for help): n   # 第二個分區
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
First sector (10487808-41943039, default 10487808): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039): +10G

Created a new partition 2 of type 'Linux' and of size 10 GiB.

Command (m for help): d   # 刪除分區 
Partition number (1-4, default 4): 

Command (m for help): n  # 創建一個擴展分區 
Partition type
   p   primary (3 primary, 0 extended, 1 free)
   e   extended (container for logical partitions)
Select (default e): 

Using default response e.
Selected partition 4
First sector (33556480-41943039, default 33556480): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (33556480-41943039, default 41943039): 

Created a new partition 4 of type 'Extended' and of size 4 GiB.

Command (m for help): p   # 查看創建的分區類型
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5fbfe031

Device     Boot    Start      End  Sectors Size Id Type
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb2       10487808 31459327 20971520  10G 83 Linux
/dev/sdb3       31459328 33556479  2097152   1G 83 Linux
/dev/sdb4       33556480 41943039  8386560   4G  5 Extended


Command (m for help): n  # 創建邏輯分區
All primary partitions are in use.
Adding logical partition 6
First sector (35657728-41943039, default 35657728): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (35657728-41943039, default 41943039): 

Created a new partition 6 of type 'Linux' and of size 3 GiB.


Command (m for help): w  # 保存分區
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@kylin-xu ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─klas-root   253:0    0 38.3G  0 lvm  /
  ├─klas-swap   253:1    0    2G  0 lvm  [SWAP]
  └─klas-backup 253:2    0 18.7G  0 lvm  /backup
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
├─sdb2            8:18   0   10G  0 part 
├─sdb3            8:19   0    1G  0 part 
├─sdb4            8:20   0    1K  0 part 
├─sdb5            8:21   0    1G  0 part 
└─sdb6            8:22   0    3G  0 part 
sr0              11:0    1  4.3G  0 rom 

# 如果我們使用分區完成后,使用lsblk查看不到我們分區的內容,這是由于lsblk是查看內存中的信息,又可能我們分區完成后,內存沒有更新,這是我們需要手動刷新下
[root@kylin-xu ~]# partprobe

非交互式創建分區

[root@kylin-xu ~]# echo -e 'p
n

+1G
p
' | fdisk /dev/sdb
# 
 表示回車
# parted創建分區
(parted) mklabel gpt # 將磁盤類型修改為gpt格式
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 4295GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

(parted) mkpart             # 創建分區                                              
Partition name?  []? primary    # 分區的名稱  自定義叫啥都行                         
File system type?  [ext2]? xfs                                            
Start? 0                                                                  
End? 500G                                                                 
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? I  
(parted) print   
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  500GB  500GB  xfs          primary

(parted) mkpart 
Partition name?  []? parimary                                             
File system type?  [ext2]? xfs                                            
Start? 500G                                                               
End? 1000G
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 4295GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size   File system  Name      Flags
 1      17.4kB  500GB   500GB               primary
 2      500GB   1000GB  500GB  xfs          parimary

(parted) mkpart primary xfs 1000G  4000G    # 非交互式分區                             
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 4295GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
(parted) quit  # 退出parted分區

parted重要的子命令

help [COMMAND] # 打印菜單幫助
mklabel,mktable LABEL-TYPE # 創建分區表類型
mkpart PART-TYPE [FS-TYPE] START END # 創建分區
print [devices|free|list,all|NUMBER] # 查看分區表
quit # 退出
rm NUMBER # 刪除分區

第四步:格式化分區,在格式化分區之后就會出現UUID
[root@kylin-xu ~]# mkfs.xfs  /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
第五步:創建掛載點,掛載分區
[root@kylin-xu ~]# mkdir  /mnt/xfs
[root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs
[root@kylin-xu ~]# df -Th | grep /mnt/xfs
/dev/sdb1               xfs       5.0G   68M  5.0G   2% /mnt/xfs
第六步:寫入/etc/fstab,開機自動掛載
vim /etc/fstab
/dev/sdb1 /mnt/xfs xfs defaults 0 0


卸載分區
[root@kylin-xu xfs]# touch 123
[root@kylin-xu xfs]# cd
[root@kylin-xu ~]# umount /mnt/xfs 
[root@kylin-xu ~]# df -Th | grep /mnt/xfs
[root@kylin-xu ~]# ll /mnt/xfs
total 0
# 我們將分區卸載之后,我們創建的內容也會消失,
# 我們重新掛載上之后就又會出現
[root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs
[root@kylin-xu ~]# ll /mnt/xfs
total 0
-rw-r--r-- 1 root root 0 Nov 20 04:08 123

我們在表示logical parted時盡量不要使用路徑去表示,要使用UUID

4、Ubuntu中進行磁盤分區

# 添加磁盤
root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done
root@xu-ubuntu:~# fdisk  /dev/sdb -l
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

在Ubuntu中磁盤分區使用的是gpt分區

root@xu-ubuntu:~# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.8

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries in memory.

Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 41942973 sectors (20.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +4G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 33554365 sectors (16.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         8390655   4.0 GiB     8300  Linux filesystem
Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

# 格式化
mkfs

【4】、文件系統

1、什么是文件系統

文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。

操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。

查看當前內核支持的文件系統:

[root@kylin-xu ~]# ls /lib/modules/`uname -r`/kernel/fs
root@xu-ubuntu:~#  ls /lib/modules/`uname -r`/kernel/fs

系統支持的文件系統并不全是可用的,查看當前系統可用的文件系統:

 cat /proc/filesystems

當前系統支持的文件系統和當前系統可用的文件系統是兩回事,modules 中的文件系統在編譯時選擇了才是可用的,而可用的文件系統包含了默認支持的文件系統,如果需要使用某個文件系統,而該文件系統又不在proc 中,則需要重新編譯內核;

2、文件系統類型

Linux常用文件系統

文件系統 備注
ext2 Extended file system 適用于那些分區容量不是太大,更新也不頻繁的情況,例如/boot 分 區
ext3 ext2 的改進版本,其支持日志功能,能夠幫助系統從非正常關機導致的異常中恢復
ext4 ext 文件系統的最新版。有很多新的特性,包括納秒級時間戳、巨型文件 (16TB)、最大1EB的文件系統,以及速度的提升
xfs SGI,支持最大8EB的文件系統
swap 交換分區專用的文件系統
iso9660 光盤文件系統

Windows常用文件系統

文件系統 備注
FAT32 最多只能支持16TB的文件系統和4GB的文件
NTFS 最多只能支持16EB的文件系統和16EB的文件
extFAT

Unix*常用文件系統

文件系統 備注
FFS(fast)
UFS(unix) UFS是UNIX文件系統的簡稱,幾乎是大部分UNIX類操作系統默認的基于磁盤的文件系統
JF32

3、創建文件系統

root@xu-ubuntu:~# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 1048576 4k blocks and 262144 inodes   # 創建block和inode
Filesystem UUID: 83d410e3-5dcb-415a-8ef0-54c3d73e4b34   # 設置UUID
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

root@xu-ubuntu:~# mkfs.xfs  /dev/sdb2
meta-data=/dev/sdb2              isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


root@xu-ubuntu:~# lsblk  -f /dev/sdb
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb                                                                           
├─sdb1 ext4   1.0         83d410e3-5dcb-415a-8ef0-54c3d73e4b34                
├─sdb2 xfs                af832cf3-01c7-48eb-b4bc-a76605c7d5f6                
└─sdb3

【5】、磁盤掛載

 mount [-lhV]
 mount -a [options]
 mount [options] [--source]  | [--target] 
 mount [options]  
 mount   []

device:指明要掛載的設備

設備文件:例如:/dev/sda5

卷標:-L 'LABEL', 例如 -L 'MYDATA'

UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'

偽文件系統名稱:proc, sysfs, devtmpfs, configfs

mountpoint:掛載點目錄必須事先存在,建議使用空目錄

掛載規則

一個掛載點同一時間只能掛載一個設備

一個掛載點同一時間掛載了多個設備,只能看到最后一個設備的數據,其它設備上的數據將被隱藏

一個設備可以同時掛載到多個掛載點

通常掛載點一般是已存在空的目錄

root@xu-ubuntu:~# mount --source /dev/sdb1 -o ro /dir1
# --source 指定掛載源,-o 指定掛載選項  ro 表示只讀

root@xu-ubuntu:~# df -lh | grep  dir1
/dev/sdb1                          3.9G   24K  3.7G   1% /dir1
root@xu-ubuntu:~# touch /dir1/lll
touch: cannot touch '/dir1/lll': Read-only file system
root@xu-ubuntu:~# mount  | grep sdb1
/dev/sdb1 on /dir1 type ext4 (ro,relatime)

【6】、持久化掛載

/etc/fstab

每行定義一個要掛載的文件系統,,其中包括共 6 項

要掛載的設備或偽文件系統設備文件(LABEL=label | UUID=uuid | /dev/sda1)

掛載點:必須是事先存在的目錄

文件系統類型:ext4,xfs,iso9660,nfs,none

掛載選項:defaults ,acl,bind,ro,rw 等

轉儲頻率:0 不做備份; 1 每天轉儲; 2 每隔一天轉儲

fsck檢查的文件系統的順序:0 不自檢 ; 1 首先自檢,一般只有rootfs才用;2 非rootfs使用 0

/dev/sdb1    /mnt/xfs     xfs    defaults   0   0

【7】、磁盤常用工具

1、df

文件系統查看工具

-a:顯示所有
-h:以方便的形式顯示數據
-T:顯示文件系統類型
-t:按照文件系統類型過濾
root@xu-ubuntu:~# df -t ext4 
-l:只顯示本機的文件系統
--total:最后一行匯總輸出
root@xu-ubuntu:~# df -lTh --total 
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  388M  1.6M  386M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4    24G  8.9G   14G  40% /
tmpfs                             tmpfs  1.9G     0  1.9G   0% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   2.0G  242M  1.6G  14% /boot
tmpfs                             tmpfs  388M  4.0K  388M   1% /run/user/1000
/dev/sdb1                         ext4   3.9G   24K  3.7G   1% /dir1
total                             -       32G  9.2G   22G  31% -

2、du

目錄統計工具

-s:只顯示外層目錄
-h:以方便閱讀的格式顯示
--total:匯總統計到的所有數據
root@xu-ubuntu:~# du /etc/ -sh
6.7M    /etc/
root@xu-ubuntu:~# du /etc/  /var/log/ -sh --total 
6.7M    /etc/
36M     /var/log/
42M     total

3、dd

if=file#從所命名文件讀取而不是從標準輸入
of=file    #寫到所命名的文件而不是到標準輸出
bs=size#指定塊大小(既是是ibs也是obs)
count=n#復制幾個bs
# 備份MBR
root@xu-ubuntu:~# dd if=/dev/sdb of=./sdb.img bs=512 count=1

# 備份整個磁盤
dd if=/dev/sdx of=/path/to/image

【8】、磁盤相關案例

企業案例1:java環境內存不夠用,大量占用swap

swap磁盤分區: 大小是內存的1-1.5倍 如果內存大于8G,則最多swap給8G即可。
什么情況下使用swap: 
       測試服務器 
       內部服務器 
       自己用的虛擬機 
       流量波動的業務。
線上服務器,業務服務器禁止使用swap,增加內存的方式解決OOM(內存溢出)問題。

如何創建swap

方法1: 安裝操作系統的時候

方法2: 安裝完成操作系統

# 生成一個1G的文件
[root@kylin-xu ~]# dd if=/dev/zero  of=/1g bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.15619 s, 174 MB/s

# 格式化為swap
[root@kylin-xu ~]# mkswap  /1g 
mkswap: /1g: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=3cbda684-b958-476e-b08c-1b94834d0657
[root@kylin-xu ~]# blkid /1g
/1g: UUID="3cbda684-b958-476e-b08c-1b94834d0657" TYPE="swap"

# 掛載使用swap 直接增加到原有的swap空間上
[root@kylin-xu ~]# swapon /1g
swapon: /1g: insecure permissions 0644, 0600  suggested.
[root@kylin-xu ~]# swapon -s  # 查看分區的組成
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2138108 13324   -2
/1g                                     file            1048572 0       -3
[root@kylin-xu ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       178Mi       1.1Gi        10Mi       697Mi       1.6Gi
Swap:         3.0Gi        13Mi       3.0Gi

# 寫入/etc/fstab

企業案例2.無法寫入文件到磁盤

第一種情況:磁盤空間滿了
# 需要查找系統中的大文件,找出磁盤中大于1G的文件。
# 注意mount 會隱藏原來目錄下的文件
find / -size +1G -type f
dd if=/dev/zero of=/opt/2g bs=1M count=2000
[root@kylin-xu ~]# find / -type f -size  +1G
/proc/kcore
/opt/2g

第二種情況:inode號滿了,找出文件中大量的小文件
[root@kylin-xu ~]# find / -type d -size +1M 

企業案例3.解決磁盤不夠用的問題

需求: 目前磁盤不夠用

1.業務會持續輸出日志內容到 /var/log/nginx.log文件中 10G
[root@kylin-xu ~]# dd if=/dev/zero of=/var/log/10g bs=1M count=10000
2.日志的路徑不能變,解決磁盤不夠用的問題。
解決方案:
1.增加大的磁盤
增加4T的磁盤
2.掛載磁盤到/data目錄
[root@kylin-xu ~]# mount /dev/sdc3 /data
3.將10g文件移動到/data目錄
[root@kylin-xu ~]# mv /var/log/10g  /data/
[root@kylin-xu ~]# ll /data/
total 9.8G
-rw-r--r-- 1 root root 9.8G Nov 20 17:11 10g
[root@kylin-xu ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  963M     0  963M   0% /dev
tmpfs                   tmpfs     979M     0  979M   0% /dev/shm
tmpfs                   tmpfs     979M   22M  957M   3% /run
tmpfs                   tmpfs     979M     0  979M   0% /sys/fs/cgroup
/dev/mapper/klas-root   xfs        39G  6.7G   32G  18% /
tmpfs                   tmpfs     979M     0  979M   0% /tmp
/dev/sdb1               xfs       5.0G   68M  5.0G   2% /mnt/xfs
/dev/mapper/klas-backup xfs        19G  171M   19G   1% /backup
/dev/sda1               xfs      1014M  169M  846M  17% /boot
tmpfs                   tmpfs     196M     0  196M   0% /run/user/0
/dev/sdc3               xfs       2.8T   30G  2.7T   2% /data
4.軟鏈接到/var/log/10g
[root@kylin-xu ~]# ln -s /data/10g  /var/log/10g
[root@kylin-xu ~]# ll /var/log/10g 
lrwxrwxrwx 1 root root 9 Nov 20 17:15 /var/log/10g -> /data/10g

企業案例4.刪除文件

磁盤上有個一39G的文件,刪除后發現磁盤沒有釋放。
文件如果被進程所占用,會出現刪除文件磁盤沒有釋放的問題。
查看當前的文件被哪個進程所占用:
[root@oldboyedu ~]# lsof |grep 10g
tail      2873                          root    3r      REG               8,32 41838247936        132 /data/10 (deleted)

殺死進程或者重啟或者重新加載
[root@oldboyedu ~]# kill -9 2873

【9】、邏輯卷

1、什么是邏輯卷

LVM: Logical Volume Manager 可以允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小,允許在多個物理設備間重新組織文件系統

LVM可以彈性的更改LVM的容量

實現過程

將設備指定為物理卷

用一個或者多個物理卷來創建一個卷組,物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的

在物理卷上創建的邏輯卷, 是由物理區域(PE)組成

可以在邏輯卷上創建文件系統并掛載

2、創建邏輯卷

# 創建pvs
root@xu-ubuntu:~# pvcreate /dev/sdb{1..3}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
root@xu-ubuntu:~# pvs
  PV         VG        Fmt  Attr PSize   PFree  
  /dev/sda3  ubuntu-vg lvm2 a--  <48.00g  24.00g
  /dev/sdb1            lvm2 ---    4.00g   4.00g
  /dev/sdb2            lvm2 ---    5.00g   5.00g
  /dev/sdb3            lvm2 ---  <11.00g <11.00g
  
# 創建vg
root@xu-ubuntu:~# vgcreate vg1 /dev/sdb{1..2}
  Volume group "vg1" successfully created
root@xu-ubuntu:~# vgs
  VG        #PV #LV #SN Attr   VSize   VFree 
  ubuntu-vg   1   1   0 wz--n- <48.00g 24.00g
  vg1         2   0   0 wz--n-   8.99g  8.99g


# 創建lvm -L:指定邏輯卷大小  -n:指定邏輯卷名字   -l:按照PE數量進行劃分
root@xu-ubuntu:~# lvcreate -L 5G -n lv1 vg1
  Logical volume "lv1" created.
root@xu-ubuntu:~# lvs
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- <24.00g                                                    
  lv1       vg1       -wi-a-----   5.00g  
  
root@xu-ubuntu:~# lvcreate -l 500 -n lv2 vg1
  Logical volume "lv2" created.
root@xu-ubuntu:~# lvs
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- <24.00g                                                    
  lv1       vg1       -wi-a-----   5.00g                                                    
  lv2       vg1       -wi-a-----   1.95g                                                    

我們后續如果想使用lvm,也需要進行格式化和掛載才可以

# 格式化和掛載
root@xu-ubuntu:~# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: ff6b294f-b30c-4ac2-94e9-cc57b086d207
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

root@xu-ubuntu:~# mount /dev/vg1/lv1 /lv1

2、對lvm進行擴容

# ext系列文件系統
# 在擴容lvm之前我們得看下vg是否還有空間允許擴容,如果vg還有空間,我們直接擴容lvm即可。如果vg沒有空間,我們得先擴容vg,擴容vg需要添加pv,如果有空閑的pv直接擴容即可,沒有空閑的pv,先使用pvcreate創建出pv
root@xu-ubuntu:~# vgextend vg1  /dev/sdb3
  Volume group "vg1" successfully extended
root@xu-ubuntu:~# lvextend -L 7G /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
  Logical volume vg1/lv1 successfully resized.
root@xu-ubuntu:~# df -Th   # 擴容完成后我們還需要告知文件系統,才能生效
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  388M  1.7M  386M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4    24G  8.9G   14G  40% /
tmpfs                             tmpfs  1.9G     0  1.9G   0% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   2.0G  242M  1.6G  14% /boot
tmpfs                             tmpfs  388M  4.0K  388M   1% /run/user/1000
/dev/mapper/vg1-lv1               ext4   4.9G   24K  4.6G   1% /lv1
root@xu-ubuntu:~# resize2fs /dev/vg1/lv1    # 使用resize2fs告知ext系列文件系統
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg1/lv1 is now 1835008 (4k) blocks long.

root@xu-ubuntu:~# resize2fs /dev/vg1/lv1 | grep lv1
resize2fs 1.46.5 (30-Dec-2021)
The filesystem is already 1835008 (4k) blocks long.  Nothing to do!

root@xu-ubuntu:~# df -Th | grep  lv1
/dev/mapper/vg1-lv1               ext4   6.9G   24K  6.5G   1% /lv1000000000000000000
# xfs類型文件系統
# 其他過程都一樣,只是在告知文件系統時的命令不同 xfs文件系統使用的是 xfs_growfs
root@xu-ubuntu:~# lvextend -L 5G /dev/vg1/lv2
  Size of logical volume vg1/lv2 changed from 1.95 GiB (500 extents) to 5.00 GiB (1280 extents).
  Logical volume vg1/lv2 successfully resized.
root@xu-ubuntu:~# df -Th
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  388M  1.7M  386M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4    24G  8.9G   14G  40% /
tmpfs                             tmpfs  1.9G     0  1.9G   0% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   2.0G  242M  1.6G  14% /boot
tmpfs                             tmpfs  388M  4.0K  388M   1% /run/user/1000
/dev/mapper/vg1-lv1               ext4   6.9G   24K  6.5G   1% /lv1
/dev/mapper/vg1-lv2               xfs    2.0G   47M  1.9G   3% /lv2
root@xu-ubuntu:~# xfs_growfs /dev/vg1/lv2
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=4, agsize=128000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=512000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 512000 to 1310720
root@xu-ubuntu:~# df -Th | grep lv2
/dev/mapper/vg1-lv2               xfs    5.0G   69M  5.0G   2% /lv2

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11227

    瀏覽量

    208922
  • 磁盤
    +關注

    關注

    1

    文章

    367

    瀏覽量

    25176

原文標題:磁盤管理

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分享一個磁盤管理工具,綠色版絕對好用,可以恢復數據哦

    分享一個磁盤管理工具,綠色版絕對好用,可以恢復數據哦,
    發表于 08-14 16:22

    硬盤操作無法完成,因為磁盤管理控制臺視圖不是最新狀態找到資料的辦法

    操作無法完成,因為磁盤管理控制臺視圖不是最新狀態說明這個盤的文件系統結構損壞了。在平時如果數據不重要,那么可以直接格式化就能用了。但是有的時候里面的數據很重要,那么就必須先恢復出數據再格式化。具體
    發表于 08-10 09:02

    1-13-硬盤和磁盤管理知識介紹

    1-13-硬盤介紹和磁盤管理
    發表于 07-16 06:39

    Linux系統中磁盤管理是什么

    Linux系統中的磁盤管理
    發表于 05-11 15:29

    存儲管理磁盤結構分為哪幾部分

    存儲管理磁盤結構分為哪幾部分?磁盤調度算法有哪幾種?分別有何優缺點?
    發表于 12-23 09:57

    磁盤存儲器管理

      計算機系統中,文件是存放在外存中的,文件系統必須實現磁盤存儲空間的管理、文件名到文件存儲空間的映射等功能;另一方面,虛擬存儲器的實現也需要容量大、存取速度
    發表于 09-03 15:37 ?0次下載

    磁盤陣列管理的小技巧

    磁盤陣列管理的小技巧  【簡 介】磁盤陣列(Redundant Array of Inexpensive,簡稱RAID)作為數據存儲的一種主要方式在許多企業中被大量采用。磁盤陣列是一種安全可
    發表于 08-01 11:13 ?980次閱讀

    磁盤陣列的單機磁盤數量

    磁盤陣列的單機磁盤數量              單機磁盤數量是指磁盤一個
    發表于 01-09 10:14 ?870次閱讀

    基于Windows的磁盤數據清除技術

    通過分析MFT表管理磁盤數據的方法,建立一種樹形目錄結構,并以該樹形目錄作為管理磁盤中所有MFT表的工具。采用遍歷之后立即釋放樹結點的方法,解決了內存過度占用的問題。該技術可
    發表于 03-01 15:57 ?24次下載
    基于Windows的<b class='flag-5'>磁盤</b>數據清除技術

    基于WinCE使用Storage Manager API函數磁盤管理

      本文就基于Toradex Colibri iMX6S ARM嵌入式平臺來演示通過Storage Manager API函數來進行Flash磁盤管理
    發表于 09-18 15:31 ?10次下載
    基于WinCE使用Storage Manager API函數<b class='flag-5'>磁盤</b><b class='flag-5'>管理</b>

    Linux磁盤存儲區管理原理分析及技巧匯總

    在Linux下管理磁盤貯存區算的上一個技巧,很多朋友在這上面常常問我,今天我就把這方面的東西匯總一下,從Linux特有的交換分區的原理開始介紹Linux下如何管理磁盤。 原理篇 1.
    發表于 11-07 10:14 ?0次下載

    微軟Windows 10研究新的方法管理現代磁盤分區

    如果要刪除舊磁盤并創建新分區或擴展特定磁盤的空間,則需要依賴Windows 10的磁盤管理工具。在Windows 10上管理
    的頭像 發表于 03-19 15:06 ?2088次閱讀

    df、du、fdisk linux的基本操作(磁盤管理

    df、du、fdisk linux的基本操作(磁盤管理
    發表于 12-08 17:14 ?0次下載

    linux系統磁盤管理及分析必備命令

    今天浩道跟大家分享linux磁盤管理及分析相關的硬核干貨,通過這些指令,可以讓你高效運維!
    的頭像 發表于 02-09 09:54 ?697次閱讀

    Linux系統中LVM磁盤管理的應用與實踐

    邏輯卷管理提供了比傳統的磁盤和分區視圖更高級別的計算機系統上磁盤存儲的視圖。這使得系統管理員可以更靈活地將存儲分配給應用程序和用戶。
    發表于 04-09 14:39 ?798次閱讀