Sponsored Content
Full Discussion: Ubuntu snap deduplication
Operating Systems Linux Ubuntu Ubuntu snap deduplication Post 302975762 by programAngel on Saturday 18th of June 2016 09:15:27 AM
Old 06-18-2016
Ubuntu Ubuntu snap deduplication

Hi,
I think the ubuntu snap is great idea.
However the fact that it may contain duplications has two disadvantages.
1) eating more space in the storage.
2) eating more space in the internal memory (RAM), it will load the same library more than once to the memory.

Now the solution for this is simple.
We can have one directory that is called the repository, and it will contain all the libraries and binaries of all the snap packages.
The name of the file in this repositories will be the sha-256 of their content, so only if the two files are identical, they will override each other, but in this case it won't matter because they are the same.
The snap package itself will contain hard link to the libraries and binaries that it is using from the repositories.
So if two different snap package will use exactly the same version of Java/python (etc etc..), it will be stored only once, and will be load only once.
We can also count the number of hard link for every file in central repositories, and if it only one, then it mean that no snap repositories is any more using this binaries, and it can be deleted.

This way all snap package are isolated, but we have no duplication.

Now I say nothing new here, other said it already, I am just repeating what they have said.

What I don't understand is they are not implementing it ?
I mean it sound like an easy problem to solve.

What is holding back the snap developer from doing it?

Are there any obstacle that I am not aware of ?

can any of the snap developers tell me what prevent them from implementing this?

I mean it sound not very easy , but maybe I am not aware of issues.

So I hope someone can explain to me why this is not implemented?
 

6 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

dump .snap question

When using dump, a .snap directory is created in the partition being dumped. I have searched for the reason this directory is created but haven't found any information on its purpose. I have monitored the .snap directory during a dump and I have never seen any files appear in during the dump so... (3 Replies)
Discussion started by: thumper
3 Replies

2. AIX

script which take a snap shot of Topas

can any one give me a script which take a snap shot of Topas at a fix interval of 15min and save it in a perticular file!!!!!!!! (6 Replies)
Discussion started by: abhishek27
6 Replies

3. UNIX for Dummies Questions & Answers

snap file for other system?

Hi all For AIX we can snap -gc gather the info how abt other systems is solaris and linux? thanks in advance jiajin (0 Replies)
Discussion started by: lijiajin
0 Replies

4. Red Hat

SNAP EDR issue.

Hi, Does anybody use Enterprise Data Replicator for Network Attached Storage replication. If you do, Do you get the following message in replication logs. "Replication Source file agent No heart beats from the remote target agent on snap01 for 300 seconds: Assuming connection failure" ... (1 Reply)
Discussion started by: uxadmin007
1 Replies

5. AIX

Unable to execute snap command

Hi Friends, I am not able to execute snap -a command in AIX 6 system. Could you please let me know how to make work this command and Path to be set. Thanks in Advance Siva. (4 Replies)
Discussion started by: sivakumarl
4 Replies

6. AIX

How to get data from SNAP file?

Hi Everyone, Does anyone know if can access /etc/environment from SNAP file to check the time zone from the snap file Objective: The timezone on the server was changed by someone to another timezone, so I want to check what is the old timezone was ? I have an old SNAP file. Does... (4 Replies)
Discussion started by: filosophizer
4 Replies
scf_snapshot_create(3SCF)												 scf_snapshot_create(3SCF)

NAME
scf_snapshot_create, scf_snapshot_handle, scf_snapshot_destroy, scf_snapshot_get_parent, scf_snapshot_get_name, scf_snapshot_update, scf_instance_get_snapshot - create and manipulate snapshot handles and snapshots in the Service Configuration Facility SYNOPSIS
cc [ flag... ] file... -lscf [ library... ] #include <libscf.h> scf_snapshot_t *scf_snapshot_create(scf_handle_t *handle); scf_handle_t *scf_snapshot_handle(scf_snapshot_t *snap); void scf_snapshot_destroy(scf_snapshot_t *snap); int scf_snapshot_get_parent(const scf_snapshot_t *snap, scf_instance_t *inst); ssize_t scf_snapshot_get_name(const scf_snapshot_t *snap, char *buf, size_t size); int scf_snapshot_update(scf_snapshot_t *snap); int scf_instance_get_snapshot(const scf_instance_t *inst, const char *name, scf_snapshot_t *snap); A snapshot is an unchanging picture of the full set of property groups associated with an instance. Snapshots are automatically created and managed by the Solaris Management Facility. See smf(5). A snapshot consists of a set of snaplevels, each of which holds copies of the property groups associated with an instance or service in the resolution path of the base instance. Typically, there is one snaplevel for the instance and one for the instance's parent service. The scf_snapshot_create() function allocates and initializes a new scf_snapshot_t bound to handle. The scf_snapshot_destroy() function destroys and frees snap. The scf_snapshot_handle() function retrieves the handle to which snap is bound. The scf_snapshot_get_parent() function sets inst to the parent of the snapshot to which snap is set. The scf_snapshot_get_name() function retrieves the name of the snapshot to which snap is set. The scf_snapshot_update() function reattaches snap to the latest version of the snapshot to which snap is set. The scf_instance_get_snapshot() function sets snap to the snapshot specified by name in the instance specified by inst. To walk all of the snapshots, see scf_iter_instance_snapshots(3SCF). To access the snaplevels of a snapshot, see scf_snapshot_get_base_snaplevel(3SCF). Upon successful completion, scf_snapshot_create() returns a new scf_snapshot_t. Otherwise, it returns NULL. Upon successful completion, scf_snapshot_handle() returns the handle to which snap is bound. Otherwise, it returns NULL. Upon successful completion, scf_snapshot_get_name() returns the length of the string written, not including the terminating null byte. Oth- erwise, it returns NULL. The scf_snapshot_update() function returns 1 if the snapshot was updated, 0 if the snapshot had not been updated, and -1 on failure. Upon successful completion, scf_snapshot_get_parent() and scf_instance_get_snapshot() return 0. Otherwise, they return -1. The scf_snapshot_create() function will fail if: SCF_ERROR_INVALID_ARGUMENT The handle argument is NULL. SCF_ERROR_NO_MEMORY There is not enough memory to allocate an scf_snapshot_t. SCF_ERROR_NO_RESOURCES The server does not have adequate resources for a new instance handle. The scf_snapshot_handle() function will fail if: SCF_ERROR_HANDLE_DESTROYED The handle associated with snap has been destroyed. The scf_snapshot_get_name() and scf_snapshot_get_parent() functions will fail if: SCF_ERROR_DELETED The snapshot has been deleted. SCF_ERROR_NOT_SET The snapshot is not set. SCF_ERROR_NOT_BOUND The handle is not bound. SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost. The scf_snapshot_update() function will fail if: SCF_ERROR_DELETED An ancestor of the snapshot specified by snap has been deleted. SCF_ERROR_NOT_SET The snapshot specified by snap is not set. SCF_ERROR_NOT_BOUND The handle is not bound. SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost. SCF_ERROR_INVALID_ARGUMENT The snap argument refers to an invalid scf_snapshot_t. The scf_instance_get_snapshot() function will fail if: SCF_ERROR_DELETED The instance has been deleted. SCF_ERROR_NOT_SET The instance is not set. SCF_ERROR_NOT_FOUND The snapshot specified by name was not found. SCF_ERROR_INVALID_ARGUMENT The value of the name argument is not a valid snapshot name. SCF_ERROR_HANDLE_MISMATCH The instance and snapshot are not derived from the same handle. SCF_ERROR_NOT_BOUND The handle is not bound. SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost. The scf_error(3SCF) function can be used to retrieve the error value. See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |Safe | +-----------------------------+-----------------------------+ libscf(3LIB), scf_error(3SCF), scf_iter_instance_snapshots(3SCF), scf_snapshot_get_base_snaplevel(3SCF), attributes(5), smf(5) 28 Sep 2005 scf_snapshot_create(3SCF)
All times are GMT -4. The time now is 11:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy