Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dadigang
Ventoy
Commits
8cecdae8
Commit
8cecdae8
authored
Sep 24, 2021
by
longpanda
Browse files
Support shrink persistence dat file for ext4 filesystem.
parent
471432fc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
8 deletions
+38
-8
INSTALL/ExtendPersistentImg.sh
INSTALL/ExtendPersistentImg.sh
+38
-8
No files found.
INSTALL/ExtendPersistentImg.sh
View file @
8cecdae8
...
@@ -27,6 +27,13 @@ if [ ! -f "$file" ]; then
...
@@ -27,6 +27,13 @@ if [ ! -f "$file" ]; then
exit
1
exit
1
fi
fi
if
echo
$size
|
grep
-q
"^-"
;
then
mode
=
"Shrink"
size
=
${
size
:1
}
else
mode
=
"Extend"
fi
if
echo
$size
|
grep
-q
"[^0-9]"
;
then
if
echo
$size
|
grep
-q
"[^0-9]"
;
then
print_usage
print_usage
exit
1
exit
1
...
@@ -42,10 +49,25 @@ fi
...
@@ -42,10 +49,25 @@ fi
fsMB
=
$(
expr
$fsize
/ 1024 / 1024
)
fsMB
=
$(
expr
$fsize
/ 1024 / 1024
)
total
=
$(
expr
$fsMB
+
$size
)
if
[
"
$mode
"
=
"Extend"
]
;
then
total
=
$(
expr
$fsMB
+
$size
)
else
if
[
$fsMB
-le
$size
]
;
then
echo
"File size of
$file
is less than
${
size
}
MB."
exit
1
fi
total
=
$(
expr
$fsMB
-
$size
)
fi
magic
=
$(
hexdump
-n3
-e
'3/1 "%02X"'
$file
)
magic
=
$(
hexdump
-n3
-e
'3/1 "%02X"'
$file
)
if
[
"
$magic
"
=
"584653"
]
;
then
if
[
"
$magic
"
=
"584653"
]
;
then
if
[
"
$mode
"
=
"Shrink"
]
;
then
echo
"Shrink is not supported for XFS filesystem."
exit
1
fi
if
which xfs_growfs
>
/dev/null 2>&1
;
then
if
which xfs_growfs
>
/dev/null 2>&1
;
then
cmd
=
xfs_growfs
cmd
=
xfs_growfs
else
else
...
@@ -61,23 +83,26 @@ else
...
@@ -61,23 +83,26 @@ else
fi
fi
fi
fi
if
[
"
$mode
"
=
"Extend"
]
;
then
echo
"
$mode
dat file... (current is
${
fsMB
}
MB, append
${
size
}
MB, total
${
total
}
MB)"
dd
if
=
/dev/zero
bs
=
1M
count
=
$size
status
=
none
>>
"
$file
"
sync
else
echo
"
$mode
dat file... (current is
${
fsMB
}
MB, reduce
${
size
}
MB, finally
${
total
}
MB)"
fi
echo
"Extend dat file... (current is
${
fsMB
}
MB, append
${
size
}
MB, total
${
total
}
MB)"
dd
if
=
/dev/zero
bs
=
1M
count
=
$size
status
=
none
>>
"
$file
"
sync
freeloop
=
$(
losetup
-f
)
freeloop
=
$(
losetup
-f
)
losetup
$freeloop
"
$file
"
losetup
$freeloop
"
$file
"
if
[
"
$cmd
"
=
"resize2fs"
]
;
then
if
[
"
$cmd
"
=
"resize2fs"
]
;
then
echo
"
Extend
ext filesystem by resize2fs ..."
echo
"
$mode
ext filesystem by resize2fs ..."
echo
"resize2fs
$freeloop
${
total
}
M"
echo
"resize2fs
$freeloop
${
total
}
M"
e2fsck
-f
$freeloop
e2fsck
-f
$freeloop
resize2fs
$freeloop
${
total
}
M
resize2fs
$freeloop
${
total
}
M
ret
=
$?
ret
=
$?
else
else
echo
"Extend xfs filesystem by xfs_growfs ..."
echo
"
$mode
xfs filesystem by xfs_growfs ..."
tmpdir
=
$(
mktemp
-d
)
tmpdir
=
$(
mktemp
-d
)
mount
$freeloop
$tmpdir
mount
$freeloop
$tmpdir
xfs_growfs
$freeloop
xfs_growfs
$freeloop
...
@@ -87,6 +112,12 @@ fi
...
@@ -87,6 +112,12 @@ fi
losetup
-d
$freeloop
losetup
-d
$freeloop
if
[
$ret
-eq
0
-a
"
$mode
"
=
"Shrink"
]
;
then
echo
"truncate persistent file ..."
truncate
"
$file
"
-s
${
total
}
M
ret
=
$?
fi
echo
""
echo
""
if
[
$ret
-eq
0
]
;
then
if
[
$ret
-eq
0
]
;
then
echo
"======= SUCCESS ========="
echo
"======= SUCCESS ========="
...
@@ -94,4 +125,3 @@ else
...
@@ -94,4 +125,3 @@ else
echo
"======= FAILED ========="
echo
"======= FAILED ========="
fi
fi
echo
""
echo
""
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment