Skip to content
Snippets Groups Projects
Commit e1c51c31 authored by Administrator's avatar Administrator
Browse files

Preparations for using automount

parent b17feee7
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3 #!/usr/bin/env python3
# create: # create:
# xfs_freeze -f <parent mountpoint> # //xfs_freeze -f <parent mountpoint>
# lvcreate -s -n <snapshot name> -pr <parent volume> # lvcreate -s -n <snapshot name> -pr <parent volume>
# xfs_freeze -u <parent mountpoint> # //xfs_freeze -u <parent mountpoint>
# lvchange -ay -K <snapshot volume> # lvchange -ay -K <snapshot volume>
# mount <snapshot device> <snapshot mountpoint> -nouuid,ro # mount <snapshot device> <snapshot mountpoint> -nouuid,ro
...@@ -42,9 +42,9 @@ PERIOD_KEYS = OrderedDict([ ...@@ -42,9 +42,9 @@ PERIOD_KEYS = OrderedDict([
@contextmanager @contextmanager
def xfs_freeze(mountpoint): def xfs_freeze(mountpoint):
#freeze_xfs(mountpoint, True) freeze_xfs(mountpoint, True)
yield yield
#freeze_xfs(mountpoint, False) freeze_xfs(mountpoint, False)
def freeze_xfs(mountpoint, freeze): def freeze_xfs(mountpoint, freeze):
command = [ command = [
...@@ -88,6 +88,8 @@ class Volume: ...@@ -88,6 +88,8 @@ class Volume:
raise Exception("No parent device {} found!".format(mapper_device)) raise Exception("No parent device {} found!".format(mapper_device))
return filesystems[0]["target"] return filesystems[0]["target"]
def get_fstab(self, snapshots):
return "\n".join(snapshot.get_tab_entry() for snapshot in snapshots)
class Snapshot: class Snapshot:
def __init__(self, parent_volume, timestamp, active=False): def __init__(self, parent_volume, timestamp, active=False):
...@@ -128,9 +130,18 @@ class Snapshot: ...@@ -128,9 +130,18 @@ class Snapshot:
self.parent_volume.volume_group, self.parent_volume.volume_group,
self.get_name().replace("-", "--")) self.get_name().replace("-", "--"))
def get_mount_options(self):
return "-nfstype=xfs,ro,noatime,nouuid,norecovery"
def get_tab_entry(self):
return "{} {} :{}".format(
self.get_name(),
self.get_mount_options(),
self.get_mapper_device())
def create(self): def create(self):
parent_mountpoint = self.parent_volume.get_mountpoint() parent_mountpoint = self.parent_volume.get_mountpoint()
with xfs_freeze(parent_mountpoint): #with xfs_freeze(parent_mountpoint): # not necessary, lvm does this
create_command = [ create_command = [
"/sbin/lvcreate", "/sbin/lvcreate",
"--snapshot", "--snapshot",
...@@ -155,7 +166,7 @@ class Snapshot: ...@@ -155,7 +166,7 @@ class Snapshot:
"/bin/mount", "/bin/mount",
self.get_mapper_device(), self.get_mapper_device(),
self.get_mountpoint(), self.get_mountpoint(),
"-onouuid,ro,norecovery" # nouuid is necessary for xfs snapshots self.get_mount_options() # nouuid is necessary for xfs snapshots
] ]
sp.run(mount_command, check=True) sp.run(mount_command, check=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment