Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze | |||
mdadm [2020/05/12 02:44] simandl |
mdadm [2022/05/27 15:08] (aktuální) simandl |
||
---|---|---|---|
Řádek 2: | Řádek 2: | ||
=mdadm příkazy= | =mdadm příkazy= | ||
- | mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[[ab]]1 | + | mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[[ab]]1 |
+ | |||
+ | mdadm --manage /dev/md0 --fail /dev/sdb3 | ||
+ | |||
+ | mdadm --manage /dev/md0 --remove /dev/sdb3 | ||
- | mdadm --manage /dev/md0 --fail /dev/sdb3 | + | mdadm --manage /dev/md0 --add /dev/sdc3 |
- | + | ||
- | mdadm --manage /dev/md0 --remove /dev/sdb3 | + | echo 'DEVICE /dev/hd*[[0-9]] /dev/sd*[[0-9]]' > mdadm.conf |
- | + | ||
- | mdadm --manage /dev/md0 --add /dev/sdc3 | + | mdadm --detail --scan >> mdadm.conf |
- | + | ||
- | echo 'DEVICE /dev/hd*[[0-9]] /dev/sd*[[0-9]]' > mdadm.conf | + | mdadm --grow --bitmap=internal /dev/md0 |
- | + | ||
- | mdadm --detail --scan >> mdadm.conf | + | mdadm --grow --bitmap=none /dev/md0 |
- | + | ||
- | mdadm --grow --bitmap=internal /dev/md0 | + | mdadm --assemble /dev/md3 /dev/sdb3 /dev/sdc3 |
- | + | ||
- | mdadm --grow --bitmap=none /dev/md0 | + | umount /dev/md0 |
- | + | ||
- | mdadm --assemble /dev/md3 /dev/sdb3 /dev/sdc3 | + | mdadm --manage /dev/md0 --stop |
- | + | ||
- | umount /dev/md0 | + | mdadm --zero-superblock /dev/sdg1 |
- | + | ||
- | mdadm --manage /dev/md0 --stop | + | mdadm --create /dev/md0 --chunk=128 --level=raid6 --raid-devices=6 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 |
- | + | ||
- | mdadm --zero-superblock /dev/sdg1 | + | mdadm --run --readonly /dev/md0 |
- | + | ||
- | mdadm --create /dev/md0 --chunk=128 --level=raid6 --raid-devices=6 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 | + | mdadm --examine /dev/sda1 |
- | + | ||
- | mdadm --run --readonly /dev/md0 | + | mdadm -S /dev/md0 |
- | + | ||
- | mdadm --examine /dev/sda1 | + | mdadm --assemble /dev/md0 --force --uuid=a4bd7fc2:b4d40d24:e3edfc41:b9f1a521 |
- | + | ||
- | mdadm -S /dev/md0 | + | You can cancel an array resync in progress using the following sequence of commands (as root): |
- | + | ||
- | mdadm --assemble /dev/md0 --force --uuid=a4bd7fc2:b4d40d24:e3edfc41:b9f1a521 | + | |
- | + | ||
- | You can cancel an array resync in progress using the following sequence of commands (as root): | + | |
- | echo frozen > /sys/block/md0/md/sync_action | + | echo frozen > /sys/block/md0/md/sync_action |
- | echo none > /sys/block/md0/md/resync_start | + | echo none > /sys/block/md0/md/resync_start |
- | echo idle > /sys/block/md0/md/sync_action | + | echo idle > /sys/block/md0/md/sync_action |
=3T disk= | =3T disk= | ||
Řádek 75: | Řádek 75: | ||
You just need to have mdraid scrub the mirror. It'll notice the bad sector, and rewrite it automatically. | You just need to have mdraid scrub the mirror. It'll notice the bad sector, and rewrite it automatically. | ||
- | echo 'check' > /sys/block/mdX/md/sync_action # use 'repair' instead for older kernels | + | echo 'check' > /sys/block/mdX/md/sync_action # use 'repair' instead for older kernels |
- | #!/bin/bash | + | #!/bin/bash |
- | + | ||
- | save="$(tput sc)"; | + | save="$(tput sc)"; |
- | clear="$(tput rc)$(tput el)"; | + | clear="$(tput rc)$(tput el)"; |
- | for sync in /sys/block/md*/md/sync_action; do | + | for sync in /sys/block/md*/md/sync_action; do |
md="$(echo "$sync" | cut -d/ -f4)" | md="$(echo "$sync" | cut -d/ -f4)" | ||
cmpl="/sys/block/$md/md/sync_completed" | cmpl="/sys/block/$md/md/sync_completed" | ||
Řádek 104: | Řádek 104: | ||
exit 1 | exit 1 | ||
;; | ;; | ||
- | esac | + | esac |
- | echo -n "Repair $md...$save" >&2 | + | echo -n "Repair $md...$save" >&2 |
- | read current < "$sync" | + | read current < "$sync" |
- | while [[|"$current" != "idle" ]]; do | + | while [[|"$current" != "idle" ]]; do |
- | read stat < "$cmpl" | + | read stat < "$cmpl" |
- | echo -n "$clear $stat" >&2 | + | echo -n "$clear $stat" >&2 |
- | sleep 1 | + | sleep 1 |
- | read current < "$sync" | + | read current < "$sync" |
- | done | + | done |
- | echo "$clear done." >&2; | + | echo "$clear done." >&2; |
- | done | + | done |
- | + | ||
- | for dev in /dev/sd?; do | + | for dev in /dev/sd?; do |
- | echo "Starting offline data collection for $dev." | + | echo "Starting offline data collection for $dev." |
- | smartctl -t offline "$dev" | + | smartctl -t offline "$dev" |
- | done | + | done |
=Example= | =Example= | ||
- | [[root@simlin|~]]# cat /proc/mdstat | + | [[root@simlin|~]]# cat /proc/mdstat |
- | Personalities : [[raid1]] | + | Personalities : [[raid1]] |
- | md0 : active raid1 sdb1[[2]] sda1[[1]] | + | md0 : active raid1 sdb1[[2]] sda1[[1]] |
2930266412 blocks super 1.0 [[2/2]] [UU] | 2930266412 blocks super 1.0 [[2/2]] [UU] | ||
bitmap: 3/22 pages [[12KB]], 65536KB chunk | bitmap: 3/22 pages [[12KB]], 65536KB chunk | ||
- | + | | |
- | unused devices: <none> | + | unused devices: <none> |
- | [[root@simlin|~]]# cat /sys/block/md0/md/sync_action | + | [[root@simlin|~]]# cat /sys/block/md0/md/sync_action |
- | idle | + | idle |
- | [[root@simlin|~]]# echo 'check' > /sys/block/md0/md/sync_action | + | [[root@simlin|~]]# echo 'check' > /sys/block/md0/md/sync_action |
- | [[root@simlin|~]]# cat /sys/block/md0/md/sync_action | + | [[root@simlin|~]]# cat /sys/block/md0/md/sync_action |
- | check | + | check |
- | [[root@simlin|~]]# cat /proc/mdstat | + | [[root@simlin|~]]# cat /proc/mdstat |
- | Personalities : [[raid1]] | + | Personalities : [[raid1]] |
- | md0 : active raid1 sdb1[[2]] sda1[[1]] | + | md0 : active raid1 sdb1[[2]] sda1[[1]] |
2930266412 blocks super 1.0 [[2/2]] [UU] | 2930266412 blocks super 1.0 [[2/2]] [UU] | ||
[[>....................]] check = 0.0% (12672/2930266412) finish=42340.2min speed=1152K/sec | [[>....................]] check = 0.0% (12672/2930266412) finish=42340.2min speed=1152K/sec | ||
bitmap: 3/22 pages [[12KB]], 65536KB chunk | bitmap: 3/22 pages [[12KB]], 65536KB chunk | ||
- | unused devices: <none> | + | unused devices: <none> |