Ubuntu 20.04 安装CUPS 共享打印服务
systemctl disable --now unattended-upgrades
sudo apt-get update -y
sudo apt remove cloud-init -y
sudo apt install vim net-tools -y
修改网卡等待时间:
- vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
- 在Service段中添加 TimeoutStartSec=2sec
- systemctl daemon-reload
sudo apt install cups
vim /etc/cups/cupsd.conf
- 修改18行 Listen 为0.0.0.0:631
- 修改22行 Browsing Off 为Browsing On
- 在29行下面增加 ServerAlias *
- 在所有的在
Order Allow,Deny下面增加Allow all
修改pip为国内源
在/home/linux下创建.pip文件夹与pip.conf文件
mkdir -p /home/linux/.pip
vim /home/linux/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
mkdir -p /root/.pip
cp /home/linux/.pip/pip.conf /root/.pip/pip.conf
编译hplip准备
- 添加 sudo apt install python-is-python3 libavahi-core-dev
- sudo apt install hplip hplip-data printer-driver-hpcups -y
- sudo apt-get install --assume-yes python3-pip
- sudo pip3 install --upgrade pip
- sudo apt-get install --assume-yes libleptonica-dev
- sudo apt-get install --assume-yes tesseract-ocr tesseract-ocr-all
- sudo apt-get install --assume-yes libtesseract-dev
- sudo -H pip3 install tesserocr
- sudo -H pip3 install opencv-python
- sudo -H pip3 install PyPDF2
- sudo -H pip3 install imutil
- sudo -H pip3 install scikit-image
- sudo -H pip3 install scipy
- sudo apt install ocrmypdf
- 在非root用户下执行 ./hplip-3.22.04.run


然后安装 hp-plugin:
hp-plugin -i
运行lsusb查看 系统检测到的usb设备
最后 将linux用户添加到lpadmin用户组中:
sudo usermod -aG lpadmin $USER
设置开机自启cups
sudo systemctl enable cups
Zerotier安装
curl -s https://install.zerotier.com | sudo bash
systemctl enable zerotier-one
zerotier-cli join 93afae5963a766fc
mkdir /var/lib/zerotier-one/moons.d
wget https://rowsea.com/000000b5b91d9c08.moon
mv 000000b5b91d9c08.moon /var/lib/zerotier-one/moons.d/
zerotier-cli orbit b5b91d9c08 b5b91d9c08
systemctl restart zerotier-one
安装软raid
apt install mdadm
检查磁盘状态
lsblk
fdisk -l
确认哪些磁盘未被使用,例如 /dev/sdb /dev/sdc /dev/sdd
清除磁盘旧配置
sudo mdadm --zero-superblock /dev/sd[b-d]
创建raid阵列
RAID5实例
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]
RAID 10 示例(4块盘):
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]
监控阵列同步状态
watch cat /proc/mdstat
创建文件系统并挂载
sudo mkfs.ext4 /dev/md0 // 使用磁盘配额 必须使用xfs文件系统 mkfs.xfs -f /dev/md0
sudo mkdir -p /mnt/raid
sudo mount /dev/md0 /mnt/raid
持久化配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
添加到 /etc/fstab:
echo '/dev/md0 /mnt/raid ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
性能测试与验证
sudo apt install fio
fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting
五、常见问题与排查方法
问题一:阵列创建失败或卡住
- 原因:某些磁盘可能已有旧 RAID 签名
- 解决:使用
–zero-superblock清除所有参与盘的 RAID 信息
问题二:重启后阵列未挂载
- 检查
/etc/mdadm/mdadm.conf和/etc/fstab是否正确写入 - 检查 RAID 设备名是否变动(可使用 UUID 挂载)
问题三:磁盘掉线或降级模式
- 使用
mdadm –detail /dev/md0查看状态
替换损坏盘后重新添加:
sudo mdadm --add /dev/md0 /dev/sdX
问题四:性能不达预期
- 检查磁盘是否为 SMR 类型(不推荐用于 RAID)
- 检查是否开启写缓存(使用
hdparm -W) - 优化文件系统挂载参数,如
noatime,nobarrier
安装SMARTCTL
apt install g++ gcc make -y
tar -zxvf smartmontools-7.5.tar.gz
cd smartmontools-7.5
./configure --disable-dependency-tracking
make && make install
/usr/local/sbin/smartctl -a /dev/sda
重装系统后恢复RAID1硬盘阵列
查看是否有阵列存在
cat /proc/mdstat
显示我们发现有一个md0,由sdb和sdc组成的
安装mdadm
apt-get install -y mdadm
导入
mdadm --assemble --scan
恢复配置并保存
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
显示如下:
root@ubuntu: ~# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.19.0-10-amd64
删除/etc/mdadm/mdadm.conf类似下面这个
ARRAY /dev/md/0
这一行都要删除,然后重启一下
然后就可以挂载,并设置开机自动挂载了
安装Samba
apt install samba
mkdir /mnt/raid/share && chmod 777 /mnt/raid/share
vim /etc/samba/smb.conf
[share]
comment = 共享目录
path = /mnt/raid/share
browseable = yes
writable = yes
valid users = linux
create mode = 0644
directory mode = 0775
添加用户
smbpasswd -a linux
systemctl enable smbd
systemctl restart smbd
Centos下开启firewall
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=137/udp --permanent
firewall-cmd --zone=public --add-port=138/udp --permanent
curl -sSL https://raw.githubusercontent.com/lyarinet/Samba-Manager/main/auto_install.sh | sudo bash
Samba服务器(多用户组、多用户有不同的访问权限)
- 首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。
- 建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限。
- 建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可以访问,但外人看不到那个目录
- 建立一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件。
- 建立一个公共的只读文件夹public,所有人只读这个文件夹的内容。
前期的工作
建立3个组:
groupadd caiwu
groupadd network
groupadd lingdao
添加用户并加入相关的组当中:
useradd caiwu01 -g caiwu
useradd caiwu02 -g caiwu
useradd network01 -g network
useradd network02 -g network
useradd lingdao01 -g lingdao
useradd lingdao02 -g lingdao
然后我们使用smbpasswd -a caiwu01的命令为6个帐户分别添加到samba用户中
mkdir /home/samba
mkdir /home/samba/caiwu
mkdir /home/samba/lingdao
mkdir /home/samba/exchange
mkdir /home/samba/public
为了避免麻烦可以在这里把上面所有的文件夹的权限都设置成777,通过samba灵活的权限管理来设置上面的5点要求。
以下是smb.conf的配置文件
[global]
workgroup = bmit #我的网络工作组
server string = Frank's Samba File Server #我的服务器名描述
security = user #使用用户验证机制
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd #使用加密密码机制,在win95和winnt使用的是明文
其他的基本上可以按照默认的来。
[homes] #homes段满足第1条件
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
[caiwu] #caiwu段满足我们的第2要求
comment = caiwu
path = /home/samba/caiwu
public = no
valid users = @caiwu,@lingdao,network02
write list = caiwu01
printable = no
[lingdao] #lingdao段能满足我们的第3要求
comment = lingdao
path = /home/samba/lingdao
public = no
browseable = no
valid users = @lingdao,network02
printable = no
[exchage]
comment = Exchange File Directory
path = /home/samba/exchange
public = yes
writable = yes
#exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使里设置了mask也是没用,其实这个条件只要unix设置一个粘着位就行
chmod -R 1777 /home/samba/exchange
注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求
[public]
comment = Read Only Public
path = /home/samba/public
public = yes
read only = yes
#这个public段能满足第5要求。
到此为止设置已经能实现共享文件要求,记得重启服务
#/etc/rc.d/init.d/smb restart
如果大家没有winodws,不妨先用samba的cilent端命令来测试一下
命令的用法举几个例子
smbclient -L 服务器ip -N
guest帐户查询服务器的samba共享情况,可以检验一下是否lingdao目录时候能被guest帐户看到,应该是看不到的,当然也可以以某个用户的名义查看
smbclient -L 服务器ip -U caiwu01
系统会提示密码,只要输入smb密码就行。
smbclient //服务器ip/caiwu -U caiwu01
#以caiwu01用户的名义登录caiwu目录
smbmount //服务器ip/caiwu /mnt/caiwu -o username=caiwu01
#把服务器的财务目录映射到本地的/mnt/caiwu目录。
测试
smbclient -L //localhost/share
或者
smbclient-L \\127.0.0.1 -Umyname
这时输入的密码就是你刚才设置的samba密码使用
- windows用户
在我的电脑地址栏里输入\192.168.1.1访问;也可windows+R输入\192.168.1.1; 登录后可以右击映射到本地驱动器。
net use * /delete
- Linux
- 使用smbclient
#smbclient//192.168.1.1/Normal -U user%passwd
- 挂载到某个目录使用
#mkdir/mnt/share
#mount -o username=youruser,password=passwd //192.168.1.1/Normal /mnt/share
设置开机挂载将如下命令写入/etc/fstab
//192.168.1.1/share /mnt/ml45 cifs defaults,auto,username=youruser,password=passwd 0 0
然后#mount -a
安装NTP Server
修改时区: timedatectl set-timezone Asia/Shanghai
ubuntu设置24h显示: localectl set-locale LC_TIME="en_GB.UTF-8"
关闭systemd-timesyncd服务,防止与ntpd冲突
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
sudo apt install -y ntp
sudo systemctl enable ntp --now
修改/etc/ntp.conf
# 1) 记录频偏
driftfile /var/lib/ntp/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list
# 2) 上游时间源:至少 3~4 个,分布不同机构/地域
pool 0.cn.pool.ntp.org iburst
pool 1.cn.pool.ntp.org iburst
pool 2.cn.pool.ntp.org iburst
pool 3.cn.pool.ntp.org iburst
# 如需更稳,可替换为企业可信源或本地区权威源
# 3) 访问控制(默认收紧)
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# 允许本机与本地网段查询/同步(示例:10.0.0.0/24)
restrict 127.0.0.1
restrict ::1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
# 4) 接口控制(可选:仅监听内网口)
# interface ignore wildcard
# interface listen eth0
# 5) 异常容错(可选):上游全不可达时有序参考
# tos orphan 10
sudo systemctl restart ntp
sudo ufw allow 123/udp
sudo ufw reload
运行状态检查
# 进程/端口
sudo systemctl status ntp
sudo ss -lunp | grep :123
# 同步状态与上游列表
ntpq -p -n
# 粗粒度健康度
ntpstat
RAID完整操作
mdadm操作 使用本地回环创建3个块设备
$ truncate -s 1G md0.img md1.img md2.img $ sudo losetup -f --show md0.img /dev/loop0 $ sudo losetup -f --show md1.img /dev/loop1 $ sudo losetup -f --show md2.img /dev/loop2创建RAID,先以RAID 0为例,创建一个跨3块盘的RAID 0
$ sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.得到的
/dev/md0就是创建完成的 RAID 块设备,它的大小是约 3G,可以使用mdadm --detail查看详细信息。$ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Feb 21 00:54:02 2024 Raid Level : raid0 Array Size : 3139584 (2.99 GiB 3.21 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Wed Feb 21 00:54:02 2024 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : -unknown- Chunk Size : 512K Consistency Policy : none Name : hostname:0 (local to host hostname) UUID : 119661ca:ff0a76b7:28909e39:18af76dc Events : 0 Number Major Minor RaidDevice State 0 7 0 0 active sync /dev/loop0 1 7 1 1 active sync /dev/loop1 2 7 2 2 active sync /dev/loop2对应的状态也可以通过
/proc/mdstat查看:$ cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raid1] [raid0] md0 : active raid0 loop2[2] loop1[1] loop0[0] 3139584 blocks super 1.2 512k chunks unused devices: <none>使用
--stop选项停止 RAID:$ sudo mdadm --stop /dev/md0 mdadm: stopped /dev/md0 $ ls -lha /dev/md0 ls: cannot access '/dev/md0': No such file or directory在 stop 之后,如果需要再恢复,可以使用
--assemble选项:$ sudo mdadm --assemble /dev/md0 /dev/loop0 /dev/loop1 /dev/loop2 mdadm: /dev/md0 has been started with 3 drives. $ # 或者使用 --scan 参数: $ sudo mdadm --assemble --scan mdadm: /dev/md/0 has been started with 3 drives.将这个 RAID 0 拆掉,然后试试组建 RAID 1、RAID 5:
$ # RAID 1 $ sudo mdadm --stop /dev/md0 mdadm: stopped /dev/md0 $ sudo mdadm --misc --zero-superblock /dev/loop0 /dev/loop1 /dev/loop2 $ sudo mdadm --create /dev/md0 --level=1 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop2 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 5 $ sudo mdadm --stop /dev/md0 mdadm: stopped /dev/md0 $ sudo mdadm --misc --zero-superblock /dev/loop0 /dev/loop1 /dev/loop2 $ sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.如果在重新创建 mdadm 阵列之前不清空 superblock,会输出类似以下的警告信息:
mdadm: /dev/loop0 appears to be part of a raid array: level=raid0 devices=3 ctime=Wed Feb 21 00:54:02 2024 mdadm: /dev/loop1 appears to be part of a raid array: level=raid0 devices=3 ctime=Wed Feb 21 00:54:02 2024 mdadm: /dev/loop2 appears to be part of a raid array: level=raid0 devices=3 ctime=Wed Feb 21 00:54:02 2024重建操作
与 LVM 一章类似,这里展示在一块盘丢失(损坏)情况下的操作:
$ sudo mdadm --stop /dev/md0 mdadm: stopped /dev/md0 $ sudo losetup -D $ sudo losetup -f --show md0.img /dev/loop0 $ sudo losetup -f --show md1.img /dev/loop1 $ # 此时 /dev/md0 已经自动构建,并且处于丢失一块盘的状态 $ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Feb 22 13:05:14 2024 Raid Level : raid5 Array Size : 2093056 (2044.00 MiB 2143.29 MB) Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB) Raid Devices : 3 Total Devices : 2 Persistence : Superblock is persistent Update Time : Thu Feb 22 13:05:19 2024 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : hostname:0 (local to host hostname) UUID : 3e4455f5:65e4251c:b21c1c81:13b44a8b Events : 18 Number Major Minor RaidDevice State 0 7 0 0 active sync /dev/loop0 1 7 1 1 active sync /dev/loop1 - 0 0 2 removed $ # 添加新的盘 $ truncate -s 1G md3.img $ sudo losetup /dev/loop3 md3.img $ sudo mdadm --add /dev/md0 /dev/loop3 $ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Feb 22 13:05:14 2024 Raid Level : raid5 Array Size : 2093056 (2044.00 MiB 2143.29 MB) Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Thu Feb 22 13:52:32 2024 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 35% complete Name : hostname:0 (local to host hostname) UUID : 3e4455f5:65e4251c:b21c1c81:13b44a8b Events : 26 Number Major Minor RaidDevice State 0 7 0 0 active sync /dev/loop0 1 7 1 1 active sync /dev/loop1 3 7 3 2 spare rebuilding /dev/loop3添加新盘后,可以看到重建操作会自动开始。
完整性检查
这里展示三盘 RAID 1 下进行检查与修复的场景:
$ sudo mdadm --stop /dev/md0 mdadm: stopped /dev/md0 $ sudo mdadm --misc --zero-superblock /dev/loop0 /dev/loop1 /dev/loop3 $ sudo mdadm --create /dev/md0 --level=1 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop3 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. $ # 向其中一块盘写入垃圾数据 $ sudo dd if=/dev/urandom of=/dev/loop0 bs=1M count=1 oseek=100 1+0 records in 1+0 records out 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00406889 s, 258 MB/s $ sudo bash -c 'echo check > /sys/block/md0/md/sync_action' $ # 在 /proc/mdstat 中可以看到检查的进度 $ cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raid1] [raid0] md0 : active raid1 loop3[2] loop1[1] loop0[0] 1046528 blocks super 1.2 [3/3] [UUU] [===================>.] check = 95.3% (998016/1046528) finish=0.0min speed=249504K/sec unused devices: <none> $ # 由于我们这里盘很小,所以检查很快就结束了 $ cat /sys/block/md0/md/mismatch_cnt # 获取不一致的块数 4096 $ # 由于我们有足够多的副本,可以尝试修复 $ sudo bash -c 'echo repair > /sys/block/md0/md/sync_action' $ # 在 /proc/mdstat 中也可以看到修复的进度 $ cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raid1] [raid0] md0 : active raid1 loop3[2] loop1[1] loop0[0] 1046528 blocks super 1.2 [3/3] [UUU] [===========>.........] resync = 57.4% (601984/1046528) finish=0.0min speed=300992K/sec unused devices: <none> $ # 修复完成后,mismatch_cnt 中仍然记录的是不一致的数量 $ # 再执行一次 check 后 mismatch_cnt 值会变为 0监控 SMART信息
阅读 SMART 信息可以帮助了解硬盘的健康状态。在服务器上,如果使用硬件 RAID,使用
smartctl需要添加额外的参数来从 RAID 控制器获取真实的磁盘信息,例如下面的例子:$ sudo smartctl --scan /dev/sda -d scsi # /dev/sda, SCSI device /dev/sdb -d scsi # /dev/sdb, SCSI device /dev/sdc -d scsi # /dev/sdc, SCSI device /dev/sdd -d scsi # /dev/sdd, SCSI device /dev/bus/4 -d megaraid,8 # /dev/bus/4 [megaraid_disk_08], SCSI device /dev/bus/4 -d megaraid,9 # /dev/bus/4 [megaraid_disk_09], SCSI device /dev/bus/4 -d megaraid,10 # /dev/bus/4 [megaraid_disk_10], SCSI device /dev/bus/4 -d megaraid,11 # /dev/bus/4 [megaraid_disk_11], SCSI device /dev/bus/4 -d megaraid,12 # /dev/bus/4 [megaraid_disk_12], SCSI device /dev/bus/4 -d megaraid,13 # /dev/bus/4 [megaraid_disk_13], SCSI device /dev/bus/4 -d megaraid,14 # /dev/bus/4 [megaraid_disk_14], SCSI device /dev/bus/4 -d megaraid,15 # /dev/bus/4 [megaraid_disk_15], SCSI device /dev/bus/0 -d megaraid,8 # /dev/bus/0 [megaraid_disk_08], SCSI device /dev/bus/0 -d megaraid,9 # /dev/bus/0 [megaraid_disk_09], SCSI device /dev/bus/0 -d megaraid,10 # /dev/bus/0 [megaraid_disk_10], SCSI device /dev/bus/0 -d megaraid,11 # /dev/bus/0 [megaraid_disk_11], SCSI device /dev/bus/0 -d megaraid,12 # /dev/bus/0 [megaraid_disk_12], SCSI device /dev/bus/0 -d megaraid,13 # /dev/bus/0 [megaraid_disk_13], SCSI device $ sudo smartctl -a /dev/sdd # 直接查询只能看到没有意义的控制器信息 smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-21-amd64] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Vendor: AVAGO Product: MR9361-8i Revision: 4.68 Compliance: SPC-3 User Capacity: 1,919,816,826,880 bytes [1.91 TB] Logical block size: 512 bytes Physical block size: 4096 bytes Logical Unit id: 0x600605b00f17786026223e2d33c1767b Serial number: 007b76c1332d3e22266078170fb00506 Device type: disk Local Time is: Sun Feb 11 18:40:45 2024 CST SMART support is: Unavailable - device lacks SMART capability. === START OF READ SMART DATA SECTION === Current Drive Temperature: 0 C Drive Trip Temperature: 0 C Error Counter logging not supported Device does not support Self Test logging $ sudo smartctl -a /dev/bus/4 -d megaraid,8 # 添加参数可以看到真实的磁盘信息 (内容省略)smartctl -a的输出主要分为两个部分:information section 和 smart data section。Information section 展示硬盘的基本信息,包括型号、序列号、容量、固件版本等。
Smart data section 则展示了硬盘的 SMART 信息。其中自检信息与错误记录均会显示,其他的部分视硬盘类型而定。
SMART 还支持让磁盘自检,对应的参数为
smartctl -t,可以选择不同的测试参数(例如 short、long 等)安装 smartmontools 之后,可以启用 smartd 服务(smartd.service 或 smartmontools.service)。 该服务会每隔一段时间检查硬盘的 SMART 信息,并在发现问题时发送邮件通知管理员(在正确配置的情况下)。 默认 Debian 提供的
/etc/smartd.conf的有效内容如下:DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner/usr/share/smartmontools/smartd-runner会调用/etc/smartmontools/run.d/下的文件, 其中默认提供的10mail会使用系统的mail命令发送邮件。在配置中添加
-M test可以在启动时发送测试邮件紧急救援
对于 RAID 0 类型的配置(包括 RAID 10/01),
mdadm工具支持拼接多个(没有 mdadm superblock 的)块设备的内容组成 RAID,参考命令如下:sudo mdadm --build --assume-clean -c 128 --level=0 --raid-devices=8 --size=195364584 /dev/md0 /dev/mapper/disk1 /dev/mapper/disk2 /dev/mapper/disk3 /dev/mapper/disk4 /dev/mapper/disk5 /dev/mapper/disk6 /dev/mapper/disk7 /dev/mapper/disk8
Ubuntu24.04 安装PHP7.4
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-curl php7.4-zip php7.4-mbstring php7.4-gd